2021.07.19 P2294 狡猾的商人(差分约束) [P2294 HNOI2005]狡猾的商人 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.差分约束最长路与最短路 题意: 给出每个时间段具体账单,分析是否矛盾. 分析: 把每段时间起始时间前挪一个月,把相邻时间段连成连续的时间段,建正向边.如果只建正向边,对于开头是未知账单的来说,没法进行约束,因此建反向边.我们只需要知道所有边是否符合规矩,而不是某个具体的最大值或最小值,所以跑最长路或最短路都可以(亲自试…
[传送门] (https://www.luogu.org/problemnew/show/P2294) 解题思路 差分约束.先总结一下差分约束,差分约束就是解决一堆不等式混在一起,左边是差的形式,右边是常量,然后要求差最小值最大值或判无解的算法.首先对于下面几个不等式来说: \[ X_0-X_1<=5\\ X_2-X_3>=2\\ X_1-X_3<=1\\ X_0-X_2<=3 \] 现在我们要求\(X_1-X_3\)的最大值,我们观察第一个式子(其实哪个都行),第一个式子可以变\…
好像很多人用并查集写的... 前缀和, 则 sumt - sums-1 = v, 拆成2条 : sumt ≤ sums-1 + v, sums-1 ≤ sumt - v 就是一个差分约束, 建图跑SPFA.. 想起之前codeVS某场月赛T1有些人用带权并查集..然而我是差分约束水过去的... ------------------------------------------------------------------------------ #include<cstdio> #incl…
一个差分约束模型,只需判一下有没有负环即可. #include <bits/stdc++.h> #define N 103 #define M 2004 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int edges; int hd[N],to[M],nex[M],val[M],d[N],vis[N]; void add(int u,int v,int c) { nex[…
题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=1202 题目大意: 刁姹接到一个任务,为税务部门调查一位商人的账本,看看账本是不是伪造的.账本上记录了n个月以来的收入情况,其中第i 个月的收入额为Ai(i=1,2,3...n-1,n), .当 Ai大于0时表示这个月盈利Ai 元,当 Ai小于0时表示这个月亏损Ai 元.所谓一段时间内的总收入,就是这段时间内每个月的收入额的总和. 刁姹的任务是秘密进行的,为了调查商人的账本,她只好跑到…
2021.07.19 P2624 明明的烦恼(prufer序列,为什么杨辉三角我没搞出来?) [P2624 HNOI2008]明明的烦恼 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.prufer序列 2.组合数学 题意: n个点,有部分点已经确定度数,有的随意,问有多少棵树满足已知度数要求. 分析: 还能分析个锤子出来,prufer序列啊,记得开高精,杨辉三角被我玩儿废了,搞不定,我太菜了. 设已知度数的点有k个,总度数-k为s,一共有n个点. 则这k个点能形成…
2021.07.19 BZOJ2654 tree(生成树) tree - 黑暗爆炸 2654 - Virtual Judge (vjudge.net) 重点: 1.生成树的本质 2.二分 题意: 有一张无相带权连通图,每一条边都是黑色或者白色,求一棵恰好有need条白色边的最小生成树. 分析: 我们可以把每一条边按照一定优先级进行排序,当然,手动优先级(手动狗头),对于同一个权值的边,我们规定白色边比黑色边优先级高.但是对于权值特别小的的黑色边,在构成一棵生成树时,搞不好所有边都是由黑色边构成的…
2021.08.16 P1260 工程规划(差分约束) 重点: 1.跑最短路是为了满足更多约束条件. P1260 工程规划 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 造一幢大楼是一项艰巨的工程,它是由n个子任务构成的,给它们分别编号1,2,-,n(5≤n≤1000).由于对一些任务的起始条件有着严格的限制,所以每个任务的起始时间T1,T2,-,Tn并不是很容易确定的(但这些起始时间都是非负整数,因为它们必须在整个工程开始后启动).例如:挖掘完成后,紧接着就要打地基…
P2294 [HNOI2005]狡猾的商人 对于每个$(x,y,w)$,连边$(x-1,y,w),(y,x-1,-w)$,表示前$y$个月的收益比前$x-1$个月的收益大$w$ 这样题目就转化为询问图中是否有非零环存在 于是我们找找正环(最长路)和负环(最短路)就好了 你发现其实正环和负环是等价的 所以你只要求其中一个就行了 #include<iostream> #include<cstdio> #include<cstring> using namespace std…
裸的差分约束 dfs判断负环,如果有负环就false,否则就是true 注意有多组数据,数组要清空 #include <cstdio> #include <algorithm> #include <queue> #include <cstring> #include <iostream> using namespace std; ; ; ,u[MAXM],v[MAXM],w[MAXM],first[MAXN],next[MAXM]; int vi…