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
在每年的淘宝“双十一”时,访问量都会暴涨,服务器的请求会被流量分配程序按照一定策略,分发给不同的进程去处理.有一类请求,有两个进程可以接受分发的请求,其中一个进程所在服务器的配置.网络传输性能等都要优 ...
随机推荐
- play ball小游戏-Alpha版本发布说明
Alpha版本发布说明 一.功能介绍 本团队所做的微信小程序是一款小球经碰撞后最终到达目的位置通关的休闲益智类游戏.Alpha版本具有的功能大体如下: 1. 闯关模式 多达12关普通竖屏关卡.4关特殊 ...
- latex:备忘代码
1.脚注代码: \footnote{欧几里德,约公元前330--340年.} 结果为: 2.改变某个字的字体形状,表示强调 \emph{勾股定理} 结果为(勾股数这三个字与其他字不一样): 3.正文中 ...
- java面试题0001-区分类中重载方法的依据是什么?
到底是根据什么来区分类中重载的方法? A:不同的返回值类型. B:不同的参数类型. C:不同的访问权限. D:不同的参数名称. 解析: Step1.我们先在DifferentiateReload类中创 ...
- 小白一样能建站——winser2012 IIS8.0搭建基本的网站
在window server 2012环境下,搭建一个基本的 网站.能够使用即可. 打开服务器管理器 添加角色和功能 默认下一步 下一步, 下一步,选择web服务器 添加功能 下一步, 下一步,不安装 ...
- 扫盲--CRM系统和ERP系统的区别
企业规模在逐步扩大的时候,为了提高生产和管理的效率,经常需要用到相关管理软件.很多企业管理者在选择管理软件的时候犯了难,面对CRM系统和ERP系统不知如何选择无法下手.那么,CRM和ERP的区别是什么 ...
- mysql再回首
Mysql与Oracle的区别 1.实例区别 Mysql是一个轻量型数据库,开源免费.Oracle是收费的而且价格非常高. Mysql一个实例可以操作多个库,而Oracle一个实例只能对应一个库. M ...
- 百度与谷歌seo优化的差别
http://www.wocaoseo.com/thread-126-1-1.html 常有朋友问谷歌(google)和百度(baidu)到底有什么区别?我在纠结这个问题该如何回答.如果从公平公正的角 ...
- 把Autofac玩的和javaSpring一样6
大家好,今天来介绍我开源的一个autofac.Annotation项目 源码:https://github.com/yuzd/Autofac.Annotation 本项目是autofa的一个扩展组件, ...
- [源码解析] Flink的Slot究竟是什么?(2)
[源码解析] Flink 的slot究竟是什么?(2) 目录 [源码解析] Flink 的slot究竟是什么?(2) 0x00 摘要 0x01 前文回顾 0x02 注册/更新Slot 2.1 Task ...
- F - 丘 (欧拉函数)
Chinese people think of '8' as the lucky digit. Bob also likes digit '8'. Moreover, Bob has his own ...