Codeforces Round #178 (Div. 2) C. Shaass and Lights
2013-04-09 21:06
411 查看
最近跪了两场CF,rating直接回到解放前了,这场DIV2,第二题DP,我一直没贪过去,第三题,也看了,没啥想法。。。
很神的组合题。
先是亮的灯泡把暗的灯泡分成很多段,特殊考虑第一段和最后一段(如果存在)。然后中间每一段的组合方式是2^(a[i]-1)。
然后就是把n个有顺序的数,插入m个有顺序的数字(fun函数)。注意精度神马的,各种细节。。
很神的组合题。
先是亮的灯泡把暗的灯泡分成很多段,特殊考虑第一段和最后一段(如果存在)。然后中间每一段的组合方式是2^(a[i]-1)。
然后就是把n个有顺序的数,插入m个有顺序的数字(fun函数)。注意精度神马的,各种细节。。
#include <cstdio> #include <string> using namespace std; #define MOD 1000000007 #define LL __int64 int Min(int a,int b) { return a < b ? a:b; } LL bin[1001],c[1001][1001]; int flag[1001],a[1001]; LL fun(int n,int m) { int i,minz; LL ans = 0; if(n == 0||m == 0) return 1; minz = Min(m+1,n); for(i = 1;i <= minz;i ++) { ans = (ans + c[m+1][i]*c[n-1][i-1])%MOD; } return ans; } int main() { int i,j,n,m,temp,sum,num; LL ans; for(i = 0;i <= 1000;i ++) { c[i][0] = 1; } for(i = 1;i <= 1000;i ++) { for(j = 1;j <= 1000;j ++) c[i][j] = (LL)(c[i-1][j-1] + c[i-1][j])%MOD; } bin[0] = 1; for(i = 1;i <= 1000;i ++) bin[i] = (2*bin[i-1])%MOD; scanf("%d%d",&n,&m); for(i = 1;i <= m;i ++) { scanf("%d",&num); flag[num] = 1; } if(n == m) { printf("1\n"); return 0; } num = 1; temp = 0; for(i = 1;i <= n;i ++) { if(flag[i] == 1) { a[num++] = temp; temp = 0; } else temp ++; } ans = fun(temp,a[1]); sum = temp + a[1]; for(i = 2;i < num;i ++) { if(a[i] != 0) ans = (((ans*fun(sum,a[i]))%MOD)*bin[a[i]-1])%MOD; sum += a[i]; } printf("%I64d\n",ans); return 0; }
相关文章推荐
- Codeforces Round #178 (Div. 2) C. Shaass and Lights 【组合数学】
- 排列组合 Shaass and Lights:CodeForces - 294C
- Codeforces Round #240 (Div. 2) A. Mashmokh and Lights
- CodeForces 294C - Shaass and Lights 统计
- Codeforces Round #178 (Div. 2) B. Shaass and Bookshelf 【动态规划】0-1背包
- C. Shaass and Lights
- Codeforces Round #178 (Div. 2) B .Shaass and Bookshelf
- Codeforces Round #178 (Div. 2) B Shaass and Bookshelf
- 【Cf #178 A】Shaass and Lights(组合数)
- Codeforces Round #178 (Div. 2) B .Shaass and Bookshelf
- Codeforces Round #240 (Div. 2)->A. Mashmokh and Lights
- Codeforces Round #178 (Div. 2)---A. Shaass and Oskols
- CF #356 div1 A. Bear and Prime 100
- Codeforces Round #356 (Div. 1) C. Bear and Square Grid
- Codeforces Round #447 (Div. 2) B. Ralph And His Magic Field(数学???)
- Codeforces Round #272 (Div. 2) B. Dreamoon and WiFi dp
- Codeforces Round #321 (Div. 2) 580C Kefa and Park(dfs)
- Codeforces Round #337 (Div. 2) D. Vika and Segments
- Codeforces Round #292 (Div. 1) C. Drazil and Park 线段树
- Codeforces Round #305 (Div. 2) D. Mike and Feet (单调栈)