摘要:
P1558 色板游戏 状压线段树 "题面 洛谷P1558" 每次不同颜色覆盖一段区间,每次询问一段区间有多少种颜色 因为颜色数$T$很小,使用二进制表示状态当前区间有那些颜色,二进制第$i$位表示此区间是否含有$i$这种颜色,线段树合并信息时左右儿子信息或一下就好了。 读入 炸了我好久,最后换成 就 阅读全文
摘要:
P2184 贪婪大陆 用树状数组记录前$i$长度共有$sum1$个区间结束,前$j$长度共用$sum2$个区间开始,答案显然为$sum2 sum1$。 善用指针减少代码量: 阅读全文
摘要:
APIO2009 抢掠计划 Tarjan spfa/DAG DP "题面" 一道$Tarjan$缩点水题。因为可以反复经过节点,所以把一个联通快中的所有路口看做一个整体,缩点后直接跑$spfa$或者dp就好了。 在DAG上跑dp,复杂度$O(n)$,而$spfa$为$O(kn)$,所以还是优先选择d 阅读全文
摘要:
[HNOI2009]最小圈 分数规划 spfa判负环 "题面" 思路难,代码简单。 题目求圈上最小平均值,问题可看为一个 0/1规划问题 ,每个边有$a[i],b[i]$两个属性,$a[i]=w(u,v),b[i]=1$,问题转化为$min(\frac{\sum^{k}_{i=1}a[i]}{\su 阅读全文
摘要:
$spfa dfs$优化板子 快速判断是否存在负环(没负环时不要作死用) cpp bool spfa(int u){ vis[u]=1; for(register int i=head[u];i;i=nxt[i]){ int v=vv[i]; if(dis[v] 阅读全文
摘要:
差分约束总结 问题模型 求解由若干不等式限制的一组最大或最小未知数解 思想 首先我们来看看最短路的松弛操作,以$spfa$为例: 即当图中存在$dis[v] dis[u]+w$时,就立刻松弛使其满足$dis[v]\le dis[u]+w$,所以我们可以容易得到,当一张图跑完一次最短路后, 对于任 阅读全文
摘要:
[ZJOI2005]午餐 "题面 洛谷P2577 " 思路 如果题中只有一个窗口,那么此题就是一道贪心水题(接水),显然贪心策略是 让吃饭久的人先吃 。但是此题有两个窗口,所以贪心后,需要动态规划决定让第$i$个人去第一或第二窗口吃饭。 dp状态$dp[i][j]$表示到第$i$个人,第一个窗口已排 阅读全文
摘要:
悬线法DP总结 问题模型 求满足某种条件(如01交替)的最大矩形(正方形) 思想 先预处理出$ml[i][j],mr[i][j],mt[i][j]$,分别表示当前位置$(i,j)$能向左扩展到的 最左边 的编号、能向右扩展到的最右边的编号、能向上扩展到的最大高度。 然后在做$DP$时,除第一行,每行 阅读全文
摘要:
P4568 飞行路线 分层图最短路 分层图最短路 问题模型 求最短路时,可有$k$次更改边权(减为0) 思路 在普通求$Dijkstra$基础上,$dis[x][j]$多开一维$j$以存已用了多少次机会,然后每次松弛时,做完普通松弛操作后,还要使用一次机会(如果可以),类同$DP$。 每次普通松弛: 阅读全文