洛谷 3275 [SCOI2011]糖果】的更多相关文章

BZOJ原题链接 洛谷原题链接 很明显的差分约束,但数据范围较大,朴素\(SPFA\)判正环求解会\(T\)(理论上如此,但我看到有挺多人用朴素的还跑得挺快..),所以需要优化. 我们所建立的有向图中所有边的权值只有\(0\)或\(1\),而且若图中有环,那么环上所有边的权值必须为\(0\),否则无解. 所以我们可以用\(tarjan\)找强连通分量并判断每个强连通分量有没有包含权值为\(1\)的边,有则无解. 若有解,就进行缩点,最后得到一张\(DAG\),直接跑\(SPFA\)即可(也可按拓…
题目戳这里 N句话题意 有N个人,k个限制,有五种限制 如果X=1, 表示第A个小朋友的糖果必须和第B个小朋友的糖果一样多: 如果X=2, 表示第A个小朋友的糖果必须少于第B个小朋友的糖果: 如果X=3, 表示第A个小朋友的糖果必须不少于第B个小朋友的糖果: 如果X=4, 表示第A个小朋友的糖果必须多于第B个小朋友的糖果: 如果X=5, 表示第A个小朋友的糖果必须不多于第B个小朋友的糖果: 求满足所有要求需要最少的糖果数(每个人至少为1) Solution 一个差分约束题目,然额本蒟蒻还不是很会…
洛谷题目传送门 差分约束模板题,等于双向连0边,小于等于单向连0边,小于单向连1边,我太蒻了,总喜欢正边权跑最长路...... 看遍了讨论版,我是真的不敢再入复杂度有点超级伪的SPFA的坑了 为了保证复杂度,需要缩点后用拓扑排序统计答案.首先全相等的点本质上是相同的,可以缩到一起,所以先来一波Tarjan把0环全缩起来.接着再考虑边权为1的边.如果这时候还出现了环(包括缩点以后的自环),一定是不存在方案的,这是可以用拓扑排序判断.否则,就是个DAG,拓扑排序也可以直接计算出答案. 统计答案要注意…
P3275 [SCOI2011]糖果 差分约束模板题,基本思路就是$d[v]+w[v,u]<=d[u]$,$Spfa$更新方法, 有点套路的是要建立原点,即图中不存在的点来向每个点加边,但同样这是必须的,因为这样做是有意义的,每个小朋友必须要有一颗糖果 #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<queue> #define…
来补一下自己很久以前那个很蒟蒻很蒟蒻的自己没有学懂的知识 差分约束,说白了就是利用我们在求最短路的一个\(relax\)操作时的判断的原理 \[dis[v]>dis[u]+disj(u,v)\] 然后题目中一般会给你一堆不等关系,我们就可以将他们转化成一个点一个点之间的约束关系 然后,这种东西就可以做啦 然后再来说一下这道题目 题目要求,对于给定的\(A,B,C\),使得 \[B-A<=C\] 然后我们发现,这不就是一道裸题吗 于是就可以愉快的码代码了 然后,再提醒一句,由于本题数据过于毒瘤,…
一道条件非常多的差分约束 把\( a < b \)转化为\( a-b \le -1\)就可做了 \( a>b \)的情况同理 若有负环则无解输出-1 注意本题中要求每个人都有糖果 所以假设一个源点\( d_{0} \),使\( d_{i}-d_{0} \ge 1 \  , \ (1 \le i \le n) \) 另外,本题要求得是最小值 \( x_{i}-x_{j} \le a_{k} \)的形式求出的是最大值 要转化成 \( x_{j}-x_{i} \ge a_{k} \)的形式求解最小值…
题目传送门 糖果 题目描述 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,lxhgww需要满足小朋友们的K个要求.幼儿园的糖果总是有限的,lxhgww想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求. 输入输出格式 输入格式: 输入的第一行是两个整数N,K.接下来K行,表示这些点需要满足的关系,每行…
题目描述 幼儿园里有 $N$ 个小朋友,$lxhgww $老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配糖果的时候,$lxhgww$ 需要满足小朋友们的 $K$ 个要求.幼儿园的糖果总是有限的,$lxhgww$ 想知道他至少需要准备多少个糖果,才能使得每个小朋友都能够分到糖果,并且满足小朋友们所有的要求. 输入输出格式 输入格式: 输入的第一行是两个整数 $N$,$K$.接下来 $K$ …
差分约束大坑题 #include<cstdio> #include<cstdlib> #include<algorithm> #include<cstring> #define re register int #define ll long long #define MAXN 100000+10 using namespace std; int n,m; int b[MAXN]; ll d[MAXN]; *MAXN],to[*MAXN],vl[*MAXN],…
题目链接 题解 差分约束 学过的应该都会做 不会的自行百度,这里不多讲 opt=1 连一条长度为0的双向边 opt=2 (u->v) \(len=-1\) opt=3 (v->u) \(len=0\) opt=4 (v->u) \(len=-1\) opt=5 (u->v) \(len=0\) 0到其他点都连一条长度为-1的边(从n到1连玄学的力量, 正着加边会T) 然后spfa最短路即可 Code #include<bits/stdc++.h> #define LL…