• hdu 4901 The Romantic Hero


    http://acm.hdu.edu.cn/showproblem.php?pid=4901

    dp1[i][j]是i参与,异或值为j的个数,x1[i][j]是以i位置向前到1的位置的异或值为j的个数,dp2[i][j]是i参与,&值为j的个数,x2[i][j]是以i位置向前到n的位置的&值为j的个数。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define ll __int64
     5 using namespace std;
     6 const int mod=1000000007;
     7 
     8 ll dp1[1100][1100];
     9 ll dp2[1100][1100];
    10 ll x1[1100][1100];
    11 ll x2[1100][1100];
    12 int t,n;
    13 int c[1100];
    14 
    15 int main()
    16 {
    17     scanf("%d",&t);
    18     while(t--)
    19     {
    20         scanf("%d",&n);
    21         for(int i=1; i<=n; i++)
    22         {
    23             scanf("%d",&c[i]);
    24         }
    25         memset(dp1,0,sizeof(dp1));
    26         memset(dp2,0,sizeof(dp2));
    27         memset(x1,0,sizeof(x1));
    28         memset(x2,0,sizeof(x2));
    29         for(int i=1; i<=n; i++)
    30         {
    31             for(int j=0; j<=1024; j++)
    32             {
    33                 int m=j^c[i];
    34                 dp1[i][m]=(dp1[i][m]+x1[i-1][j])%mod;
    35             }
    36             dp1[i][c[i]]=(dp1[i][c[i]]+1)%mod;
    37             for(int j=0; j<=1024; j++)
    38             {
    39                 x1[i][j]=(x1[i-1][j]+dp1[i][j])%mod;
    40             }
    41         }
    42         for(int i=n; i>=1; i--)
    43         {
    44             for(int j=0; j<=1024; j++)
    45             {
    46                 int m=j&c[i];
    47                 dp2[i][m]=(dp2[i][m]+x2[i+1][j])%mod;
    48             }
    49             dp2[i][c[i]]=(dp2[i][c[i]]+1)%mod;
    50             for(int j=0; j<=1024; j++)
    51             {
    52                 x2[i][j]=(x2[i+1][j]+dp2[i][j])%mod;
    53             }
    54         }
    55         ll ans=0,sum;
    56         for(int i=1; i<=n-1; i++)
    57         {
    58             for(int j=0; j<=1024; j++)
    59             {
    60                 sum=(dp1[i][j]*x2[i+1][j])%mod;
    61                 ans=(ans+sum)%mod;
    62             }
    63         }
    64         printf("%I64d
    ",ans);
    65     }
    66     return 0;
    67 }
    View Code
  • 相关阅读:
    【mybatis源码学习】缓存机制
    【maven】命令
    【传输协议】thrift的IDL语法
    【传输协议】thrift原理
    Go 语言极速入门
    SOFABolt 源码分析
    !!!后续博客写到简书 + 博客园留博客目录
    第一章 java nio三大组件与使用姿势
    netty源码解析目录
    mac下host配置 + mac修改了环境变量却不生效:zsh: command not found: xxx
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3883549.html
Copyright © 2020-2023  润新知