BZOJ 2330. [SCOI2011]糖果 题解
时间:2021-08-23
本文章向大家介绍BZOJ 2330. [SCOI2011]糖果 题解,主要包括BZOJ 2330. [SCOI2011]糖果 题解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
题目描述
solve
可以把关系看成是一种约束,然后直接\(SPFA\)刷分差分约束就好了,貌似这道题卡\(SPFA\)看一波题解,发现反建图就好了
code
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=100005,maxe=400005;
int lnk[maxn],nxt[maxe],son[maxe],w[maxe],dis[maxn],Q[maxn],cnt,vis[maxn],cir[maxn],N,K;
LL Ans;
inline void add_e(int x,int y,int z){
son[++cnt]=y;w[cnt]=z;nxt[cnt]=lnk[x];lnk[x]=cnt;
}
inline int read(){
int ret=0,f=1;char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')f=-f;ch=getchar();}
while(ch<='9'&&ch>='0')ret=ret*10+ch-'0',ch=getchar();
return ret*f;
}
int SPFA(){
int hed=0,til=1;Q[til]=0;vis[0]=1;cir[0]=1;
while(hed!=til){
hed=(hed+1>=maxn?0:hed+1);vis[Q[hed]]=0;
for(int j=lnk[Q[hed]];j;j=nxt[j]){
if(dis[Q[hed]]+w[j]>dis[son[j]]){
dis[son[j]]=dis[Q[hed]]+w[j];
if(++cir[son[j]]>=N)return 0;
if(!vis[son[j]])vis[son[j]]=1,Q[til=(til+1>=maxn?0:til+1)]=son[j];
}
}
}
return 1;
}
int main(){
freopen("2330.in","r",stdin);
freopen("2330.out","w",stdout);
N=read();K=read();
for(int i=1;i<=K;i++){
int X=read(),A=read(),B=read();
if(X==1){add_e(A,B,0);add_e(B,A,0);}
else if(X==2){if(A==B){printf("-1\n");return 0;}add_e(A,B,1);}
else if(X==3){add_e(B,A,0);}
else if(X==4){if(A==B){printf("-1\n");return 0;}add_e(B,A,1);}
else if(X==5){add_e(A,B,0);}
}
for(int i=N;i;i--)add_e(0,i,1);
if(!SPFA()){printf("-1\n");return 0;}
for(int i=1;i<=N;i++)Ans+=dis[i];
printf("%lld\n",Ans);
return 0;
}
原文地址:https://www.cnblogs.com/martian148/p/15174776.html
- JavaScript前端和Java后端的AES加密和解密
- 《Spark MLlib 机器学习实战》1——读后总结
- angularjs自定义指令实现分页插件
- A+B for Input-Output Practice (V)
- 机器学习——相似度算法汇总
- 白话推荐系统——从原理到实践,还有福利赠送!
- 基于Spring Boot的Logback日志轮转配置
- Java程序员的日常—— Spring Boot单元测试
- Windows下TensorFlow安装指南(图文版)
- 20120918-双向链表类定义《数据结构与算法分析》
- 20120918-LIST类定义《数据结构与算法分析》
- Scala入门学习笔记四--List使用
- 20120918-向量实现《数据结构与算法分析》
- hadoop 1.x环境搭建
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Ingress(Nginx)日志持久化与可视化(多图预警)
- .Net在Windows上使用Jenkins做CI/CD的那些事
- 【STM32H7】第9章 RL-TCPnet调试方法(Event Recorder和串口两种)
- 【STM32F429】第9章 RL-TCPnet调试方法(Event Recorder和串口两种)
- 【STM32F407】第9章 RL-TCPnet V7.X调试方法(Event Recorder和串口两种)
- CentOS7的udev的绑定规则
- 案例:记录一则强制开库遭遇ORA-16433的处理过程
- mybatis升级为mybatis-plus踩到的坑
- Treepath
- linux 远程ssh免密登录
- npm 安装 electron taobao镜像 404错误 自用 实践笔记
- Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署
- 队列的一种实现:循环队列
- StackExchange.Redis .net core Timeout performing 超时问题
- G1 垃圾回收器简单调优