摘要:
题意:给一个DAG,最多可以删去k条边,求字典序最大的拓扑序列。思路:贪心选取当前可选的最大编号即可,同时用线段树维护下。一个节点可以被选,当且仅当没有指向它的边。 1 #include 2 #include 3 #include 4 #include 5 #include 6... 阅读全文
摘要:
题意:给定x,求有多少个10^8以内的数满足这个数乘以x以后,最高位到了最低位。设最高位的数字和剩余长度,列等式推理即可。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #incl... 阅读全文
摘要:
题意:f[i] = min(f[i+L]~f[i+R]) + x,计算f数组。从大到小计算即可,用线段树维护一下。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #inc... 阅读全文
摘要:
暴力的背包: 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 ... 阅读全文
摘要:
题意:a[n] = ([n/1] + [n/2] + ... + [n/n]) & 1 == false,找出a数组的规律来就ok了。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5... 阅读全文
摘要:
思路:情况只可能是2种,两个人一直向一边走,或者有一个人折回来,对于后一种,枚举折回来的位置就行了。不过要注意两个方向都要处理下。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #... 阅读全文
摘要:
给定n种物品,每种物品需要ti时间生产出来,生产出来以后,每单位时间可以创造wi个价值。如果需要创造至少W个价值,求最少时间。思路:dp[j]表示用时间j所能创造的最大价值,则有转移方程:dp[j + t[i]] = max(dp[j + t[i], dp[j] + t * w[i]])。另外是否需... 阅读全文
摘要:
思路:用一个数组记录最近k次的出现位置,然后在其附近更新答案。具体见代码: 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #include 6 #include ... 阅读全文
摘要:
思路:裸并查集模板啊。。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include 10 #include 11 #include 12 #in... 阅读全文
摘要:
题意:单点更新,区间LCIS(最长连续递增序列)查询。具备区间合并维护的性质,不用线段树用什么~ 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #include 6 ... 阅读全文
摘要:
题意:x轴上有n棵树,询问你站在某个点的视角。从左至右,单调队列(类似凸包)维护下。我强迫症地写了个模板QAQ 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 ... 阅读全文
摘要:
题意:http://acm.hdu.edu.cn/showproblem.php?pid=1506看图一目了然。两个方向单调队列维护下。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #includ... 阅读全文
摘要:
题意:求矩形内最大值。二维RMQ。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #include 6 #include 7 #include 8 #incl... 阅读全文
摘要:
题意:给一个树编号0~n-1,一个数组a[i]为节点i在树上走的最大距离(不重复点),然后求最大的区间,使得区间最大差异小于某个值。dfs求出每个数组,同时区间化。枚举区间左边界,右边界同样递增,类似单调队列,区间最值用RMQ查询(常数小)。 1 #pragma comment(linker, "... 阅读全文
摘要:
题意:给一个地图,'x'走一步代价为2,'.'走一步代价为1,求从s到t的最小代价。裸优先队列。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #include 6 ... 阅读全文
摘要:
题意:求满足最大元素与最小元素之差在一定范围的连续区间的最大长度。单调队列经典应用。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include ... 阅读全文
摘要:
思路:由于只能交换相邻的数,所以每次最多减小1个逆序对(且如果存在逆序对那么肯定可以减小1个)!于是乎。。就是统计逆序对的裸题了。树状数组或归并都行。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #in... 阅读全文
摘要:
题意:统计一个数出现了多少次,统计后删去它所有的出现。思路:乱搞。。自己没事写的hash,不过赶脚效率有点低。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #inclu... 阅读全文
摘要:
思路:按顺序处理,新建一堆然后向左右合并,不过巧妙地用了标记数组来记录和统计答案。 1 #pragma comment(linker, "/STACK:10240000,10240000") 2 3 #include 4 #include 5 #include 6 #includ... 阅读全文
摘要:
思路:插入的数按指数级增长,所以范围内最多存在logR个数。并且最近i次插入的数,首位置为2^(i-1),且每隔2^i出现一次,于是暴力之。。可以用插入排序维护,也可查询时再排下序。一: 1 #pragma comment(linker, "/STACK:10240000,10240000") ... 阅读全文