Codeforces Round #191 (Div. 2) E题

状态压缩DP,算sum,本来是枚举的,结果TLE了。。

复制代码
 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 #include <queue>
 5 #include <cstdlib>
 6 using namespace std;
 7 #define MOD 1000000007
 8 int p[10001];
 9 int hash[1<<24];
10 int sum[1<<24];
11 int k[3];
12 int lowbit(int t)
13 {
14     return t&(-t);
15 }
16 int main()
17 {
18     int n,m,i,j;
19     scanf("%d",&n);
20     for(i = 0; i < n; i ++)
21     {
22         scanf("%d",&p[i]);
23     }
24     scanf("%d",&m);
25     for(i = 1; i <= m; i ++)
26     {
27         scanf("%d",&k[i]);
28     }
29     if(m == 1) k[2] = k[1];
30     hash[0] = 1;
31     for(i = 0;i < n;i ++)
32     sum[1<<i] = p[i];
33     for(i = 1; i < (1<<n); i ++)
34     {
35         sum[i] = sum[i-lowbit(i)] + sum[lowbit(i)];
36         if(sum[i] == k[1]||sum[i] == k[2])
37             continue;
38         for(j = i; j > 0; j -= lowbit(j))
39         {
40             hash[i] += hash[i-lowbit(j)];
41             if(hash[i] > MOD)
42             hash[i] -= MOD;
43         }
44     }
45     printf("%d\n",hash[(1<<n)-1]);
46     return 0;
47 }
复制代码

 

 

posted @   Naix_x  阅读(219)  评论(0编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
历史上的今天:
2012-07-27 HDU 1712 ACboy needs your help(二维DP)
2012-07-27 URAL 1018. Binary Apple Tree(树形DP)
2012-07-27 POJ 2299 Ultra-QuickSort(树状数组)
2012-07-27 HDU 1100. Final Standings(快排)
点击右上角即可分享
微信分享提示