摘要: 常用算法设计和优化策略(本蒟蒻不定期更新) 下面是紫书上讲的常用算法设计策略和优化策略: 分治法:将问题分成相同的独立子问题求解。拆分出的问题必须有最优子结构性质(子问题求出的是最优解) 动态规划。本质是:对于一个问题,通过定义状态与状态间的关系来 分解问题 。利用单阶段问题之间的联系,或者同一阶段阅读全文
posted @ 2018-03-01 23:14 pechpo 阅读(23) 评论(0) 编辑
摘要: 飞扬的小鸟(背包) Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。为了简化问题,我们对游戏规则进行了简化和改编:游戏界面是一个长为 n ,高为 m阅读全文
posted @ 2018-05-23 20:14 pechpo 阅读(1) 评论(0) 编辑
摘要: NOIP2013 货车运输(最大生成树,倍增) A 国有 n 座城市,编号从 1 到 n,城市之间有 m 条双向道路。每一条道路对车辆都有重量限制,简称限重。现在有 q 辆货车在运输货物,司机们想知道每辆车在不超过车辆限重的情况下,最多能运多重的货物。n=1e4,m=5e4. 首先肯定是跑一个最大生阅读全文
posted @ 2018-05-23 14:50 pechpo 阅读(2) 评论(0) 编辑
摘要: 火柴排队(归并,逆序对) 给出数组a和b,每个数组有n个数,问如何重排列,使得$\sum(a_i b_i)^2$最大。 首先转换一下式子,发现$(a_i b_i)^2=a_i^2+b_i^2 2a_ib_i$,因此只要最小化$a_ib_i$即可。 有个好东西叫做排序不等式,他告诉我们 。因此我们只要阅读全文
posted @ 2018-05-23 10:10 pechpo 阅读(2) 评论(0) 编辑
摘要: [A/C 2007] 数据备份(网络流,堆) 给你N各点的位置和K条链,需要用这些链把2K个点连起来,使得链的总长最短。可以随意选择要链的点。n=100000。 这道题居然可以用堆…… 首先,不能把区间一股脑加进去,因为有点可能会被重复连接。处理方法是这样的:若选择了第i个区间,那就把i,区间i 1阅读全文
posted @ 2018-05-22 19:39 pechpo 阅读(3) 评论(0) 编辑
摘要: 御坂网络(枚举基准,二分图) 现在有n个A点,m个B点(n,m include include include using namespace std; const int maxn=205 2, INF=1e9; const double PI=3.1415926535898; double sq阅读全文
posted @ 2018-05-22 10:25 pechpo 阅读(5) 评论(0) 编辑
摘要: 替罪羊树 替罪羊树是一种不用旋转的平衡树,并且速度还不错,大约在treap和splay之间吧(treap就是那么快)。 这里用rank和xth操作实现了pre和next操作。注意rank操作找的是 =x且最小的编号,这样pre只需要查找rank(x) 1,next只需要查找rank(x+1),很优雅阅读全文
posted @ 2018-05-20 10:35 pechpo 阅读(6) 评论(0) 编辑
摘要: CF 980D Perfect Groups(数论) 一个数组a的子序列划分仅当这样是合法的:每个划分中的任意两个数乘积是完全平方数。定义a的权值为a的最小子序列划分个数。现在给出一个数组b,问权值为i的b的子串个数。 这题意真不是人类智慧能轻易描述的。据说此题在比赛场上读题30min,做题5min阅读全文
posted @ 2018-05-17 20:45 pechpo 阅读(8) 评论(0) 编辑
摘要: CF 983B XOR pyramid(区间dp,异或) 若有一个长度为m的数组b,定义函数f为: $f(b) = \begin{cases} b[1] & \quad \text{if } m = 1, \\ f(b[1] \oplus b[2],b[2] \oplus b[3],\dots,b[阅读全文
posted @ 2018-05-16 22:22 pechpo 阅读(23) 评论(0) 编辑
摘要: CF 984C Finite or not? (数论) 给定T(T0$,$c_i 0$,那么设$b'=(b, q)$,那么不停将$b'$除$q$得到$q'$,最后剩下的数就是D。现在只需判断D是否为1即可。阅读全文
posted @ 2018-05-16 20:37 pechpo 阅读(13) 评论(0) 编辑
摘要: CF 979D Kuro and GCD and XOR and SUM(异或 Trie) 给出q( include using namespace std; const int maxnum=1e5+5, maxq=1e5+5, maxn=maxq 17 17, INF=1e9; //maxnum阅读全文
posted @ 2018-05-16 19:39 pechpo 阅读(13) 评论(0) 编辑