很美妙的一题

官方题解 http://www.cnblogs.com/duoxiao/p/5777632.html

感觉有meet in middle的思想

 #include<bits/stdc++.h>

 using namespace std;
typedef long long ll;
const int mo=1e9+;
struct way{int po,next;} e[];
unsigned int mx[][],f[],tmp[][];
int n,w[],fa[],p[],v[],ans,len;
char s[];
void add(int x,int y)
{
e[++len].po=y;
e[len].next=p[x];
p[x]=len;
} void inc(int &a,int b)
{
a+=b;
if (a>mo) a-=mo;
} int calc(int a,int b)
{
if (s[]=='X') return a^b;
else return a&b;
} void get(int x)
{
if (x==) f[x]=;
else f[x]=f[fa[x]]+(w[x]|w[fa[x]]);
inc(ans,(ll)x*(f[x]+w[x])%mo);
for (int i=p[x]; i; i=e[i].next) get(e[i].po);
} void dfs(int x)
{
f[x]=;
int a=w[x]>>,b=w[x]&;
for (int i=; i<; i++)
if (v[i]) f[x]=max(f[x],mx[i][b]+(calc(a,i)<<));
inc(ans,(ll)x*(f[x]+w[x])%mo);
v[a]++;
for (int i=; i<; i++)
{
tmp[x][i]=mx[a][i];
mx[a][i]=max(mx[a][i],f[x]+calc(b,i));
}
for (int i=p[x]; i; i=e[i].next) dfs(e[i].po);
memcpy(mx[a],tmp[x],sizeof(tmp[x]));
v[a]--;
} int main()
{
int cas;
scanf("%d",&cas);
memset(mx,,sizeof(mx));
while (cas--)
{
len=; memset(p,,sizeof(p));
scanf("%d%s",&n,s);
for (int i=; i<=n; i++) scanf("%d",&w[i]);
for (int i=; i<=n; i++)
{
scanf("%d",&fa[i]);
add(fa[i],i);
}
ans=;
memset(v,,sizeof(v));
if (s[]=='O') get();
else dfs();
for (int i=; i<=n; i++) p[i]=;
printf("%d\n",ans);
}
}

hdu5735的更多相关文章

  1. HDU5735 : Born Slippy

    考虑DP,设$f[x]$表示最后一个是$x$时的最优解,则$f[x]=\max(f[y]+w[x]\ opt\ w[y])$,其中$y$是$x$的祖先. 注意到$w[i]<2^{16}$,那么将 ...

随机推荐

  1. Spring源码解析-Advice中的Adapter模式

    在spring中与通知相关的类有: 以Advice结尾的通知接口    MethodBeforeAdvice    AfterReturningAdvice   ThrowsAdvice 以Inter ...

  2. ubuntu16.04命令行模式黑屏解决办法

    ubuntu16.04命令行模式黑屏解决办法 问题描述 在ubuntu上装Nvidia的显卡驱动,需要关闭图形界面才能安装驱动,但是,出现如下情况: 使用“ctrl+alt+F1”命令进入命令行界面是 ...

  3. 一图看懂深度学习框架对比----Caffe Torch Theano TensorFlow

      Caffe Torch Theano TensorFlow Language C++, Python Lua Python Python Pretrained Yes ++ Yes ++ Yes ...

  4. sql 建表以及查询---复杂查询之成绩排名

    废话不说,直接建表 1.表Player USE T4st -- 设置当前数据库为T4st,以便访问sysobjects IF EXISTS(SELECT * FROM sysobjects WHERE ...

  5. webpack插件url-loader使用规范

    其实说到性能优化,他的范围太广了,今天我们就只聊一聊通过webpack配置减少http请求数量这个点吧. 简单说下工作中遇到的问题吧,我们做的一个项目中首页用了十多张图片,每张图片都是一个静态资源,所 ...

  6. Robot Framework Chrome

    1. 下载对应版本的chromedriver, 好像都是windows32位的,不过没关系,可以用即可. 2. 将chromedriver放入到chrome的安装路径下,然后将chromrdriver ...

  7. 【BZOJ1560】【JSOI2009】火星藏宝图 [DP]

    火星藏宝图 Time Limit: 10 Sec  Memory Limit: 64 MB[Submit][Status][Discuss] Description Input Output Samp ...

  8. 【CodeForces】788E New task

    [题意]n个数,每个数有附加属性0或1,初始全为1.m个操作,每个操作可以改变一个数字的属性为0或1.对于每次操作后的序列求有多少子序列满足要求:5个数字,中间3个数相等且属性为1,左右两个数小于等于 ...

  9. 牛客网刷题(纯java题型 31~60题)

    牛客网刷题(纯java题型 31~60题) 重写Override应该满足"三同一大一小"三同:方法名相同,参数列表相同,返回值相同或者子类的返回值是父类的子类(这一点是经过验证的) ...

  10. auto-keras 测试保存导入模型

    # coding:utf-8 import time import matplotlib.pyplot as plt from autokeras import ImageClassifier# 保存 ...