zoukankan      html  css  js  c++  java
  • HDU 4901

    dpdp,需要绕一个弯子,注意不要重复计数,然后就没什么了。

     1 /*
     2 ID:esxgx1
     3 LANG:C++
     4 PROG:hdu4901
     5 */
     6 #include <cstdio>
     7 #include <cstring>
     8 #include <iostream>
     9 #include <algorithm>
    10 using namespace std;
    11 
    12 const int mod = 1e9 + 7;
    13 
    14 unsigned _dp[1007][1024][2], (*dp)[1024][2] = &_dp[1];
    15 unsigned dp2[1024];
    16 int a[1007];
    17 
    18 int main(void)
    19 {
    20     #ifndef ONLINE_JUDGE
    21     freopen("in.txt", "r", stdin);
    22     #endif
    23 
    24     int T;
    25     scanf("%d", &T);
    26     for(int t=1; t<=T; ++t) {
    27         int N;
    28         scanf("%d", &N);
    29         for(int i=0; i<N; ++i)
    30             scanf("%u", &a[i]);
    31         for(int i=0; i<N; ++i) {
    32             for(int j=0; j<1024; ++j) {
    33                 dp[i][j][0] = dp[i-1][j ^ a[i]][1];
    34                 dp[i][j][1] = (dp[i][j][0] + dp[i-1][j][1]) % mod;
    35             }
    36             dp[i][a[i]][0] = (dp[i][a[i]][0] + 1) % mod;
    37             dp[i][a[i]][1] = (dp[i][a[i]][1] + 1) % mod;
    38         }
    39         unsigned ans = 0;
    40         memset(dp2,0, sizeof(dp2));
    41         for(int i=N; i--; ) {
    42             for(int j=0; j<1024; ++j) {
    43                 ans = (ans + (((long long)dp2[j] * dp[i][j][0]) % mod)) % mod;
    44                 dp2[j & a[i]] = (dp2[j & a[i]] + dp2[j]) % mod;
    45             }
    46             dp2[a[i]] = (dp2[a[i]] + 1) % mod;
    47         }
    48         printf("%u
    ", ans);
    49     }
    50     return 0;
    51 }
    2014-10-04 13:19:54 Accepted 4901 1046MS 8332K 1081 B G++
  • 相关阅读:
    .net基础学java系列(一)视野
    技术栈
    Apollo(阿波罗)携程开源配置管理中心
    .NET 动态调用WCF
    RPC 工作原理
    ServiceStack 简单使用
    PRC 框架选择
    栈vs堆,最详细的对比
    使用SuperSocket打造逾10万长连接的Socket服务
    开源项目练习EF+jQueryUI前后端分离设计
  • 原文地址:https://www.cnblogs.com/e0e1e/p/hdu_4901.html
Copyright © 2011-2022 走看看