题解 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 ...
随机推荐
- 利用c++ std::getline实现split
getline reads characters from an input stream and places them into a string: getline从输入流中读取字符, 并把它们转 ...
- python之路 《四》 字典
python中的字典使得python来解决问题变得更方便,顾名思义,就是当我知道关键字(key)那么我就可以通过key来找到与之对应的信息. 简单的来说字典是另一种可变容器模型,且可存储任意类型对象. ...
- 在线动态修改ulimit
前言 系统中有些地方会进行资源的限制,其中的一个就是open file的限制,操作系统默认限制的是1024,这个值可以通过各种方式修改,本篇主要讲的是如何在线修改,生产上是不可能随便重启进程的 实践 ...
- inkscope完整安装配置
准备centos7基础系统 首先安装基础系统centos7 在安装选项那里选择base web server ,选择其他的也可以,选择mini安装会缺很多常用的软件包,后续需要一个个安装比较麻烦 关闭 ...
- flink1.10版local模式提交job流程分析
1.WordCount程序实例 2.本地监听9000端口后测试结果 3.job提交流程 4.local模式执行StreamGraph任务 5.流程分析 flink job提交流程个人理解可以大致分为定 ...
- 没找到Wkhtmltopdf,报表会被显示为html
windows10 odoo 打印报表时提示 没找到Wkhtmltopdf,报表会被显示为html 现象 原因 没有安装Wkhtmltopdf,没有配置环境变量,odoo在电脑系统中找不到Wkhtml ...
- C语言设计模式(应用)
#ifndef QUEUE_H #define QUEUE_H #define QUEUE_SIZE 10 typedef struct queue { int buffer[QUEUE_SIZE]; ...
- 存储型跨站获取COOKIE漏洞复现
一.漏洞描述 获取网站cookie 二.漏洞原理 1.服务器后台写入PHP代码 $cookie = $_GET['cookie']; if($cookie){ echo ($cookie); $log ...
- 计算思维(美国CMU周以真教授)
博主注:GIScience会议是国际上最为著名的地理信息系统领域的国际会议,自2000年起,每两年举办一次,GIScience 2008会议邀请了美国卡内基-梅隆大学(CMU)计算机系华裔教授周以真博 ...
- jQuery 第二章 实例方法 DOM操作选择元素相关方法
进一步选择元素相关方法: .get() .eq() .find() .filter() .not() .is() .has() .add()集中操作 .end()回退操作 .get() $(&qu ...