2013武科大蓝桥杯校内选拔赛 H题 火柴棒
2013-11-17 07:59
295 查看
交了三次,第一次没有预处理 TLE。。。
第二次预处理的数组开小了,WA。。。
第三次把预处理数组从2010改到5010,终于AC。。。
通过这题,感受到 预处理 的强大优化作用。。。
然后这种题,如果是没有规律可循的,一般就是通过特点找上限,再二分查找或者模拟。
以前CF有一道感觉和这个蛮像的。。
官方题解~
第8题:火柴棒
本题为思维题。
显然权值最大且拥有火柴棒最少的放1最合适,而最多的火柴棒去掉加号和等号后最多只有20根。分析知最大的加数为1111,和数肯定>=1111这样就占了16根,
另外一个加数肯定要占>=4根的火柴。所以只用暴力枚举两个0~1111内的加数,得出和数。预处理每个数的火柴棒数,看是否与给定的火柴棒数相等相等。
总的时间复杂度:o(1000^2)。
第二次预处理的数组开小了,WA。。。
第三次把预处理数组从2010改到5010,终于AC。。。
通过这题,感受到 预处理 的强大优化作用。。。
然后这种题,如果是没有规律可循的,一般就是通过特点找上限,再二分查找或者模拟。
以前CF有一道感觉和这个蛮像的。。
官方题解~
第8题:火柴棒
本题为思维题。
显然权值最大且拥有火柴棒最少的放1最合适,而最多的火柴棒去掉加号和等号后最多只有20根。分析知最大的加数为1111,和数肯定>=1111这样就占了16根,
另外一个加数肯定要占>=4根的火柴。所以只用暴力枚举两个0~1111内的加数,得出和数。预处理每个数的火柴棒数,看是否与给定的火柴棒数相等相等。
总的时间复杂度:o(1000^2)。
#include<cstdio> #include<iostream> #include<cstring> using namespace std; int h[12]={6,2,5,5,4,5,6,3,7,6}; int dp[5010]; int cal(int x) { int ans=0; if(x==0) return 6; while(x) { ans+=h[x%10]; x=x/10; } return ans; } void init() { for(int i=0;i<=5000;i++) dp[i]=cal(i); } int main() { int n; init(); while(scanf("%d",&n)!=EOF) { int cnt=0,s=0; for(int i=0;i<=1111;i++) { int sum=0; for(int j=0;j<=1111;j++) { sum=dp[i]+dp[j]+dp[i+j]; if(sum==n-4) { //cout<<i<<' '<<j<<' '<<i+j<<' '<<sum<<endl; cnt++; //if(i==j) // s++; } sum=0; } } printf("%d\n",cnt-s); } //cout<<dp[111]<<' '<<dp[1222]<<' '<<dp[1111]<<endl; /*for(int i=0;i<30;i++) { printf("%d ",cal(i)); if((i+1)%10==0) printf("\n"); }*/ return 0; }
相关文章推荐
- 2013武科大蓝桥杯校内选拔赛 I题 划分数
- 2013武科大蓝桥杯校内选拔赛 G题 展开字符串(模拟)
- 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)
- 2013 蓝桥杯校内选拔赛 java本科B组(题目+答案)
- 2013年武科大蓝桥杯校内选拔赛 F gcd和lcm
- 第五届蓝桥杯校内选拔赛——3
- 第六届蓝桥杯校内选拔赛C/C++高职组解题(3)
- 蓝桥杯第五届校内选拔赛2 3【浮点数操作】
- 2013年11月24日 蓝桥杯校内选拔赛c\c++B组——答案+试题
- 第六届蓝桥杯校内选拔赛C/C++高职组解题(4)
- 第九届“蓝桥杯”校内选拔赛试题
- 第六届蓝桥杯校内选拔赛C/C++高职组解题(5)
- 第五届蓝桥杯校内选拔赛——4
- 第九届“蓝桥杯”校内选拔赛试题
- 二分法开方——蓝桥杯第六届校内选拔赛第3题
- 递归找数——蓝桥杯第六届校内选拔赛第4题
- 第六届蓝桥杯校内选拔赛C/C++高职组解题(6)
- XMUT第七届蓝桥杯全国软件和信息技术专业人才大赛校内选拔赛模拟赛
- 第五届蓝桥杯(校内选拔赛)
- 第六届蓝桥杯校内选拔赛C/C++高职组解题(7)