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++
  • 相关阅读:
    Hypercall机制
    python 基础-----数字,字符串,if while 循环 数据类型的转换简单介绍
    计算机基础知识
    Proxmox初步了解
    Centos7-安装py3
    KVM-virsh常用命令
    Centos7-VNC安装
    Centos7-bond模式介绍
    KVM管理工具
    Win10-无法启动虚拟机
  • 原文地址:https://www.cnblogs.com/e0e1e/p/hdu_4901.html
Copyright © 2011-2022 走看看