摘要: 为什么SDOI省选一年考两次容斥原理? 我们很容易发现>=k个相等时很好计算的 但是我们要求恰好k个,那么我们容斥即可 至于计算>=k个相等,首先我们枚举相等位置,对每个串对应位置做一遍hash就可以了 阅读全文
posted @ 2016-04-14 21:39 _Vertical 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 如果没有限制,答案直接用隔板法C(m-1,n-1) 对于>=x的限制,我们直接在对应位置先放上x-1即可,即m=m-(x-1) 对于<=x的限制,由于限制很小我们可以利用容斥原理将它转化为上面的>=x的限制 即减去1个不满足的 加上2个不满足的 减去3个不满足的 …… 之后就是组合数的计算,对于一个 阅读全文
posted @ 2016-04-14 21:33 _Vertical 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 首先对于查询操作就是裸的COT QAQ 在树上DFS建出主席树就可以了 对于连接操作,我们发现并没有删除 所以我们可以进行启发式合并,每次将小的树拍扁插入大的树里并重构即可 写完了之后第一个和第二个点迷のRE 然后又重新写了一遍就A了(并不知道为什么,难道第一遍写挫了? 阅读全文
posted @ 2016-04-14 21:24 _Vertical 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 一大堆边界一开始并不知道,胡乱判了几个之后一直WA 无奈之下只好去下载了数据,然后就疯狂判各种奇怪的边界了 刨去边界问题 首先我们考虑a=1的情况 x1+k*b=t(mod p) ex_gcd即可解 考虑a>1的情况 令S=X+b/(a-1) 原式就变成了一个等比数列 即S1*a^k=(t+b/(a 阅读全文
posted @ 2016-04-14 21:21 _Vertical 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 首先直径是很好求的,先以任意点为根DFS求出最远点,再以最远点为根求出第二个点 两个点之间的距离即为直径 显然对于第二问,答案是直径上的某一段,且满足不可向左右扩展出跟直径等长的路径 那么我们就可以暴力枚举直径上的点,看看它是否可以向右和向左扩展即可 阅读全文
posted @ 2016-04-14 21:13 _Vertical 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 样例真是坑爹,给了和没给一样 显然对于Bob而言,只需要把P全部加到流量最大的那条边上显然对他是最有利的 问题就变成了求在最大流限制下使流量最大的边最小 二分之后将每条容量大于二分值的边减小到二分值并且跑网络流判断最大流是否改变即可 阅读全文
posted @ 2016-04-14 20:33 _Vertical 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 做法参见JSOI 冷冻波 (话说那个题目还需要写计算几何判断是否可以打到,这个题目直接给定0,1了QAQ) 二分+最大流判定即可 阅读全文
posted @ 2016-04-14 20:30 _Vertical 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 分析一下样例就可以知道,求的实际上是从左下角到右上角的最长路 因为对于任意不在这个最长路的上的点,都可以通过经过最长路上的点的路径将这个点的价值减光 (可以用反证法证明) 之后就是一个非常NOIP的DP了 阅读全文
posted @ 2016-04-14 20:27 _Vertical 阅读(290) 评论(0) 推荐(0) 编辑
摘要: 做法和APIO2012派遣 那道题目类似 在树上DFS,维护当前子树的小根堆 因为需要合并孩子们的信息,使用左偏树就可以了 每次弹出死亡骑士,对剩余骑士打上奖励标记 至于标记的下传和更改,只需要每次在需要遍历到这个点之前push_down就可以了 阅读全文
posted @ 2016-04-14 20:24 _Vertical 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用了i条边使得点集S没有连通的概率 设cnt(S)表示点集S内部的边的数量 我们可以知道f(S)(i) 阅读全文
posted @ 2016-04-14 20:20 _Vertical 阅读(608) 评论(0) 推荐(0) 编辑