NY 325 zb的生日
假设所有西瓜重 Asum,所求的是用 Asum / 2 的背包装,最多装下多少。
刚开始用贪心作的,WA。后来用01背包,结果TLE,数据太大。原来用的是深搜!
dfs(int sum, int i) 表示当前装已了 sum,对第 i 个进行决策。
用时1200多MS,不知道大牛们60MS是怎么搞的,泥煤,20倍!以后再优化吧。
代码如下:
#include<iostream>
#include<cstdio>
#include<math.h>
#include<algorithm>
using namespace std;
int a[], Asum, mi;
void dfs(int sum, int i)
{
if(i < ) //西瓜已经试装完,返回
return;
int t = fabs(Asum - * sum); //两兄弟所分西瓜重量之差
if(t < mi)
mi = t;
if( * sum - Asum >= mi) //剪枝,重量之差已大于或等于已求最小值,往后再搜还是大于或等于
return;
dfs(sum + a[i], i - ); //装第 i 个
dfs(sum, i - ); //不装第 i 个
}
int main()
{
int n;
while(scanf("%d", &n) != EOF)
{
Asum = ;
mi = ;
for(int i = ; i < n; i ++)
{
scanf("%d", &a[i]);
Asum += a[i];
}
dfs(, n - ); //从什么都不装,对最后一个西瓜决策开始
cout <<mi <<endl;
}
return ;
}
NY 325 zb的生日的更多相关文章
- nyoj 325 zb的生日
01背包 zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄 ...
- nyoj 325 zb的生日(dfs)
描述今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么庆祝生日,经过调查,zb发现C小加和never都很喜欢吃西瓜,而且一吃就是一堆的那种,zb ...
- nyoj 325——zb的生日——————【dp】
zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...
- NYOJ之题目325 zb的生日
-------------------------------------- 刷一辈子水题... AC代码: import java.util.Scanner; public class Main { ...
- zb的生日
http://acm.nyist.net/JudgeOnline/problem.php?pid=325 zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 ...
- ACM zb的生日
zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...
- nyoj325 zb的生日(DFS)
zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...
- zb的生日(暴搜dfs)
zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...
- nyoj 0325 zb的生日(dp)
nyoj 0325 zb的生日 zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集 ...
随机推荐
- 如何将红色区域数据调用解密函数直接打印到输出控制台(例如:crt控制台)
int main(int argc, char *argv[]) { unsigned char data[PACKET_MAX_LEN]; int data_len = 0; int socket_ ...
- HDU 1251统计难题
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- 第二章 centos安装maven
一.官网下载 apache-maven-3.3.9-bin.tar.gz 注意:需要jdk1.7及以上 二.上传 scp apache-maven-3.3.9-bin.tar.gz root@10.2 ...
- NSDate和NSString相互转换
一.NSDate转NSString //获取系统当前时间 NSDate *currentDate = [NSDate date]; //用于格式化NSDate对象 NSDateFormatter *d ...
- Arcengine,C#获得FeatureClass的坐标系ISpatialReference以及所在数据集名称
1: /// <summary> 2: /// 获得坐标系统 3: /// </summary> 4: /// <param name="pFeatureCla ...
- 我总结的git命令指南。
git命令行指南 1.windows上安装git的网址:http://msysgit.github.com/. 没有安装过git的 这个网址里下mymsgit. 因为发现有些同学对git还不是那么熟悉 ...
- 关于unity3D的学习感想
在老师布置团队项目后组长确定项目是做游戏是,我才接触的Unity3D游戏引擎. 因为一开始我没有接触过这类软件,更没有用过.所以作为一个新手,做好的办 法实在网上找教程.网上说Unity3D是由Uni ...
- 隐藏weibview里面的部分h5
private void initWebView(String url) { twoCode.loadUrl(url); WebSettings settings = twoCode.getSetti ...
- Html命名锚
这个有什么用 案例 参考资料 这个有什么用 嘛, 不管写博客,还是公司的wiki,一般开头都会有个目录什么的, 这时候命名描就有用了, 所谓的描就是书签. 案例 比如这篇博客的目录,首先建立一个无序列 ...
- mysql galera cluster 集群的分裂与仲裁机制
集群的分裂 当集群由于网络原因分裂为几个单独的组时(一组可能是单节点,也可能是几个互联的节点),数据出现不一致,此时可能产生脑裂及数据不一致.这种情况 下,只有一组节点能够继续提供服务,这组节点的状态 ...