POJ2983 查分约束系统】的更多相关文章

题意:        给你n个点,然后给你两种情况,P a b c,表明a在b的北边c那么远,V a b 表明a在b的北边(距离最少是1),问你这些条件是否冲突. 思路:       一开始想用带权并查集,先处理P在处理V,想想感觉不对,还是查分约束吧,查分约束处理这个题时间和建图都简单,首先查分约束是根据最短路(或最长路)的不等式关系建图的,给你一个图,跑完最短路对于边<a ,b> 会有dis[b] <= dis[a] + map[a][b]; 则 dis[b] - dis[a] &l…
链接1275Cashier Employment 题目大意就是说有一些人来应聘一个超级市场的工作,每个人的应聘的起始时间在0~23时之间,而超市在时间i需要R[i]个工作人员,而每个人的工作时间都是8小时,问最少需要多少人使得超市一天24小时满足超市的工作人数的需要. 设工作时间为1~24时,S[i]表示前i个小时所需要的工作人数的最小值,那么结果就可以表示成0为起点,24为终点的最短路.下面是约束不等式: 0<=S[i] - S[i-1]<= t[i]               (1<…
就根据题目中给的约束条件建图就行了 需要注意的是,我们要做的是最长路,因为需要约束每个点都是大于0 那么可以建一个超级源指向所有点,超级源的dis是1,边长为0 那么这样做最长路就可以了 好了我们这么写完了,之后发现re了,然后改大了点数组发现tle了.... 然后我也不知道怎么改,超级源连接所有点的时候,是for i:=1 to n do 的,这 样建完图之后,再做spfa相当于直接将n-1的点放入队列中,然后我改了下 连接的时候for i:=n downto 1 do 那么相当于将1-n放入…
/* 加深一下对查分约束的理解 建图的时候为了保证所有点联通 虚拟一个点 它与所有点相连 权值为0 然后跑SPFA判负环 这题好像要写dfs的SPFA 要不超时 比较懒 改了改重复进队的条件~ */ #include<iostream> #include<cstdio> #include<cstring> #include<queue> #define maxn 40010 using namespace std; int n,m,num,head[maxn…
/* 暴力查分 n*n */ #include<cstdio> #include<cstring> #include<iostream> #define maxn 100010 using namespace std; ],r[]; int main() { scanf("%d%d",&n,&m); ;i<=n;i++) scanf("%d",&a[i]); ;i<=n;i++) ;j<=…
/* 查分约束. 给出的约束既有>= 又有<= 这时统一化成一种 Sb-Sa>=x 建边 a到b 权值为x Sb-Sa<=y => Sa-Sb>=-y 建边 b到a 权值为-y 然后跑最短路 SPFA 判断到不了终点 判断负环的死循环. */ #include<iostream> #include<cstdio> #include<cstring> #include<queue> #define maxn 20010 us…
/* 数组开大保平安. 查分约束: 输入的时候维护st和end 设每个点取元素di个 维护元素个数前缀和s Sbi-Sai-1>=ci 即:建立一条从ai-1到bi的边 权值为ci 表示ai到bi的最小取元素个数 然后跑st到end的最长路 (建边就已经保证了最优) 最后 dis[end] 即为end的前缀和 即为st到end 符合每一个约束的最小去元素值 同时查分约束也满足性质 Sai-Sai-1>=0 Sai-1-Sai>=-1 */ #include<iostream>…
特别鸣谢这段代码的源作者,我的大佬同学\(MetalkgLZH\).由于我没有做什么工作,这篇随笔基本不含相关技术细节. 再次强调,这个程序的主要部分由\(MetalkgLZH\)完成.技术细节与源码可以在他的官网(貌似正在维护)查看.这个程序与\(MetalkgLZH\).\(MiserWeyte\)(我)开发的所有后续版本遵守\(GPL~V3\)协议. Latest update 2019.10.14: 版本V2.2: 1.添加了密码错误以及网络错误时的提示: 2.成绩输出框可手动修改的bu…
Description 给出一个N个点M条边的无向图,经过一个点的代价是进入和离开这个点的两条边的边权的较大值,求从起点1到点N的最小代价.起点的代价是离开起点的边的边权,终点的代价是进入终点的边的边权 N<=100000 M<=200000   Input Output 那个取最大值的操作十分烦人,考虑如何将这个判断去掉. 可以用查分的方式:如果进来的边是小的,那么从大的边出去就要补齐差值. 补齐差值就直接连一条差值为 $d$ 的边即可. 然后跑一个 $Dijkstra$ 即可. #incl…
BZOJ 2330 糖果题解 差分约束系统 + SPFA 题目传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=2330 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求.幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多…
题目链接: https://vjudge.net/problem/POJ-3169 题目大意: 一些母牛按序号排成一条直线.有两种要求,A和B距离不得超过X,还有一种是C和D距离不得少于Y,问可能的最大距离.如果没有输出-1,如果可以随便排输出-2,否则输出最大的距离. Sample Input 4 2 1 1 3 10 2 4 20 2 3 3 Sample Output 27 思路: 设xi为第i头牛的x坐标 对于第一种要求,A和B之间距离不超过X(题目中A<B) 那就有:xB - xA <…
题目描述 Sandy和Sue的热衷于收集干脆面中的卡片. 然而,Sue收集卡片是因为卡片上漂亮的人物形象,而Sandy则是为了积攒卡片兑换超炫的人物模型. 每一张卡片都由一些数字进行标记,第i张卡片的序列长度为Mi,要想兑换人物模型,首先必须要集够N张卡片,对于这N张卡片,如果他们都有一个相同的子串长度为k,则可以兑换一个等级为k的人物模型.相同的定义为:两个子串长度相同且一个串的全部元素加上一个数就会变成另一个串. Sandy的卡片数远远小于要求的N,于是Sue决定在Sandy的生日将自己的卡…
因为题中的操作是区间加法,所以满足前缀相减性. 而每一次查询的时候还是单点查询,所以直接用可持久化线段树维护差分数组,然后查一个前缀和就行了. code: #include <bits/stdc++.h> #define N 200004 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; int n,m,q,tot,rt[N]; LL…
其实盖子已经开发了一个功能更强大的版本,但是那个版本依然基于正方系统,也就是说只要正方系统跪了或者张院士在网站上做点手脚,这个小工具就会失效. 今天给大家的版本虽然功能及其简单.界面极端丑陋,但是通过课程助理的接口,无需通过正方系统,直接获取大家的成绩. 你只要提供你的学号和生日即可查询成绩,简单快速. 绿色程序,需要.net framwork 2.0支持,没有环境的同学可以在这里下载:http://search.microsoft.com/zh-cn/DownloadResults.aspx?…
Burn the Linked Camp Time Limit: 2 Seconds      Memory Limit: 65536 KB It is well known that, in the period of The Three Empires, Liu Bei, the emperor of the Shu Empire, was defeated by Lu Xun, a general of the Wu Empire. The defeat was due to Liu Be…
Yixght is a manager of the company called SzqNetwork(SN). Now she's very worried because she has just received a bad news which denotes that DxtNetwork(DN), the SN's business rival, intents to attack the network of SN. More unfortunately, the origina…
#include<stdio.h> #include<iostream> #include<stack> #include<string.h> using namespace std; #define inf 999999999 #define N 300 struct node { int u,v,w,next; }bian[N*10]; int yong,n,head[N]; void addedge(int u,int v,int w) { bian[…
#include<stdio.h> /* 要善于挖掘隐含条件 dis[v]-dis[u]>=bian[i].w;一个条件(u,v,bian[i].w); dis[i+1]>=dis[i];隐含条件(i,i+1,0); dis[i+1]-dis[i]<=1即dis[i]>=dis[i+1]-1;(i+1,i,-1); >=求最大约束条件,求最长路. <=求最小约束条件,求最短路. */ #include<string.h> #include<…
Code: #include<cstdio> #include<queue> #include<algorithm> using namespace std; const int N=500000+3; const int INF=-233333333+2; int head[N],to[N<<1],nex[N<<1],val[N<<1],d[N],inq[N]; queue<int>Q; int cnt,s,t,n; v…
[HDU] 1548 A strange lift 根蒂根基最短路(或bfs)★ 2544 最短路 根蒂根基最短路★ 3790 最短路径题目 根蒂根基最短路★ 2066 一小我的观光 根蒂根基最短路(多源多汇,可以建树超等源点和终点)★ 2112 HDU Today 根蒂根基最短路★ 1874 通顺工程续 根蒂根基最短路★ 1217 Arbitrage   货币互换 Floyd (或者 Bellman-Ford 判环)★ 1245 Saving James Bond 策画几何+最短路★ 1317…
题目链接:http://codeforces.com/problemset/problem/296/C 题意:给你n.m.k,表示n个数a[i],m个对数的操作,k个对操作的操作.m个操作:数a[l]到a[r]范围内都加上d:k个操作:操作m[l]到操作m[l]范围内都执行一次. 线段树套线段树,但是树状数组好写(区间更新单点查询.本质也是差分),附上学弟差分数组的写法. #include<bits/stdc++.h> #define ll long long using namespace…
好神啊 ~ 打表程序: #include <cstdio> #include <cstring> #include <algorithm> #define N 140000000 #define ll long long #define mod 998244353 #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w"…
题意:       给了由n个数组成的一个数列,然后给你各种区间的和是大于ci还是小于ci啥的,最后问你是否冲突. 思路:       差分约束水题,不过wa了两次,原因处理区间问题的细节马虎了,说下建图吧,这个题目给的是大于或者小于,不是大于等于啥的,其实这个好办,直接进行相应的+-1就能添加等于号了,然后进行关系转换 假如输入的是 a b str c b = a + b + 1 //一开始忘记了区间的这个处理方法忘记+1 那么if(str[0] == g) b - a > c b - a >…
题意:       给你一些a<b的关系,然后有三组询问. 1 当前这组之后如果能确定这n个数的大小关系,那么就输出关系 2 当前时候出现bug,就是和前面如果冲突,那么就不行 3 最后的答案是否是不确定的,就是既没确定关系,也没出现bug. 思路:        这个题目要清楚一点就是处理顺序,上面的三个情况可能会出现重叠的情况,那么就按照上面的1 2 3的优先级来处理,至于判断当前关系是否成立和唯一我用的是差分约束,没有用拓扑排序,差分约束跑完最短路(或者最长路)没有死环,就证明没有bug,…
Description You are given n closed, integer intervals [ai, bi] and n integers c1, ..., cn. Write a program that: reads the number of intervals, their end points and integers c1, ..., cn from the standard input, computes the minimal size of a set Z of…
昨天看了下差分约数系统的含义,其实就是如果有n个变量在m个形如aj-ai>=bk条件下,求解的此不等式的方法. 而这种不等式的解法其实就是转化为图论的最小路的算法求解的.我们将上面的不等式边形后得到aj>=ai+bk正好就可以看做是从ai到aj权值是bk的一条路径最短的边.这样一来,只要依照题目的条件写出一系列这样的不等式,也就是相当于按照题意增加了一些合法的边,也就完全转化为了最短路的算法. 再看这道题,题目说[ai, bi]区间内和点集Z至少有ci个共同元素,那也就是说如果我用Si表示区间…
题意:有n头牛,编号为1到n,对于关系好的ml头牛,al和bl之间的距离不大于dl,关系差的md头牛,ad和bd之间的距离不大于dd,求第1头牛和第n头牛之间的距离 分析:这是一道差分约束系统的题目,先来看一下查分约束系统的资料 http://www.cnblogs.com/void/archive/2011/08/26/2153928.html 于是上述问题可以转换成最短路问题来求解,设d[i]为第1个顶点到第i个顶点的最短距离,d[al[i]]+dl[i]>=d[bl[i]],于是d[bl[…
一.题目 Description Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing along a straight line waiting for feed. The cows are standing in the same order as they are…
初期:一.基本算法: (1)枚举. (poj1753,poj2965) poj1753 话说我用高斯消元过了这题... poj2965 巧了,用高斯消元01矩阵更快(l o l). (2)贪心(poj1328,poj2109,poj2586)(completed) poj1328 题目可以转化为将以每个岛屿为圆心,半径为d的原与x轴的交点构成的共n个区间,分成尽可能少的块,每个块中的区间有个交集(公共区间至少为一个点).那这就是经典的贪心了. poj2109 这似乎用二分+高精就过了好吧...…
4.1 题意描述花花家的超市是 24 小时营业的,现在需要招聘收银员.超市每个小时都需要不同数量的收银员,用 ai 表示一天中 i 点到 i + 1 点这一小时内需要的收银员数量,特别地 a23 表示 23 点到次日 0 点需要的收银员数量.每个时刻可以有多于 ai的收银员工作,但是绝对不能少于 ai 人.现有 n 人应聘,每个人愿意从一个特定的整点开始连续工作 8 小时.花花想知道最少要招多少人.若无解请输出 -1.4.2 输入格式输入第一行包括一个正整数 t,表示测试组数.接下来 2t 行,…