CZA
从 p=0…3,常规的方法似乎无从下手,如果从位置上考虑的话,每次要同时转移两个位置,看起来不可行。从编号上考虑呢?
我们从n到1依次考虑这n个元素,不断扩大环的大小。
n显然放下就行了,n−1放在环的另一侧,此时n和n−1有之间有两个空位可以接着放东西,
接着再将n−2放在环里,此时有两种方案,对应的顺序是不一样的,
此时有3个位置可以放,每放入一个元素x时,只用考虑x+1,x+2,x+3这三个元素周围可以放的位置就可以了,
我们用3位二进制数表示x+1和x+2中是否有空位,x+1和x+3是否有空位,
以及x+2和x+3之间是否有空位。注意只是记录之间是否有空位,不考虑中间有没有其它元素。因为需要考虑限制关系,所以我们还得知道x+1,x+2,x+3的顺序。我们另开一维0/1表示是否是逆时针顺序。转移方程比较复杂,主要靠手动分类讨论,还是画图比较好理解。
鹿目圆生日快乐!
LAS
一个环,点是食物,边是人。我们要把每条边定向。
环的细节自己判一下。对于 ai>2×ai+1 的人肯定直接选 i 食物。
如果整个环中没有这种情况,就直接朝一个方向选,很显然这样做是对的。
否则,对于每个一个已选的食物,我们直接让 ai←ai2
并把这个人删掉。很显然,这样删完之后,环形成了若干条链。对于每条链,都有这样一条性质: ai∈[aj2,aj×2]。因此,我们可以直接把链上的点权最小值抠出来,并以它为分界点,左边的选左边的食物,右边的选右边的食物。这样可以保证方案是对的。
You are the Miserable
首先重复的肯定不优,明显无用的肯定不优,相跨超过2的肯定不优,两次询问必须是紧贴的。
然后根据题意模拟一个凸多边形,可以先整一个循环链表,当有对角线的时候,就可以将链表断开。
已经被划分出去的点要标一个vis,要不然后面可能会判漏。
随机数生成器
不难发现包含其他区间的区间对答案是没有影响的,这点与ZJOI线段树不同,
然后和之前的思路一样,维护方案数,因为概率=方案数/总方案数,期望=∑概率*值。
用容斥将难以计算的恰好为i转化为≤i。
用未来DP,f[i][j] 表示前 i 个位置放了 j 个点且第 i 个位置必须放点,覆盖所有左端点 ≤i 的区间的方案数。
也就相当于每个区间内都存在一个 ≤i 的数。
我们不妨枚举 j 表示有多少个数 ≤i ,那么 h[i] 就等于:g[j]×ij×(x−i)n−j
区间覆盖即可。
不可见的整数 Invisible Integers
看到这个范围,想到了状压,
CODES
锻炼搜索的题目。
州区划分
子集卷积。
网络收费
树形 + 状压
秘密袭击 coat
拉格朗日差值或Minmax容斥。
林克卡特树
凸性质挺难想。
calc
拉格朗日插值暴力题。
Mousetrap
题解 写得很不错。
太极剑
构图,断点。
狼人游戏
树形DP。
Crash 的文明世界
推式子。
LJJ爱数树
树形DP,状态简化。
分零食
生成函数。
绳
分析,实现,优化。
Akvizna
WQS二分,推式子。
俄罗斯方块
轮廓线DP,类似插头DP。