P3275 [SCOI2011]糖果

快noip了我还在干什么啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

来我们看这道题

根据条件建图, 因为求得是最小值, 所以要跑最长路qwq(这是我记住的QAQ

不想写了让我们直接看看题解吧!

P3275 [SCOI2011]糖果(five20的题解)

有环代表条件冲突, 输出“-1”

建源点的时候反向建会快(这就很妙了

 1 #include<queue>
 2 #include<cstdio>
 3 #include<cstdlib>
 4 #include<iostream>
 5 #define ri register int
 6 #define ll long long
 7 using namespace std;
 8 const int sz = 200010;
 9 int n, k, num = 0;
10 ll ans;
11 int head[sz], dis[sz], tot[sz];
12 bool flag;
13 bool vis[sz];
14 struct edge {
15     int nxt, to, dis;
16 }e[sz << 1];
17 inline int read() {
18     char ch = getchar(); int x = 0, f = 1;
19     while(ch > '9' || ch < '0') {if(ch == '-') f = -1; ch = getchar();}
20     while(ch >= '0' && ch <= '9') {x = x * 10 + ch - '0' ; ch = getchar();}
21     return x * f;
22 }
23 void add(int from, int to, int dis) {
24     e[++num].nxt = head[from];
25     e[num].to = to;
26     e[num].dis = dis;
27     head[from] = num;
28 }
29 void spfa() {
30     queue<int>q;
31     q.push(0);
32     vis[0] = 1;
33     while(!q.empty()) {
34         int u = q.front();
35         q.pop();
36         if(tot[u] == n - 1) {
37             printf("-1");
38             exit(0);
39         }
40         vis[u] = 0;
41         tot[u]++;
42         for(ri i = head[u]; i; i = e[i].nxt) {
43             int v = e[i].to;
44             if(dis[v] < dis[u] + e[i].dis) {
45                 dis[v] = dis[u] + e[i].dis;
46                 if(!vis[v]) {
47                     vis[v] = 1;
48                     q.push(v);
49                 }
50             }
51         }
52     }
53 }
54 int main() {
55     scanf("%d%d", &n, &k);
56     for(ri i = 1; i <= k; i++) {
57         int opt = read(), u = read(), v = read();
58         if(opt == 1) {
59             add(v, u, 0);
60             add(u, v, 0);
61         }
62         else if(opt == 2) {
63             if(u == v) {
64                 flag = 1;
65                 break;
66             }
67             else add(u, v, 1);
68         }
69         else if(opt == 3) add(v, u, 0);
70         else if(opt == 4) {
71             if(u == v) {
72                 flag = 1;
73                 break;
74             }
75             else add(v, u, 1);
76         }
77         else if(opt == 5) add(u, v, 0);
78      }
79      if(flag == 1) {
80          printf("-1");
81          return 0;
82      }
83      for(ri i = n; i >= 1; i--) add(0, i, 1);
84      spfa();
85      for(ri i = 1; i <= n; i++)
86          ans += dis[i];
87      printf("%lld", ans);
88     return 0;
89 }
90 /*
91 4 7
92 1 3 2
93 2 2 4
94 5 1 3
95 3 4 2
96 3 2 3
97 4 3 1
98 5 1 4
99 */

转载于:https://www.cnblogs.com/Hwjia/p/9903112.html

【差分约束】SCOI2011糖果相关推荐

  1. 差分约束 【bzoj2330】[SCOI2011]糖果

    /*[bzoj2330][SCOI2011]糖果 2014年3月5日1,2761 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖 ...

  2. SPFA差分约束(bzoj 2330: [SCOI2011]糖果)

    2330: [SCOI2011]糖果 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 6355  Solved: 2096 [Submit][Stat ...

  3. AcWing 4247. 糖果(差分约束最短路)

    题目连接 https://www.acwing.com/problem/content/4250/ http://poj.org/problem?id=3159 思路 假设第i个同学得到的糖果数量为a ...

  4. 1169 糖果(差分约束)

    1. 问题描述: 幼儿园里有 N 个小朋友,老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要求,比如小明不希望小红分到的糖果比他的多,于是在分配 ...

  5. 算法提高课-图论-差分约束- AcWing 1169. 糖果:spfa求单源最短路、差分约束

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 差分约束系统 差分约束系统是一种特殊的N元一次不等式组.它包含N个变量X1,...,XnX_1,...,X_nX1​,...,Xn​ ...

  6. P3275-[SCOI2011]糖果【差分约束,负环】

    正题 题目大意:https://www.luogu.org/problemnew/show/P3275 题目大意 对于nnn个值,给出一系列不等式.求每个值的最小正整数. 解题思路 差分约束 code ...

  7. 【BZOJ2330】【tyvj1785】【codevs2404】糖果,第一次的差分约束

    传送门1 传送门2 传送门3 写在前面:tyvj打卡的不归路and第一次写差分约束,比较生疏-- 思路: 1.看到题目给出了元素之间的大小关系,我们比较容易想到了差分约束,而且求的是最少糖果数,所以可 ...

  8. bzoj 2330: [SCOI2011]糖果

    2330: [SCOI2011]糖果 Description 幼儿园里有N个小朋友,lxhgww老师现在想要给这些小朋友们分配糖果,要求每个小朋友都要分到糖果.但是小朋友们也有嫉妒心,总是会提出一些要 ...

  9. POJ 3159[差分约束]

    题目链接:[http://poj.org/problem?id=3159] 题意:有N个小朋友,编号为1-N,每个小朋友将分的一些糖果,给出一些关系A.B.C .表示B最多比A多C个,然后问你盆友1和 ...

最新文章

  1. 劝你别把开源的AI项目写在简历上了!!!
  2. Java 取整数的个、十、百位
  3. 计算机视觉编程——图像聚类
  4. 组件化实践详解(二)
  5. 使用Docker容器和Java EE进行持续交付
  6. OpenCV imread()函数
  7. 【今日CV 视觉论文速览】14 Nov 2018
  8. window服务程序编写及发布
  9. 记一次‘勒索病毒’经历
  10. 全志 Allwinner V3S 开发环境搭建 (二)安装必要工具
  11. python selenium无头浏览器
  12. 【前端框架】当前基于bootstrap框架的几种主流前端框架
  13. (渣男渣女必备之)层次分析法AHP-Analytic Hierarchy Process操作流程及代码实现
  14. 张靓颖同学2006年日程表
  15. Week8 CSP模拟 T2 HRZ学英语
  16. 杂谈|程序员还是工程师
  17. 软件测试面试题之非技术面试(GZH:软件测试大本营)
  18. java抖音字符视频_抖音上很火的字符画 Android 实现 | 视频转换实现
  19. 5种阿里常用代码检测推荐 | 阿里巴巴DevOps实践指南
  20. Ehcache基本使用

热门文章

  1. GNS3导入c7200路由器
  2. Roson的Qt之旅#97 Qt编译报错-Could not determine which “make“ command to run
  3. 网站备案后 换服务器,网站备案后更换服务器
  4. Python调用百度AI识别身份证
  5. 学渣的刷题之旅 leetcode刷题 88. 合并两个有序数组
  6. mysql创建单表只读访问用户及过程问题处理:如mysql: command not found ///GRANT command denied to user
  7. 比较 SVFI-RIFE 和 DAIN-APP 补针效果 施工中 ~
  8. 金大侠的亲属与剑桥大学最厉害的三个学院
  9. EduSoho网校系统产品更新:PPT动画转码
  10. [美文]-- 为何毕业三年后的差距这么大?