04 2022 档案
摘要:Daizhenyang's Coin 有连个人互相博弈,给出若干个硬币,其中有 个硬币正面朝上,其余背面朝上,每个人每次操作:选择 1、2、3 个(可不连续)的硬币,将其翻面。并保证最左边的硬币一定得是由正面朝上翻转到背面朝上,如果没有办法进行操作,则判定输,求判断当前是否是先手必输 翻硬币
阅读全文
摘要:Game 两个人互相博弈,每次轮流操作,给出 个盒子,每个盒子中有0个或若干个石头,编号为 到 ,每次操作可以选取一个非空盒子 A 和一个盒子 B,要求 B < A 且 (A+B) % 2 == 1 且 (A+B) % 3 == 0,并将A中的任意数量的石子放到B中,至少放一个
阅读全文
摘要:Nim or not Nim? 两个人进行博弈轮流操作,有 堆石子,每堆石子有 个石子,每次操作可以取一堆里的若干个石子,但至少一个,或将一堆石子分成两堆 尼姆博弈变种 打表 可以通过sg函数先打表分析每一种情况,再得出结论 $sg[i] = mex(sg[0], sg[1],.
阅读全文
摘要:Good Luck in CET-4 Everybody! 一堆石子,只能取2的幂次方个,不能取的就输,问先手是否必胜 sg函数模板 这是一维的sg函数, 代表只剩下i个石子的时候就是先手必输态,其余的就是先手必胜态 sg函数有点类似于记忆化搜索 #include <iostr
阅读全文
摘要:邂逅明下 两个人进行博弈,给出三个数字, 代表一堆有n个石子的石堆,两个人每次至少取 个石子,至多取 个石子,拿走最后一个石子的人输,问先手是否必胜 巴什博弈拓展 显然可以看出,后手可以将两人同时拿的数量控制在 内,又因为最后一个拿走石子的人会输,因
阅读全文
摘要:取石子游戏 有一堆石子,第一个人能取任意个,但不能全取完,接下来每个人取的数量至多不超过上一个人取的两倍 把最后一个石头拿走的为胜 博弈 打表 最后发现是斐波那契数列,后手必胜 AC代码 #include <iostream> #include <algorithm> #include <map>
阅读全文
摘要:Brave Game 一堆石子,有 个,两个人每次至多拿 个,且至少拿 个,刚好取完最后一个石子的胜利 巴什博弈 对 取模即可,若为 则后手必胜,否则先手必胜 因为先手不管怎么取,后手都能使得两人摸取的石子总数为 #include <ios
阅读全文
摘要:Euclid's Game 两个人进行博弈,轮流操作,给出两个数 和 ,假设 ,则每次操作可以使得 ,k为任意整数,并且必须保证操作后的 必须为正整数,先使得最小的数为 的获胜 博弈论分析 由于给出的 和 非常大,所以不能
阅读全文
摘要:Calendar Game 给出一个终止日期和开始日期,两个人每次只能有两种方式移动的合法日期,如果日期不合法,则不能移动: 移动到当前日期的下一天 移动到当前日期的下一月同一天 先到达终止日期的获胜,不允许到达终止日期后的日期 博弈论 简单的一个博弈图分析,分析一下必胜态和必输态即可,日期处理上面
阅读全文
摘要:Play a game 两个人进行博弈,给出 的格子,棋子起始点在角落,两个人交叉地进行操作,每次只能移动到一个相邻的格子(四个方向),并且访问过的格子不能再访问,如果走到不能走就算输,问先手必胜还是后手必胜 博弈 看了别人的题解才知道 相邻的格子可以成对成对地组合,这样就可以使得先手进
阅读全文
摘要:Buggy Robot 有一个机器人在图里,给出初始位置和末位置,图中有障碍的格不能走,同时给出含有4种指令的指令行:上下左右。问最少在指令行中添加或删去多少个指令,使得机器人能走到终点 如果碰到边界或障碍物则不移动 bfs + dp 这个思路的模拟赛的末尾才想出来,debug花了点时间,但是还是没
阅读全文
摘要:Distributing Ballot Boxes 二分答案 #include <iostream> #include <cstdio> using namespace std; typedef long long ll; const int maxn = 5e5 + 10; int n, m, n
阅读全文
摘要:Queue n个人在排队,每个人的身高都不一样,同时每个人给出他前面比他高的人的数量,或者是他后面比他高的人的数量,要求构造一个排队的顺序(以身高作为代表),能够在满足以上条件的情况下字典序最小 树状数组 + 二分 可以直接用vector的insert做,但是会超时 为了保证字典序最小,我们首先将身
阅读全文
摘要:Cup 一个圆柱体的水壶,问体积为V的水,能装满水壶到什么高度 二分 直接二分枚举高度求解即可,计算圆台的体积:补成一个圆锥来算 #include <iostream> #include <cstdio> #include <cmath> #include <algorithm> using nam
阅读全文
摘要:Flyer 给若干个人派传单,派n次传单,每次都会给出一个a, b, c,代表在给在编号在 区间内,并且编号为 的人派一张传单 最后询问有谁是被派了奇数张传单,并且保证这种人最多只有一个 二分区间 这题的突破口在于奇数传单的人只有一个,由于偶数+偶数为偶数,偶数+
阅读全文
摘要:River Hopscotch 给出n个点,最多能删除m个点,使得两个点之间的最短距离最大,问这个最大距离是多少 二分 直接二分答案,lower_bound,因为最后搜索到的是大的,所以要检查一下是否要减一,或者上界放大一点点,直接-1就行 检查的话就检查当前这个和前面里的最近的没被删掉的点的距离,
阅读全文
摘要:Pie 有f+1个人分n个蛋糕,并且要求每个人分到的蛋糕得是从同一块上切下来的,并且要求每个人分到的蛋糕大小是一样的,问最多能切多大的蛋糕 二分 直接枚举答案,复杂度 #include <iostream> #include <cstdio> #include <algorith
阅读全文
摘要:Median 给n组数,将其两两之差列为新的数列,求这个数列的中位数 二分套二分 很容易想到是二分答案,查看有多少个数小于等于这个答案 抽象的地方在于查询有多少个差小于等于当前的差,通过二分在原数组的位置来判断,有多少个数 ,从而判断以$pair(a[
阅读全文
摘要:For Gamers. By Gamers. 给出初始金币数 给出n个兵种,每个兵种有三个属性:分别代表购买一只该兵种的代价,伤害,血量 同时给出m个敌人,每个敌人有两个属性分别代表该敌人伤害,血量 每一次只面对一个敌人,同时刷新金币数(金币数回复初
阅读全文
摘要:Drying 有n件衣服和一个吹风筒,每件衣服有的潮湿度,每次只能用吹风筒吹一件衣服,如果选择自然风化,则衣服的潮湿度-1,如果选择用吹风筒则潮湿度-k 问最快需要多久能将衣服全部吹干 二分 二分枚举答案,答案的可行性具有单调01分布 直接检查就行,因为使用吹风筒就没有了潮湿度-1,所以仅
阅读全文
摘要:Read Time 磁带上有n个头,每个头每秒可以向左滑动,或者向右滑动,同时有m个特定的位置需要滑过(n个头初始所在的位置已经被记为滑过),问最少需要多少秒,能够完成任务 二分 非常巧妙的题,由于给出的答案是呈一个01单调分布的,因此可以使用二分搜索答案 难点在于查询是否可行,我们将头从左到右进行
阅读全文
摘要:Hamburgers 给出含有'B','S,'C'的字符串,然后现已有这个字符若干个,买入一个不同的字符需要花费一定的代价,给出当前金额,问最多能凑出多少个字符串 二分 或者 暴力 对于二分来说,枚举答案,然后用O(1)去查询,注意上界是金额+300(可能存在代价全是1,初始又能凑几个字符串的情况)
阅读全文
摘要:New Year's Problem 有n个人,m个商店,每个商店有n个物品,也有对应的,代表第i个人对这个物品的好感度。现在要求进入n-1个商店,为每个人购买一件物品,使得最后n个人中,获得物品的最低好感度最高 二分 一开始以为是贪心或者排序,没往二分上面想,想了半天的暴力也没想到有什么
阅读全文
摘要:Keshi Is Throwing a Party 选择尽可能多的人,满足下列条件,每个人自身有一个价值,还有一个和值,表示第i个人能接受有个人价值比他高和个人价值比他低。第i个人的价值就是i 二分 一开始分析的时候觉得只要维护一个的递减序列和$b_
阅读全文