清北学堂提高组突破营游记day6
还有一天就结束了。。QWQ
好快啊。
昨天没讲完的博弈论DP:
一个标准的博弈论dp,一般问的是是否先手赢。
博弈论最关键的问题:dp过程。
对于一个问题,一定有很多状态,每个状态可以转移到其他的一些状态。如果存在一个状态,且不能转移到其他状态,那么我们设这个状态为必败态,那么他相邻的能够转移到必败态的状态因为只有一种转移方式,那么一定为必胜态,(假设操作双方选手绝顶聪明,每一步都朝着最优状态走),如此这样交替下去,推到开始状态,就可以判断了。
怎么转换?
对于一个节点以及他所有子节点来讲,如果子节点全部为true(对手的必胜态),那么当前节点为你的必败态。
如果子节点中有一个false(对手必败态),那么当前节点就是你的必胜态。
于是我们用dfs记忆化枚举并dp:
#include<iostream> using namespace std; bool f[][],g[][]; bool dfs(int i,int j)
{
if (i==) return false;
if (g[i][j]) return f[i][j];
g[i][j]=true;f[i][j]=false;
for (int r=;r<=i && r<=k*j;r++)
if (dfs(i-r,r) == false) f[i][j]=true;
return f[i][j];
} int main()
{
cin >> s >> k;
for (int a=;a<s;a++)
if (dfs(s-a,a) == false)
{
cout << "Alice" << endl;
return ;
}
cout << "Bob" << endl; return ;
}
这个题用到sg函数:sg[n]表示从n往下到一个能取到的最低的值中最小的没有出现过的非负整数的值,
suchas:在序列2 5 6 7中,sg[4]=0,在序列1 2 3 4 6中,sg[5]=5;
这个东西有什么用?
SG函数可以解决大多数博弈问题,当然也可以通过SG函数找规律,然后计算结果。
答案是把所有奇数堆都取出来并求sg函数并亦或,如果答案为0,先手必败。
至于sg的正确性的话。。。
zhx:“这个东西如果你去看的话没有2个小时你是看不下来的,如果想看懂全部原理和证明的话没有2天是不行的。”.
我看了看,
所以证个锤子。背过模板万事皆有可能。
各种例题:
sg函数求法:
下午考试,爆零警告。
清北学堂提高组突破营游记day6的更多相关文章
- 清北学堂提高组突破营游记day3
讲课人更换成dms. 真的今天快把我们逼疯了.. 今天主攻数据结构, 基本上看完我博客能理解个大概把, 1.LCA 安利之前个人博客链接.之前自己学过QWQ. 2.st表.同上. 3.字符串哈希.同上 ...
- 清北学堂提高组突破营游记day5
长者zhx来啦.. (又要送冰红茶了...) zhx一上来就讲动态规划...是不是要逼死人.... 动态规划: 最简单的例子:斐波那契数列.因为他是递推(通项公式不算)的,所以前面的已经确定的项不会影 ...
- 清北学堂提高组突破营游记day4
今天主攻图论. 对于这道题,30分做法是暴力搜索全部来判断是否有异样. 对于满分做法,利用带权并查集.? 又带我们串了一边LCA 安利个人LCA博客. spfa代码.原理:循环队列. 然后是floyd ...
- 清北学堂提高组突破营考试T1
题目如下: (想要作弊的后几届神仙们我劝你们还是别黈了,这个题如果你们不会只能证明你们上错班了). 好,题目看完了,发现是一道大模拟(%你)题,于是我们按照题目说的做: #include<ios ...
- 清北学堂提高突破营游记day1
上午7点半到的国防宾馆,8点开始的培训. 讲课人林永迪. 没错就是这个人: 他推荐的教辅:刘汝佳紫书,算法导论(也就看看..),刘汝佳白书 先讲模拟.(貌似就是看题论题. 然后贪心. 贪心没有固定的模 ...
- 清北学堂提高突破营游记day2
先水了一下昨天没讲完的贪心. 然后今天讲的分治. 安利自己水的二分与三分. 二分一定要满足有序.三分适合解决单峰函数问题. 第一道题借教室.运用差分和二分查找. 三分: P1731 [NOI1999] ...
- <知识整理>2019清北学堂提高储备D2
简单数据结构: 一.二叉搜索树 1.前置技能: n/1+n/2+……+n/n=O(n log n) (本天复杂度常涉及) 2.入门题引入: N<=100000. 这里多了一个删除的操作,因此要 ...
- <知识整理>2019清北学堂提高储备D1
一.枚举: 枚举是最简单最基础的算法,核心思想是将可能的结果都列举出来并判断是否是解. 优点:思维简单,帮助理解问题.找规律.没头绪时 缺点:时空复杂度较高,会有很多冗余的非解(简单的枚举几乎没有利用 ...
- <知识整理>2019清北学堂提高储备D3
全天动态规划入门到入坑... 一.总概: 动态规划是指解最优化问题的一类算法,考察方式灵活,也常是NOIP难题级别.先明确动态规划里的一些概念: 状态:可看做用动态规划求解问题时操作的对象. 边界条件 ...
随机推荐
- 自定义View等级滑动条的实现
package com.loaderman.beautyseekbarviewdemo; import android.os.Bundle; import android.support.v7.app ...
- while循环嵌套
<1>while嵌套的格式 while 条件1: 条件1满足时,做的事情1 条件1满足时,做的事情2 条件1满足时,做的事情3 ...(省略)... while 条件2: 条件2满足时,做 ...
- 解决ssh链接慢问题
1,ssh -v root@ip 2,查看哪里卡住了 一般情况就是卡在debug1: SSH2_MSG_SERVICE_ACCEPT received 3,如果是上面卡住了 修改/etc/ssh/ss ...
- Custom Configuration 的两种方法:2.XmlSerializer XmlAttribute
第二种:XmlSerializer XmlAttribute 1.CustomConfiguration.xml 2.CustomConfigurationSetting.cs 3.CustomCon ...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_8 spring中bean的细节之生命周期
区分单例还是多例对象 单例的几个状态 初始化方法和销毁方法 设置成我们定义的方法 测试 有创建和初始化.但是没有销毁,.对象一直没有销毁的方法 main方法是一切应用程序的入门.当main方法结束后. ...
- Group By查询
1.概述 “Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理. 2.原始表 3.简 ...
- Linux服务器重启后IP变掉的处理方式
工作中有一台服务器为物理机,重启后IP就变掉了,影响到了使用,于是将服务器上的IP配置为静态方式,问题得以解决,具体如下: 1.登陆Linux服务器,cd /etc/sysconfig/network ...
- 获取重复字符串的range,设置attributedText
之前项目的需求是未读人员显示绿色,已读人员显示黑色,测试今天提bug说存在未读人员显示的黑色...这就尴尬了,我完全不知道为啥,经过打断点调试程序,终于找到问题:就是他只会获取到第一个想等字符的ran ...
- dapper使用时性能优化
数据库中类型 Area 数据库类型 varchar dapper 来操作数据库,不能直接写 sql Area=@Area) //dapper 对C#中的字符串类型 默认是对应数据库nva ...
- APP Store上架QA&注意事项
一. App Store上架费用,要多少钱. 这个因产品而异,一般是6000-10000元人民币. 二. App Store上架周期,要多久过. 这个因产品而异,正常的话一周内,如果产品老是出问题,被 ...