题解 P3275 【[SCOI2011]糖果】
清深夏令营机考压轴题,对差分约束的认识还是不够深刻,算法写出来了图没建对,/(ㄒoㄒ)/~~
#define inf 0x3f3f3f3f
#define ll long long
#define vec vector<int>
#define P pair<int,int>
#define MAX 100005int N, K, x, a, b, vis[MAX], cnt[MAX], dist[MAX];
struct edge {int v, c;edge(int a = 0, int b = 0) { v = a, c = b; }
};
vector<edge>G[MAX];void addEdge(int x, int a, int b) {if (x == 1)G[a].push_back(edge(b, 0)), G[b].push_back(edge(a, 0));else if (x == 2)G[a].push_back(edge(b, 1));else if (x == 3)G[b].push_back(edge(a, 0));else if (x == 4)G[b].push_back(edge(a, 1));else G[a].push_back(edge(b, 0));
}bool spfa(int s) {memset(vis, 0, sizeof(vis));memset(cnt, 0, sizeof(cnt));fill(dist, dist + MAX, 0);queue<int> q; q.push(s); vis[s] = 1; dist[s] = 0;while (!q.empty()) {int u = q.front(); q.pop(); cnt[u]++; vis[u] = 0;if (cnt[u] == N)return false;for (int i = 0; i < G[u].size(); i++) {edge e = G[u][i];if (dist[u] + e.c > dist[e.v]) {dist[e.v] = dist[u] + e.c;if (!vis[e.v]) {vis[e.v] = 1;q.push(e.v);}}}}return true;
}int main() {while (scanf("%d %d", &N, &K) != EOF) {for (int i = 0; i <= N; i++) {G[i].clear();if (i != 0)G[0].push_back(edge(i, 1));//超级源点}int sign = 1;for (int i = 0; i < K; i++) {scanf("%d %d %d", &x, &a, &b);if (x == 2 || x == 4) {if (a == b) { sign = 0; }}addEdge(x, a, b);}if (!sign) { cout << -1 << endl; continue; }if (!spfa(0))cout << -1 << endl;else {ll mi = inf, res = 0;for (int i = 1; i <= N; i++) {if (dist[i] < mi)mi = dist[i];res += dist[i];}if (mi < 0)res += (-mi + 1)*N;cout << res << endl;}}
}
题解 P3275 【[SCOI2011]糖果】相关推荐
- 洛谷P3275 [SCOI2011]糖果
题目描述 幼儿园里有\(N\)个小朋友,\(lxhgww\)老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他 ...
- P3275 [SCOI2011]糖果
emmmm博客补不完喽~~~(其实这是题目链接,但..也确实是事实..) 这题呢,也基本上就是差分约束的模板题了(要是不知道差分约束的话自行百度一下喽~~),实际上这类题目吧,撇开读入,基本都一样,就 ...
- 【差分约束】SCOI2011糖果
P3275 [SCOI2011]糖果 快noip了我还在干什么啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊 来我们看这道题 根据条件建图, 因为求得是最小值, 所以要跑最长路qwq(这是我记住的QAQ ...
- bzoj 2330: [SCOI2011]糖果
2330: [SCOI2011]糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...
- 差分约束 【bzoj2330】[SCOI2011]糖果
/*[bzoj2330][SCOI2011]糖果 2014年3月5日1,2761 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖 ...
- SPFA差分约束(bzoj 2330: [SCOI2011]糖果)
2330: [SCOI2011]糖果 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 6355 Solved: 2096 [Submit][Stat ...
- LeetCode 力扣C++题解 575. 分糖果
题目描述:给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果.你需要把这些糖果平均分给一个弟弟和一个妹妹.返回妹妹可以获得的最大糖果的种类数.(难度:简单) 原题链接: ...
- 【BZOJ 2330】 [SCOI2011]糖果【差分约束】
题目跳转: http://www.lydsy.com/JudgeOnline/problem.php?id=2330 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友 ...
- BZOJ2330 SCOI2011糖果
复习了一波差分约束. http://blog.csdn.net/my_sunshine26/article/details/72849441 构图方式记住就好. 本题要倒序插入否则会被卡. 1 #in ...
最新文章
- A站、B站、C站、D站、E站、F站、G站、H站、I站、J站、J站、L站、M站、N站…Z站?...
- 2.1/2.2 系统目录结构 2.3 ls命令 2.4 文件类型 2.5 alias命令
- 期望最大化(EM)算法
- ActiveMQ中Topic生产者
- mysql 交集_MYSQL交集函数
- java纯数字正则表达式_JAVA验证数字的正则表达式,来一发
- 【已解决】抱歉,由于某种原因,PowerPoint 无法加载D:\mathtype\Office Support\64\MathType(PowerPoint 2016).ppam加载项。
- 二叉搜索树的创建和比较
- 软件测试的方法有哪些?
- VBS让室友成为你儿子
- amcharts php,AMCHARTS+MYSQL+PHP的使用实例
- vue与ios和Android联调方法
- 完了!服务器沦为肉鸡了!排查过程!
- Android平台OpenGL ES图像处理(improving)
- 记:docker初使用报错:An error occurred and No connection could be made machine actively refused it
- 【点宽专栏】虚拟遗憾最小化(CFR)之量化择时与交易
- 《项目管理就是这么简单》--读书笔记
- 做数据分析,软件工具少不了,好用的数据分析软件工具
- CityEngine创造鲜活的三维数字城市
- 【电源专题】为开关稳压器选择正确的工作频率