Codeforces #191(Div.2)解题报告
2013-07-09 19:54
190 查看
http://codeforces.com/contest/327
第一次正儿八经写cpp程序啊,没想到写着写着还得查书,看看哪个地方有没有分号啥的,写三目表达式把问号和冒号写反了也查了很长时间。唉,本来以为随便看看书就能转来着。结果第一次写就在比赛写,结果就是我只出了A题,耻辱啊。还有就是半年不碰OI,感觉实现能力还可以,但是调试就完全不行了啊。还有就是一些思路都跟不上了。
A. Flipping Game
一开始看错题了,以为是要求连续,乱搞扫描弄弄,后来发现理解错题了,干脆写了个O(N^3)暴力。也可以转化为最大连续子序列和DP之。
B. Hungry Sequence
我输出了质数表,没想到有更简单的做法。就是输出一些比较大的递增的数,考虑选择一些适当的第一个数a,使得2*a都比a+n大。也有其他类似的方法。
留个线性筛模版吧。
第一次正儿八经写cpp程序啊,没想到写着写着还得查书,看看哪个地方有没有分号啥的,写三目表达式把问号和冒号写反了也查了很长时间。唉,本来以为随便看看书就能转来着。结果第一次写就在比赛写,结果就是我只出了A题,耻辱啊。还有就是半年不碰OI,感觉实现能力还可以,但是调试就完全不行了啊。还有就是一些思路都跟不上了。
A. Flipping Game
一开始看错题了,以为是要求连续,乱搞扫描弄弄,后来发现理解错题了,干脆写了个O(N^3)暴力。也可以转化为最大连续子序列和DP之。
B. Hungry Sequence
我输出了质数表,没想到有更简单的做法。就是输出一些比较大的递增的数,考虑选择一些适当的第一个数a,使得2*a都比a+n大。也有其他类似的方法。
留个线性筛模版吧。
#include <iostream> #include <cstring> #include <cstdio> #define lowbit(x) ((x)&(-(x))) #define ll long int using namespace std; const ll MO=1000000007; const int MAXN=24; int calc(int x) {int i;for(i=0;x>0;i++)x>>=1;return i-1;} int main() { ll sum[1<<MAXN]={0},f[1<<MAXN]={0}; int n,a[24],k,d[2]; cin>>n;for(int i=0;i<n;i++)cin>>a[i]; cin>>k;for(int i=0;i<k;i++)cin>>d[i]; for(int i=0;i<n;i++)f[1<<i]=1; for(int i=1;i<(1<<n);i++){ sum[i]=sum[i^lowbit(i)]+a[calc(lowbit(i))]; for(int j=0;j<k;j++)if(sum[i]==d[j])f[i]=-1; if(f[i]<0){f[i]=0;continue;} for(int j=0;j<n;j++) f[i]=(f[i]+((i&(1<<j))?f[i^(1<<j)]:0))%MO; } cout<<f[(1<<n)-1]<<endl; return 0; }
相关文章推荐
- 【解题报告】BestCoder Round #77 (div.2)
- CF#398(Div.2) 解题报告
- BestCoder Round #77 (div.2)解题报告
- CF#401(Div.2) 解题报告
- Codeforces #200 (Div.2) E. Read Time 解题报告
- Codeforces Round #283(Div.2) A,B,C,D,E 解题报告
- CF#410(Div.2) 解题报告
- CF#386(Div.2) 解题报告
- CF Round 415 Div.2解题报告
- Codeforces Round #285(Div.2) A,B,C 解题报告
- codeforces #198 div.2 解题报告
- 解题报告:codeforces #339(Div.2)B.Gena's Code
- CF#403(Div.2) 解题报告
- CF#384 (Div.2) 解题报告
- BUAA-SCSE 暑期算法提高班 Final Contest 解题报告
- poj1326解题报告
- POJ3632解题报告
- 1075: 【明明的随机数】解题报告
- 【LeetCode】646.Maximum Length of Pair Chain(Medium)解题报告
- Goldbach's Conjecture 解题报告