hdu5735Born Slippy(乱搞)
来源:互联网 发布:京东商城数据库设计 编辑:程序博客网 时间:2024/06/03 12:47
题目链接:点这里!!!
题解:
官方题解讲的很详细了,我就不做过多赘述啦!
官方题解:点这里!!!!
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<sstream>#include<algorithm>#include<vector>#include<bitset>#include<set>#include<queue>#include<stack>#include<map>#include<cstdlib>#include<cmath>#define LL long long#define pb push_back#define pa pair<int,int>#define clr(a,b) memset(a,b,sizeof(a))#define lson lr<<1,l,mid#define rson lr<<1|1,mid+1,r#define bug(x) printf("%d++++++++++++++++++++%d\n",x,x)#define key_value ch[ch[root][1]][0]#pragma comment(linker, "/STACK:102400000000,102400000000")const LL MOD = 1000000007;const int N = 70000+15;const int maxn = 1e5+15;const int letter = 130;const int INF = 1e9;const double pi=acos(-1.0);const double eps=1e-10;using namespace std;inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f;}int n,pp,head[N],tot,vis[N];LL sum,w[N],f[260][260],g[N][260];struct node{ int to,next;}e[N];void addedges(int u,int v){ e[tot].to=v,e[tot].next=head[u],head[u]=tot++;}LL op(LL a,LL b){ if(pp==0) return a&b; if(pp==1) return a^b; if(pp==2) return a|b;}void init(){ sum=tot=0; for(int i=1;i<=n;i++) head[i]=-1; clr(f,0);}void dfs(int x){ LL a=w[x]>>8ll,b=w[x]&255ll; LL mx=0; for(int i=0;i<256;i++) if(vis[i])mx=max(mx,f[i][b]+(op(a,i)<<8ll)); sum=(sum+1ll*x*(w[x]+mx)%MOD+MOD)%MOD; for(int i=0;i<256;i++) g[x][i]=f[a][i],f[a][i]=max(f[a][i],mx+op(b,i)); vis[a]++; for(int i=head[x];i!=-1;i=e[i].next) dfs(e[i].to); vis[a]--; for(int i=0;i<256;i++) f[a][i]=g[x][i];}int main(){ int T; char s[10]; scanf("%d",&T); while(T--){ scanf("%d%s",&n,s); if(s[0]=='A') pp=0; if(s[0]=='X') pp=1; if(s[0]=='O') pp=2; init(); for(int i=1;i<=n;i++) scanf("%I64d",w+i); int x; for(int i=2;i<=n;i++){ scanf("%d",&x); addedges(x,i); } dfs(1); printf("%I64d\n",(sum%MOD+MOD)%MOD); } return 0;}
0 0
- hdu5735Born Slippy(乱搞)
- hdu5735Born Slippy
- 乱搞
- 乱搞
- HDU5735 Born Slippy
- HDU 5735 Born Slippy
- HDU 5735 Born Slippy
- HDU5735 Born Slippy
- HDU 5735 Born Slippy
- hdu 5735 Born Slippy
- qbxt Day 4 乱搞+乱搞+乱搞
- BZOJ4104【乱搞】
- 乱搞题
- 树上乱搞
- 乱搞hash
- 乱搞题
- 代码乱搞
- 乱搞 寿司
- C++/C语言函数:isalpha()函数 isdigit(int c)宏
- bzoj 4610: [Wf2016]Ceiling Functi
- Android进阶图片处理之三级缓存方案
- Myeclipse 运行maven控制台中文乱码
- 利用java获取当前时间
- hdu5735Born Slippy(乱搞)
- 仿QQ侧滑删除
- web开发 写一个数字验证码
- 杭电OJ 1803 Deli Deli
- QT如何将QlineEdit里的QString字符串存储到unsigned char 数组中
- Python——使用ElementTree解析AndroidManifest.xml文件
- 排序算法讲解(三)
- PHP编程效率的要点
- 移除superView上的subviews