UVA 10032(Tug of War)
来源:互联网 发布:易辅客栈模块源码 编辑:程序博客网 时间:2024/05/12 16:15
这个开始的时候就用01背包3维数组,不知超时了多少次了,及其的伤感。后来用vector容器来做就可以防止超时发生了。
简单总结一下vector用法,因为在动规里面经常要用到的。
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。
vector里面的数据是动态分配的,使用push_back()的一系列分配空间常常决定于文件或一些数据源。如果想知道vector存放了多少数据,可以使用empty()。获取vector的大小, 可以使用size()。例如,如果想获取一个vector v的大小,但不知道它是否为空,或者已经包含了数据,如果为空想设置为-1,你可以使用下面的代码实现:
int nSize = v.empty() ? -1 : static_cast<int>(v.size());
删除vector中的数据 :vector能够非常容易地添加数据,也能很方便地取出数据,同样vector提供了erase(),pop_back(),clear()来删除数据,当删除数据时,应该知道要删除尾部的数据,或者是删除所有数据,还是个别的数据
AC代码:
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<vector>using namespace std;int q[58][25000],w[108];vector<int >dp[58];int main(){int t,n,i,j,z;int ant1,ant2,sum;int count,count2=0;scanf("%d",&t);while(t--){sum=0;if(count2 != 0) printf("\n");count2=1;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d",&w[i]);sum+=w[i];}dp[0].push_back(0); //这个复初值是必要的。memset(q,0,sizeof(q));ant1=sum/2;ant2=(n+1)/2;for(i=1;i<=n;i++){for(j=min(i,ant2)-1;j>=0;j--){for(z=dp[j].size()-1; z>=0 ; z--){ //节约时间的核心。if(q[j+1][dp[j][z]+w[i]] == 0 && dp[j][z]+w[i] <= ant1){ //q数组防止重新修改,保存容器里面的数据,以免被覆盖。q[j+1][dp[j][z]+w[i]]=1;dp[j+1].push_back(dp[j][z]+w[i]);}}}}count=0;for(i=0;i<dp[ant2].size();i++){count=max(dp[ant2][i],count);}for(i=1;i<=ant2;i++) dp[i].clear();printf("%d %d\n",count,sum-count);}return 0;}
路途中。。。
- UVA 10032(Tug of War)
- UVA 10032 Tug of War
- UVa 10032 - Tug of War
- UVa Problem 10032 Tug of War (拔河)
- UVA - 10032 Tug of War (二进制标记+01背包)
- (挑战编程_8_5)Tug of War
- Tug of War
- Tug of War
- poj2576 tug of war
- Tug of War
- ZCMU-Tug of War
- ZOJ 1880 Tug of War
- ZOJ - 1880 Tug of War
- zoj 1880 - Tug of War
- POJ 2576 Tug of War
- POJ 2576 Tug of War
- lightoj 1147 - Tug of War
- Light oj 1147 - Tug of War(状压dp)
- typedef 复杂的变量声明
- ios汇编教程1
- route
- source insight 打不开
- android 图片质量,大小压缩
- UVA 10032(Tug of War)
- Android weibo Oauth认证
- 几个初学者入门网站
- centos linux 安装到移动硬盘
- android导入第三方包所遇到的NoClassDefFoundError错误
- C语言中定义与声明的本质区别:有无内存分配
- javaweb文件上传原理
- java寻找丑数
- asp.net 分页控件AspNetPager的使用