2020 计蒜之道 预赛 第三场 石子游戏(简单)(暴力DP)
石子游戏(简单)



思路:
通过形式容易看出是一道DP。其中异或和的情况只有64种,所以我们可以开一维来记录当前异或和的状态。
利用dp[当前位置][异或和][是否选择当前]来进行状态转移。时间复杂度为O(qnm)。
比赛时这道题卡了好久,思路很清晰,但就是跑不出正确结果。后来发现原来忽略了f为-1的情况,初始化默认为0了。。
题解:
#include<bits/stdc++.h>
#define MAX 1005
#define MOD 4294967296
using namespace std;
typedef long long ll;
int a[MAX],v[MAX];
int x[2005];
int dp[MAX][66][2];
int f[2005][66];
int main()
{
int t,n,m,q,l,r,i,j,k;
scanf("%d%d%d",&n,&m,&q);
for(i=0;i<n;i++){
scanf("%d%d",&a[i],&v[i]);
}
for(i=1;i<=q;i++){
scanf("%d%d%d",&l,&r,&x[i]);
memset(dp,-1,sizeof(dp));
dp[l][0][0]=0;
dp[l][a[l]][1]=v[l];
for(j=l+1;j<=r;j++){
for(k=0;k<64;k++){
dp[j][k][0]=max(dp[j-1][k][0],dp[j-1][k][1]);
dp[j][k][1]=max(dp[j-1][k^a[j]][0],dp[j-1][k^a[j]][1]);
if(dp[j][k][1]>-1) dp[j][k][1]+=v[j]; //-1一定要处理
}
}
for(k=0;k<64;k++){
f[i][k]=max(dp[r][k][0],dp[r][k][1]);
}
}
// for(i=1;i<=q;i++){
// for(j=0;j<64;j++){
// printf("%d ",f[i][j]);
// }
// printf("\n");
// }
ll ans=0;
for(k=1;k<=q;k++){
ll sum=0;
for(j=0;j<=m-1;j++){
sum+=f[k][j]*(x[k]^j)%MOD;
sum%=MOD;
}
ans+=(k^sum)%MOD;
ans%=MOD;
}
printf("%lld\n",ans);
return 0;
}
2020 计蒜之道 预赛 第三场 石子游戏(简单)(暴力DP)的更多相关文章
- 计蒜之道 初赛 第三场 题解 Manacher o(n)求最长公共回文串 线段树
腾讯手机地图 腾讯手机地图的定位功能用到了用户手机的多种信号,这当中有的信号的作用范围近.有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的,有的则是在不论什么一个方向上信号强度都 ...
- 2017 计蒜之道 初赛 第三场 D. 腾讯狼人杀 (点边都带权的最大密度子图)
点边都带权的最大密度子图,且会有必须选的点. 求\(\frac{\sum w_e}{k*(2n-k)}\)的最大值,其中k为子图点数 设\[h(g) = \sum w_e - g*(2nk-k^2)\ ...
- 2017 计蒜之道 初赛 第五场 UCloud 的安全秘钥(中等)
每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年会对用户的秘钥进行安全性评估,具体的评估方 ...
- 2018 计蒜之道 初赛 第五场 A 贝壳找房搬家
贝壳找房换了一个全新的办公室,每位员工的物品都已经通过搬家公司打包成了箱子,搬进了新的办公室了,所有的箱子堆放在一间屋子里(这里所有的箱子都是相同的正方体),我们可以把这堆箱子看成一个 x*y*z 的 ...
- 2017 计蒜之道 初赛 第五场 D. UCloud 的安全秘钥(困难)
小数据打表,大数据暴力. 导致超时的主要原因是$m$小的询问次数太多,可以把$m≤10$的答案直接暴力打表存起来,$m>10$的用$C$题的方法即可. #include <iostream ...
- 2017 计蒜之道 初赛 第五场 C. UCloud 的安全秘钥(中等)
暴力. $O(m*n)$的算法可以通过此题,每次询问$O(m)$扫$S$数组,统计不同数字的个数,每次移动最多只会变化两个数字,如果不同数字个数为$0$,那么答案加$1$. #include < ...
- 2017 计蒜之道 初赛 第五场 B. UCloud 的安全秘钥(简单)
暴力. 暴力枚举$S$串的每一个长度为$m$的子串,排序判断即可. #include <iostream> #include <cstdio> #include <cst ...
- 2017 计蒜之道 初赛 第五场 A. UCloud 机房的网络搭建
贪心. 从大到小排序之后进行模拟,注意$n=1$和$n=0$的情况. #include <iostream> #include <cstdio> #include <cs ...
- 2016计蒜之道初赛第四场A
在每年的淘宝“双十一”时,访问量都会暴涨,服务器的请求会被流量分配程序按照一定策略,分发给不同的进程去处理.有一类请求,有两个进程可以接受分发的请求,其中一个进程所在服务器的配置.网络传输性能等都要优 ...
随机推荐
- JUC---02
目录 1.1 集合安全问题 1.1.1 ListNotSafe 1.1.2 MapNotSafe 1.1.3 SetNotSafe 1.1 集合安全问题 1.1.1 ListNotSafe 首先看一个 ...
- Docker系列——Docker安装&基础命令
Docker 概述 Docker 是一个开源的应用容器引擎,Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化. ...
- Spark-shell 报错:Failed to get database default, returning NoSuchObjectException
Spark-shell 执行sql查询报错: 20/08/24 15:33:59 WARN metastore.ObjectStore: Failed to get database default, ...
- 网站seo整站优化有什么优势
http://www.wocaoseo.com/thread-314-1-1.html 现在很多企业找网络公司做网站优化,已经不再像以前那样做目标关键词,而是通过整站优化来达到企业营销目的 ...
- 腾讯大牛教你简单的自动化测试模型(Python+Selenium)
今天讲解简单的自动化测试模型,对于刚接触自动化测试的同学,由于没有编程语言的基础,是搞不懂代码里面的函数.封装.包以及其他概念,只是了解字符串.数组.元组及字典这种最基本的名词,更不懂自动化测试框架了 ...
- 5000字 | 24张图带你彻底理解Java中的21种锁
本篇主要内容如下: 本篇文章已收纳到我的Java在线文档. Github 我的SpringCloud实战项目持续更新中 帮你总结好的锁: 序号 锁名称 应用 1 乐观锁 CAS 2 悲观锁 synch ...
- vue实现pdf文件的在线预览
我是通过 <iframe> 标签就可以满足我工作的 pdf预览需求 如果<iframe> 无法满足需求 , 可以使用pdf.js这个插件,功能强大. <iframe :s ...
- Unity Prefab关联
Unity3D研究院之Prefab里面的Prefab关联问题http://www.xuanyusong.com/archives/3042
- or2?Scum!(周期性求解)
链接:https://ac.nowcoder.com/acm/contest/316/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言2621 ...
- Google Code Jam 2020 Round1B Join the Ranks
题意 给你一个形如\(1,2,\cdots,R,1,2,\cdots,R,1\cdots\)的序列,共重复\(C\)次.你每次可以选择一个区间\([L,R]\)将其平移到序列首部,最终使得序列具有\( ...