差分约束
文章平均质量分 69
Suryxin.
Suryxin.cn
展开
-
银河「建图 + Tarjan缩点 + 拓扑排序 + 最长路」或者 「差分约束跑最长路 + SPFA的SLF优化」
银河「建图 + Tarjan缩点 + 拓扑排序 + 最长路」题目描述:我们用一个正整数来表示恒星的亮度,数值越大则恒星就越亮,恒星的亮度最暗是 1。现在对于 N 颗我们关注的恒星,有 M 对亮度之间的相对关系已经判明。你的任务就是求出这 N 颗恒星的亮度值总和至少有多大。如果 T=1,说明 A 和 B 亮度相等。如果 T=2,说明 A 的亮度小于 B 的亮度。如果 T=3,说明 A 的亮度不小于 B 的亮度。如果 T=4,说明 A 的亮度大于 B 的亮度。如果 T=5,说明 A 的亮度不大原创 2022-04-05 20:47:28 · 246 阅读 · 0 评论 -
ABC 216 G - 01Sequence「差分约束 」
G - 01Sequence题目描述:一个长度为n的序列,只由0和1组成,给出m个约束条件l, r, c,表示l 到r中至少有c个1,问满足条件的序列是什么,如果有多种,则输出1的数量最小的那种思路:焯,第一次写ABC的G题,没想到是个差分约束板子题,和种树的那道题基本上一模一样,只不过需要使用SLF优化SPFA,而且最后需要进行一次差分dis[i]表示从1开始的序列的前缀和数组,对于l, r, c我们可以转换成sum[r]-sum[l-1] >= c,因为求的是最小值,所以跑最长路,原创 2022-03-19 13:50:09 · 406 阅读 · 0 评论 -
P3275 [SCOI2011]糖果「差分约束」
P3275 SCOI2011糖果题目描述:n个小朋友,m个条件(X,A,B),条件有五种如果 X=1, 表示第 A个小朋友分到的糖果必须和第 B 个小朋友分到的糖果一样多;如果 X=2 表示第 A 个小朋友分到的糖果必须少于第 B个小朋友分到的糖果;如果 X=3, 表示第 A个小朋友分到的糖果必须不少于第 B个小朋友分到的糖果;如果 X=4, 表示第 A 个小朋友分到的糖果必须多于第 B个小朋友分到的糖果;如果 X=5, 表示第 A 个小朋友分到的糖果必须不多于第 B个小朋友分到的糖果;原创 2022-03-04 12:11:40 · 434 阅读 · 3 评论 -
P1993 小 K 的农场「差分约束」
P1993 小 K 的农场题目描述:n个农场,m个条件a比b至少多种了c个植物a比b至多多种了c个植物a和b种的植物数量一样多问是否存在一种情况满足所有条件思路:还是利用前缀和的思维求满足题意的一种情况,可以用最短路,也就是转换成<=条件1:sum[b]−sum[a−1]>=csum[b] - sum[a - 1] >= csum[b]−sum[a−1]>=c,可以转换成 sum[a−1]<=sum[b]−csum[a-1]<=sum[b原创 2022-03-03 21:48:29 · 85 阅读 · 0 评论 -
P4878 [USACO05DEC]Layout G「差分约束」「思维」「前缀和」
P4878 USACO05DEC Layout G题目描述:n个奶牛,奶牛按照编号顺序来排队,可以有多头奶牛在一个位置有两种关系,一种是好基友关系,一种是情敌关系好基友关系要求二者之间的距离小于等于某个数情敌关系要求二者之间的距离大于等于某个数给出所有的好基友关系和情敌关系,问满足所有条件时,1号奶牛和N号奶牛之间的距离最大为多少思路:问最大距离,用最短路,转换成<=号还是用前缀和来处理,不过这次同一个位置可能有多个奶牛,那我们只需要满足 sum[i+1]−sum[i]>原创 2022-03-03 21:38:08 · 88 阅读 · 0 评论 -
P1260 工程规划「差分约束板子题」
P1260 工程规划题目描述:n个工程,每个工程都有一个起始时间,均是非负数,m个限制条件,每个限制条件形如 Ti−Tj<=bT_i-T_j<=bTi−Tj<=b,问你能否找到一种解满足所以限制条件,如果有,则要使最早进行的那个任务和整个工程的起始时间相同,也就是说,T1,T2,…,Tn中至少有一个为0思路:板子题化简后得到 Ti<=Tj+bTi<=T_j+bTi<=Tj+b,也就是从j 到i建立一个权值为 b的边然后建立一个超级源点0,跑最短路,原创 2022-03-03 21:21:10 · 151 阅读 · 0 评论 -
P1250 种树「差分约束」「思维」「特殊的建边」
P1250 种树题目描述:n个点,每个点最多种一棵树,m个要求(b, c, t),表示b到c区间中至少种t棵树,求能满足条件所需要的最少的树的数量思路:求最小值,用最长路,用大于号将树的数组a,进行求前缀和的操作,可以将m个条件转换成 sum[c]−sum[b−1]>=tsum[c] - sum[b - 1] >= tsum[c]−sum[b−1]>=t,进而转化成 sum[c]>=sum[b−1]+tsum[c] >= sum[b - 1] + tsum[c]原创 2022-03-03 21:12:04 · 159 阅读 · 0 评论