POJ 4901 The Romantic Hero DP
来源:互联网 发布:数据库limit的用法 编辑:程序博客网 时间:2024/06/05 17:12
//890MS12388K#include <cstdio>#include <iostream>#include <cstring>using namespace std;typedef long long ll;const int maxa = 1024;const int maxn = 1000;const int mod = int(1e9) + 7;int f[maxn+5][maxa], g[maxn+5][maxa], h[maxn+5][maxa];inline void add_it(int& a, int b){ a = (a + b) % mod;}int main() { int a[maxn],T,n; short i,j,t; int ans; scanf("%d",&T); while(T--) { scanf("%d",&n); for(i=1; i<=n; i++) scanf("%d",&a[i]); memset(f, 0, sizeof(f)); memset(g, 0, sizeof(g)); memset(h, 0, sizeof(h)); f[1][a[1]]=1; for(i=2; i<=n-1; i++) { f[i][a[i]]++;///单独一个元素的集合的情况 for(j=0; j<maxa; j++) { if(f[i-1][j]) { add_it(f[i][j], f[i-1][j]); t=j^a[i]; add_it(f[i][t], f[i-1][j]); } } } g[n][a[n]]=1; h[n][a[n]]=1; for(i=n-1; i>=2; i--) { g[i][a[i]]++; h[i][a[i]]++; for(j=0; j<maxa; j++) { if(h[i+1][j]) { add_it(h[i][j], h[i+1][j]); t=j&a[i]; add_it(h[i][t], h[i+1][j]); add_it(g[i][t], h[i+1][j]); } } } ans=0; for(i=1; i<=n-1; i++) for(j=0; j<maxa; j++) { if(f[i][j]&&g[i+1][j]) { add_it(ans, ((ll)f[i][j] * g[i+1][j]) % mod); } } printf("%d\n",ans); } return 0;}
//WA#include <cstdio>#include <iostream>#include <cstring>using namespace std;typedef long long ll;const int max_n = 1000 + 5;const int max_a = 1024 + 5;const int mod = int(1e9) + 7;int a[max_n];int dp1[max_n][max_a], dp2[max_n][max_a], dp3[max_n][max_a];int n;inline void add_it(int& a, int b){ a = (a + b) % mod;}/*void DP1(){ memset(dp1, 0, sizeof(dp1)); //dp1[1][0] = 1; //dp1[1][a[1]] = 1; //dp1[0][0] = 1; //dp1[0][0] = 1; //dp1[1][a[1]] = 1; for(int i=1; i<=n-1; i++){ dp1[i][a[i]]++; for(int j=0; j<=1023; j++){ if(dp1[i][j]){ dp1[i+1][j] = (dp1[i+1][j] + dp1[i][j]) % mod; int jj = j^a[i+1]; dp1[i+1][jj] = (dp1[i+1][jj] + dp1[i][j]) % mod; } } }; //for(int i=1; i<=n; i++) dp1[i][0]--;}*/void DP1(){ memset(dp1, 0, sizeof(dp1)); dp1[1][a[1]] = 1; for(int i=2; i<=n-1; i++){ dp1[i][a[i]]++; for(int j=0; j<1024; j++){ if(dp1[i-1][j]){ add_it(dp1[i][j], dp1[i-1][j]); int t = j^a[i]; add_it(dp1[i][t], dp1[i-1][j]); } } }}/*void DP2(){ memset(dp2, 0, sizeof(dp2)); memset(dp3, 0, sizeof(dp3)); //dp2[n][0] = 1; //dp3[n][a[n]] = 1; for(int i=n; i>=2; i--){ dp3[i][a[i]]++; for(int j=0; j<=1023; j++){ if(dp2[i][j]){ dp3[i-1][j&a[i-1]] = (dp3[i-1][j&a[i-1]] + dp2[i][j]) % mod; dp2[i-1][j] = (dp2[i-1][j] + dp2[i][j]) % mod; } if(dp3[i][j]){ dp3[i-1][j&a[i-1]] = (dp3[i-1][j&a[i-1]] + dp3[i][j]) % mod; dp2[i-1][j] = (dp2[i-1][j] + dp3[i][j]) % mod; } } } dp3[1][a[1]]++;}*/void DP2(){ memset(dp2, 0, sizeof(dp2)); memset(dp3, 0, sizeof(dp3)); dp2[n][a[n]] = 1; dp3[n][a[n]] = 1; for(int i=n-1; i>=2; i--){ dp2[i][a[i]]++; dp3[i][a[i]]++; for(int j=0; j<1024; j++){ if(dp2[i+1][j]){ add_it(dp2[i][j], dp2[i+1][j]); int t = j & a[i]; add_it(dp2[i][t], dp2[i+1][j]); add_it(dp3[i][t], dp2[i+1][j]); } } }}int main(){ int T; scanf("%d", &T); while(T--){ scanf("%d", &n); for(int i=1; i<=n; i++) scanf("%d", &a[i]); //for(int i=1; i<=n; i++) b[i] = a[n+1-i]; DP1(); DP2(); int res = 0; for(int i=1; i<=n-1; i++){ for(int j=0; j<=1023; j++){ if(dp1[i][j] && dp3[i+1][j]) res = (res + (ll)(dp1[i][j] * dp3[i+1][j]) % mod) % mod; } } printf("%d\n", res); } return 0;}
0 0
- POJ 4901 The Romantic Hero DP
- HDU-4901 The Romantic Hero DP
- HDU 4901 The Romantic Hero(二维dp)
- HDU 4901 The Romantic Hero 简单DP
- HDU 4901 The Romantic Hero(DP)
- hdu 4901 The Romantic Hero(dp)
- HDU 4901 The Romantic Hero 计数DP
- HDOJ 4901 - The Romantic Hero 简单dp
- hdu 4901 The Romantic Hero (dp)
- HDU 4901 The Romantic Hero DP(计数)
- HDU4901:The Romantic Hero(DP)
- HDU4901-The Romantic Hero(DP)
- 【bzoj3866】The Romantic Hero dp
- ACM 简单DP hdu 4901 The Romantic Hero
- 【HDU 4901 多校联合】The Romantic Hero【DP】
- hdu 4901 The Romantic Hero (dp+背包问题)
- hdu 4901 The Romantic Hero 计数dp,位计算
- hdu 4901 The Romantic Hero(计数dp)
- hdu 2099 整除的尾数(水题)
- 【Codeforeces】【#259】【Div.2】
- actionbar强制显示overflow menu
- SPRING security添加验证码的三种方式
- 【翻译自mos文章】Oracle GoldenGate(OGG) trail file的最大大小
- POJ 4901 The Romantic Hero DP
- MyEclipse优化技巧
- Qt学习笔记1
- 理解RESTful架构
- Android图片资源
- 三族与九族
- 【OAuth】理解OAuth 2.0
- Struts2拦截器配置
- 程序员成长规划