POJ 1011 / UVA 307 Sticks
来源:互联网 发布:小米手机只能用2g网络 编辑:程序博客网 时间:2024/05/16 11:10
中文题 (一般都比较坑)
思路:DFS
(感谢学长的幻灯片)
这破题把我折腾惨了!!!搞了n天
// by Sirius_Ren#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int n,a[100],sum,jy,maxx,q;bool vis[100];bool cmp(int a,int b){return a>b;}bool dfs(int x,int l,int pos){ if(x==q)return 1; for(int i=pos+1;i<=n;i++){ if(vis[i]||(!vis[i-1]&&a[i]==a[i-1]&&i>1))continue; if(l==a[i]){ vis[i]=1; if(dfs(x+1,jy,0))return 1; vis[i]=0;return 0; } if(l>a[i]){ vis[i]=1; if(dfs(x,l-a[i],i))return 1; vis[i]=0; if(l==jy)return 0; } } return 0;} int main(){ while(scanf("%d",&n)&&n){ maxx=sum=0; memset(a,0,sizeof(a)); for(int i=1;i<=n;i++)scanf("%d",&a[i]),sum+=a[i],maxx=max(maxx,a[i]); sort(a+1,a+1+n,cmp); for(jy=maxx;jy<=sum;jy++){ if(sum%jy)continue; q=sum/jy; memset(vis,0,sizeof(vis)); if(dfs(0,jy,0)){printf("%d\n",jy);break;} } }}
惨痛的失败经历。。。
TLE了一屏半
WA了半屏
在mars_ch&玉环的帮助下终于A了此题。。。
去UVA上交了一遍 1A
还挺快 嘿嘿
和mars_ch争论了很久是if(dfs(x,l-a[i],i))return 1;还是if(dfs(x,l-a[i],pos+1))return 1;
在POJ上都是16msAC的 她表示没有什么区别
但
是
UVA 证明了一切
她的程序got TLE 哈哈哈哈 (青出于蓝而胜于蓝)
1 0
- UVA 307 POJ 1011 Sticks
- POJ 1011 / UVA 307 Sticks
- HDU 1455 POJ 1011 UVA 307 Sticks
- uva 307 Sticks
- uva 307 Sticks
- UVa:307 Sticks
- UVA 307 - Sticks
- UVA 307 Sticks
- uva 307 Sticks
- UVA 307 Sticks
- uva 307 Sticks
- uva 307 Sticks
- UVA 307 Sticks
- UVA 307(p218)----Sticks
- UVa 307 - Sticks
- uva-307 sticks
- poj 1011-sticks
- POJ 1011 Sticks
- 数组变树
- 基于calcite为CSV文件包装SQL接口
- Apache顶级项目介绍2-Kafka
- C动态字符串,动态开辟内存空间相关 malloc realloc 用法
- Cell选中问题 以及 URL中文编码
- POJ 1011 / UVA 307 Sticks
- css样式命名导致样式“变异”的问题
- grass buffer2 算法
- 安装wampwerver时图标一直是橙色怎么解决
- android中事件分发机制
- yii2-gii的详细操作步骤
- Window和WindowManager的分析
- MFC学生选课系统
- 分治算法