uva1609 Foul Play
思维 创造条件使一轮比赛之后仍满足1号打败至少一半,并剩下至少一个t'
紫书上的思路很清晰
阶段1,3保证黑色至少消灭1半
#include<cstdio>
#include<vector>
using namespace std; const int maxn = + ;
char table[maxn][maxn]; int main() {
int n;
while(scanf("%d", &n) == ) {
for(int i = ; i <= n; i++) scanf("%s", table[i]+); vector<int> win, lose; // teams that team 1 win/lose against.
for(int i = ; i <= n; i++)
if(table[][i] == '') win.push_back(i);
else lose.push_back(i); int nt = n; while(nt > ) {
vector<int> win2, lose2, final; // phase 3/4 // Phase 1
for(int i = ; i < lose.size(); i++) {
int tlose = lose[i];
bool matched = false;
for(int j = ; j < win.size(); j++) {
int& twin = win[j];
if(twin > && table[twin][tlose] == '') { //尽量通过配对消灭黑
printf("%d %d\n", twin, tlose);
win2.push_back(twin); // go to the next round
twin = ; // not available 本轮已经配对
matched = true;
break;
}
}
if(!matched) final.push_back(tlose); // to phase 3/4
} // Phase 2
bool first = true;
for(int i = ; i < win.size(); i++) {
int twin = win[i];
if(twin > ) {
if(first) { printf("1 %d\n", twin);first = false; }
else final.push_back(twin);
}
} // Phase 3/4
for(int i = ; i < final.size(); i += ) { //3,4阶段可以一起处理
printf("%d %d\n", final[i], final[i+]);
int keep = final[i];
if(table[final[i+]][keep] == '') keep = final[i+];
if(table[][keep] == '') win2.push_back(keep);
else lose2.push_back(keep);
}
win = win2;
lose = lose2;
nt >>= ;
}
}
return ;
}
uva1609 Foul Play的更多相关文章
- UVa 1609 (博弈) Foul Play
姑且把它归类为一道博弈吧,毕竟这也是在找必胜方案. 十分有意思的一道题目,设计一种方案让你支持的1队获胜. 题目给出了两个很重要的条件: 1队能打败至少一半的队伍 对于1队不能打败的黑队,一定存在一个 ...
- UVa 1609 - Foul Play
链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...
- UVA 1609 Foul Play 不公平竞赛 (构(luan)造(gao)+递归)
题意:有n支队伍(n是2的整数幂,2<=n<=4),打淘汰赛,胜者进入下一轮,其中1号队伍能打败至少一半的队伍,对于它不能打败的队伍l,一定存在一支它能够打败的队伍w,使得w能直接打败l, ...
- 初涉java库--ArrayList
我的车就差一个轮子啦,造好轮子,我就飞上天与太阳肩并肩啦,想想都激动.什么你要自己造轮子,是不是傻,商店里不都是别人造好的吗,又好又方便,只需一点money,你没有money,那你只能做个安静的美男子 ...
- TJI读书笔记16-异常处理
TJI读书笔记16-异常处理 概念 基本异常情形 异常的捕获 自定义异常 异常说明 捕获所有异常 栈轨迹 重新抛出异常 Java标准异常 使用finally 异常的限制 构造器 异常的匹配 其他乱七八 ...
- Manifesto of the Communist Party
A spectre is haunting Europe – the spectre of communism. All the powers of old Europe have entered i ...
- linux-菜鸟新手命令(1)
1. ls命令 ls命令是列出目录内容(List Directory Contents)的意思.运行它就是列出文件夹里的内容,可能是文件也可能是文件夹. root@tecmint:~#ls Andro ...
- Java编程思想学习(九) 异常处理
java的异常处理机制可以使程序有极好的容错性,让程序更加的健壮.所谓的异常,就是指的阻止当前方法或作用域继续执行的问题,,当程序运行时出现异常时,系统就会自动生成一个Exception对象来通知程序 ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
随机推荐
- html 样式之style属性的使用
转自:https://www.ggbiji.com/html-style.html html中的style属性是用来改变html元素的样式的,样式是 在html 4 引入的,它是改变 html元素样式 ...
- android调用第三方库——第一篇 (转载)
转自:http://blog.csdn.net/jiuyueguang/article/details/9447245 版权声明:本文为博主原创文章,未经博主允许不得转载. 0:前言: 这两天一直在研 ...
- OkHttp解析
今天花了一天时间研究了下OkHttp3的内部原理,记录在此处以便后期查阅 我们先来看下基本的使用方式: public void sendHttpRequest(String url,Callback ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(七) 学生信息增删
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- float以后设置的小细节
先看看下面这段css代码,是不是很完美?没错? #pageBodyMain .articleList a: after { content: ""; clear: both; di ...
- HDOJ3231醉
反正一开始就是瞎几把看题,然后题意理解了,什么飞机?只能去看题解了. 呵呵,可惜,题解看了三个小时,还是一知半解,先写了. - -菜鸡超级详细题解,强行掰弯一波,等下再问问别人吧. OK,OK开始!! ...
- iperf工具学习记录
源码下载地址:http://sourceforge.net/projects/iperf/ 编译命令: tar -zxvf iperf-2.0.5.tar.gz cd iperf-2.0.5 ./co ...
- tarjan有向图的强连通
强连通:在有向图G中,两个顶点间至少存在一条路径,则两个点强连通. 强连通图:在有向图中,每两个顶点都强连通,则有向图G就是一个强连通图. 强连通分量:在非强连通图中的极大强连通子图,就称为强连通分量 ...
- asp,php,jsp 不缓存网页的办法
ASP实例源码浏览次数:4 一般地,我们要查看Internet 网上的一个网页,那么 当您第一次访问这个网页的时候, 系统首先要将这个网页下载到您的本地计算机 的一个临时文件夹中进行缓存, 当在一定的 ...
- python之类的相关名词解释
变量:在类里面定义的变量,不必实例化即可调用 实例变量:在类里面定义的变量,必须实例化之后才可以调用 比如: 属性方法:调用时看起来像是一个变量,方法没有入参,可以变成一个属性方法 在方法上添加@pr ...