博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[CF193B] Xor(暴力,剪枝,异或)
阅读量:4325 次
发布时间:2019-06-06

本文共 1514 字,大约阅读时间需要 5 分钟。

题目链接:http://codeforces.com/contest/193/problem/B

题意:一个数列有两种操作,问操作u次后最大是权值和是多少。

操作1:ai ^ bi

操作2:ai = api + r

这题爆搜会TLE,但是有一个很明显的剪枝就是同时异或的话值是一样的。所以用一个pre记录上一步是不是异或。

仅仅这样会wa,因为事实上的确会存在有两次连续异或,并且最终更新到u的情况。那么需要在剩余操作次数为偶数次的时候都要更新答案,因为要考虑异或成对出现的情况。

1 #include 
2 using namespace std; 3 4 typedef long long LL; 5 const int maxn = 333; 6 int n, u, r; 7 LL a[maxn], b[maxn], k[maxn], p[maxn]; 8 LL ret; 9 vector
path;10 11 void dfs(int cnt, bool pre) {12 if(cnt == u + 1) return;13 if((u - cnt) % 2 == 0) {14 LL tmp = 0;15 for(int i = 1; i <= n; i++) tmp += a[i] * k[i];16 ret = max(ret, tmp);17 }18 19 if(!pre) {20 for(int i = 1; i <= n; i++) a[i] ^= b[i];21 dfs(cnt+1, 1);22 for(int i = 1; i <= n; i++) a[i] ^= b[i];23 }24 25 LL t[maxn];26 for(int i = 1; i <= n; i++) t[i] = a[i];27 for(int i = 1; i <= n; i++) a[i] = t[p[i]] + r;28 dfs(cnt+1, 0);29 for(int i = 1; i <= n; i++) a[i] = t[i];30 }31 32 int main() {33 // freopen("in", "r", stdin);34 while(~scanf("%d%d%d",&n,&u,&r)) {35 for(int i = 1; i <= n; i++) scanf("%I64d",&a[i]);36 for(int i = 1; i <= n; i++) scanf("%I64d",&b[i]);37 for(int i = 1; i <= n; i++) scanf("%I64d",&k[i]);38 for(int i = 1; i <= n; i++) scanf("%I64d",&p[i]);39 ret = -1e18; path.clear();40 dfs(0, 0);41 printf("%I64d\n", ret);42 }43 return 0;44 }

 

转载于:https://www.cnblogs.com/kirai/p/6832731.html

你可能感兴趣的文章
小D课堂 - 零基础入门SpringBoot2.X到实战_第2节 SpringBoot接口Http协议开发实战_13、jar包方式运行web项目文件上传和访问...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_17、SpringBootTest单元测试实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_14、SpringBoot2.x使用Dev-tool热部署...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_19、SpringBoot个性化启动banner设置debug日志...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第三节SpringBoot热部署devtool和配置文件自动注入实战_16、注解配置文件自动映射到属性和实体类实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_20、SpringBoot2.x配置全局异常实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_18、SpringBoot测试进阶高级篇之MockMvc讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第5节 SpringBoot部署war项目到tomcat9和启动原理讲解_23、SpringBoot2.x启动原理概述...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第4节 Springboot2.0单元测试进阶实战和自定义异常处理_21、SpringBoot2.x配置全局异常返回自定义页面...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_32..SpringBoot2.x持久化数据方式介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_34、SpringBoot整合Mybatis实操和打印SQL语句...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_36、SpringBoot整合mybatis之事务处理实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_38、源码编译安装Redis4.x...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_33、SpringBoot2.x整合Mybatis3.x注解实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_35、事务介绍和常见的隔离级别,传播行为...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_40、Redis工具类封装讲解和实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_37、分布式缓存Redis介绍...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_42、SpringBoot常用定时任务配置实战...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第9节 SpringBoot2.x整合Redis实战_39、SpringBoot2.x整合redis实战讲解...
查看>>
小D课堂 - 零基础入门SpringBoot2.X到实战_第11节 Logback日志框架介绍和SpringBoot整合实战_44、新日志框架LogBack介绍...
查看>>