题解 CF1426E - Rock, Paper, Scissors
一眼题。
第一问很简单吧,就是每个 \(\tt Alice\) 能赢的都尽量让他赢。
第二问很简单吧,就是让 \(\tt Alice\) 输的或平局的尽量多,于是跑个网络最大流。\(1 - 3\) 的点表示 \(\tt Alice\) 选石头剪刀或布,\(4-6\) 表示\(\tt Bob\) 选石头剪刀或布。显然源点连 \(1-3\), \(4-6\) 连汇点。然后把 \(\tt Alice\) 输或 \(\tt Alice\) 平的连一下就好了呀。
#include<bits/stdc++.h>
#define N 100010
#define inf 0x7ffffff
#define L(i, j, k) for(int i = j; i <= k; i++)
#define R(i, j, k) for(int i = j; i >= k; i--)
using namespace std;
int n,m,s,t,sum,cc[N],use[N];
int head[N],last[N];
struct node{
int to,next,val;
} e[N << 1];
int edge_id = 1;
void add_edge(int x, int y, int val) {
int id = ++edge_id;
if(head[x]==0) head[x] = id;
else e[last[x]].next=id;
last[x]=id,e[id].val=val,e[id].to=y;
}
void add(int x, int y, int val) {
add_edge(x, y, val);
add_edge(y, x, 0);
}
void bfs() {
for(int i = 1; i <= n; i++) use[i]=cc[i]=0;
cc[s]=1,use[1]=s;
int u=0,v=1;
while(u<v) {
++u;
int fst=use[u];
for(int i = head[fst]; i != 0; i = e[i].next) {
if(cc[e[i].to]!=0) continue;
if(e[i].val==0) continue;
++v,cc[e[i].to]=cc[fst]+1,use[v]=e[i].to;
}
}
}
int dfs(int x,int val) {
if(x==t) return val;
if(cc[x]==cc[t]) {
cc[x]=0;
return 0;
}
int yuliu=val;
for(int i = head[x]; i != 0; i = e[i].next) {
if(cc[e[i].to]!=cc[x]+1) continue;
int addd=dfs(e[i].to,min(e[i].val,yuliu));
yuliu -= addd , e[i].val -= addd , e[i^1].val += addd;
}
return val-yuliu;
}
void Dinic(int &ans) {
bfs();
int addd=dfs(s,inf);
ans += addd;
if(addd==0) return;
Dinic(ans);
}
int pn, A[4], B[4];
int main() {
n = 8, m = 12, s = 7, t = 8;
scanf("%d", &pn);
L(i, 1, 3) scanf("%d", &A[i]), add(s, i, A[i]);
L(i, 1, 3) scanf("%d", &B[i]), add(i + 3, t, B[i]);
L(i, 1, 3) add(i, i + 3, 1e9);
L(i, 1, 3) add(i, (i + 1) % 3 + 4, 1e9);
Dinic(sum);
printf("%d ", pn - sum);
printf("%d\n", min(A[1], B[2]) + min(A[2], B[3]) + min(A[3], B[1]));
return 0;
}
题解 CF1426E - Rock, Paper, Scissors的更多相关文章
- 【题解】CF1426E Rock, Paper, Scissors
题目戳我 \(\text{Solution:}\) 考虑第二问,赢的局数最小,即输和平的局数最多. 考虑网络流,\(1,2,3\)表示\(Alice\)选择的三种可能性,\(4,5,6\)同理. 它们 ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- SDUT 3568 Rock Paper Scissors 状压统计
就是改成把一个字符串改成三进制状压,然后分成前5位,后5位统计, 然后直接统计 f[i][j][k]代表,后5局状压为k的,前5局比和j状态比输了5局的有多少个人 复杂度是O(T*30000*25*m ...
- FFT(Rock Paper Scissors Gym - 101667H)
题目链接:https://vjudge.net/problem/Gym-101667H 题目大意:首先给你两个字符串,R代表石头,P代表布,S代表剪刀,第一个字符串代表第一个人每一次出的类型,第二个字 ...
- Gym - 101667H - Rock Paper Scissors FFT 求区间相同个数
Gym - 101667H:https://vjudge.net/problem/Gym-101667H 参考:https://blog.csdn.net/weixin_37517391/articl ...
- Gym101667 H. Rock Paper Scissors
将第二个字符串改成能赢对方时对方的字符并倒序后,字符串匹配就是卷积的过程. 那么就枚举字符做三次卷积即可. #include <bits/stdc++.h> struct Complex ...
- HDOJ(HDU) 2164 Rock, Paper, or Scissors?
Problem Description Rock, Paper, Scissors is a two player game, where each player simultaneously cho ...
- HDU 2164 Rock, Paper, or Scissors?
http://acm.hdu.edu.cn/showproblem.php?pid=2164 Problem Description Rock, Paper, Scissors is a two pl ...
- 1090-Rock, Paper, Scissors
描述 Rock, Paper, Scissors is a classic hand game for two people. Each participant holds out either a ...
随机推荐
- open系统调用
/* int open(const char *pathname, int flags, mode_t mode);flag:打开方式,可以man 2 open查看 O_RDONLY O_WRO ...
- TextView之富文本
项目中使用富文本比较常见了,一行显示多种样式颜色的文本,使用 ClickableSpan 富文本实现在同一个 TextView 中的文本的颜色.大小.背景色等属性的多样化和个性化. 我们也可以使用Ht ...
- 响应式关系数据库处理R2DBC
目录 简介 R2DBC介绍 项目依赖 创建ConnectionFactory 创建Entity Bean 初始化数据库 获取所有的用户 Prepare Statement 事务处理 WebFlux使用 ...
- win7-64位 jdk安装
1.jdk安装 jdk安装主要是进行jdk以及jre安装,注意jre需要安装到一个空文件夹内即可. 官网地址:http://www.oracle.com/technetwork/java/javase ...
- shell脚本的自动交互
使用expect来自动应答shell的交互 #!/usr/bin/expect spawn openssl req -new -key server.key -out server1.csr expe ...
- Java POI 导出带有图片的word
1. 引入maven ,具体可以上github看一下,这里做简单的说明,是一个大神封装了一下 官方提供的语法 文本语法是 {{Text}} 图片语法是{{@Image}} 其他的自己去看官方文档 &l ...
- 一个工作三年左右的Java程序员和大家谈谈从业心得
转发链接地址:https://mp.weixin.qq.com/s/SSh9HcA5PgMHv7xiolQkig 貌似这一点适应的行业最广,但是我可以很肯定的说:当你从事web开发一年后,重新找工作时 ...
- 重闯Sqli-labs关卡第一天(1-4关)
前言 之前暑假闯了很多关但是最近刷BUGku的题 遇到SQL注入题就凉... 垃圾的我只能继续硬着头皮重新再来学习,再来闯. 第一关:字符型注入 字符型注入就是注入点的数据类型是字符型.字符型注入与数 ...
- kali 系列学习09-Kali-linux设置ProxyChains
ProxyChains是Linux和其他Unices下的代理工具.它可以使任何程序通过代理上网,允许TCP和DNS通过代理隧道,支持HTTP.SOCKS4和SOCKS5类型的代理服务器,并且可配置多个 ...
- 关于oracle11g 和sqldeverloper的安装配置
0友情提示:以下下载地址都是我的百度云分享链接安全无毒请放心下载! 电脑配置 win10 jdk版本1.7 下载oracle11G 版本 下载地址:安装很简单 sqldverloper(oracleD ...