首页 > 代码库 > CUGBACM_Summer_Tranning1
CUGBACM_Summer_Tranning1
总体感觉:这个组队赛收获还挺多的,自从期末考试以后已经有一个多月没有 做过组队赛了吧,但是这暑假第一次组队赛就找回了以前的感觉。还挺不错的!继续努力!!
改进的地方:这次组队赛开始的时候题目比较难读懂,然后就感觉题目应该比较难吧,觉得应该是区域赛难度的题目。虽然A题和B题自己都感觉能自己A的,但是可能对自己不太自信,所以让队友大帝敲了。要是当时自己敢敲一下的话,兴许会更快的A掉吧。
A题:二进制枚举
其实这题当时听宝一提醒,就知道可以用二进制枚举来做了,不过大帝也是二进制枚举,然后队友敲了好多代码才A。我当时感觉用二进制枚举代码就十几行啊,在大帝怎么会写那么多代码呢,然后还以为自己的想法错了呢。刚才分析了下,因为n<20,所以复杂度也就10^6再乘以一个for循环二进制模拟数,最多也就10^7。3秒肯定过了,然后几分钟敲了下,耗时1009ms AC,要是题目是1ms的话,可以机智一点AC。
#include<iostream> #include<cstdio> using namespace std; int main() { int n,k,s; while(scanf("%d%d%d",&n,&k,&s)&&(n||k||s)) { int sum1=0,i,j; for(i=2;i<(1<<(n+1));i++) { if(i&1) continue; int sum=0,ans=0; for(j=1;j<=n;j++) if(i&(1<<j)) sum+=j,ans++; if(sum==s&&ans==k) sum1++; } printf("%d\n",sum1); } return 0; }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。