CodeForces
来源:互联网 发布:知乎 法国 实力 编辑:程序博客网 时间:2024/06/17 22:59
显然我们发现如果连续两次进行异或操作的抵消的,所以可以插入一对或多对二次异或操作,然后剪枝dfs就可以了。
代码:
#include<iostream>#include<cstdio>#include<cstring>#include<string>#include<set>#include<map>#include<cmath>#include<algorithm>#define inf 0x3f3f3f3f#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;typedef long long ll;const int mx=40;int u,n,r; int a[mx],b[mx],k[mx],p[mx],a1[mx];ll ans;void dfs(int step,int a[],int way){int a1[mx];if((u-step)%2==0){ll cnt=0;for(int i=1;i<=n;i++)cnt+=a[i]*k[i];ans=max(cnt,ans);if(u==step) return ;}if(way){for(int i=1;i<=n;i++) a1[i]=b[i]^a[i];dfs(step+1,a1,0);}for(int i=1;i<=n;i++) a1[i]=a[p[i]]+r;dfs(step+1,a1,1);}int main(){while(cin>>n>>u>>r){for(int i=1;i<=n;i++) scanf("%d",a+i);for(int i=1;i<=n;i++) scanf("%d",b+i);for(int i=1;i<=n;i++) scanf("%d",k+i);for(int i=1;i<=n;i++) scanf("%d",p+i);ans=-100000000001;dfs(0,a,1);printf("%lld\n",ans);}return 0;}
0 0
- codeforces~~~
- Codeforces
- codeforces
- Codeforces
- codeforces
- codeforces
- Codeforces
- Codeforces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- CodeForces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- Codeforces
- MyEclipse 2016 破解详细过程
- qqtf支付逻辑修改
- CodeForces 754B Ilya and tic-tac-toe game
- Hibernate连接sqlite使用相对路径(src)
- 走进数据结构之排序(七)---归并排序
- CodeForces
- 蓝桥杯之方格填数
- 课堂笔记_ 光线跟踪原理
- C语言实现一个队列
- 开始安卓技术学习之旅
- 【学习笔记19】java面向对象-包
- 资金池
- 洛谷P1280/tyvj1034 尼克的任务 DP
- Qt模块化笔记之network——第二个TCP程序,传输图片文件的实现(2)