洛谷P1650赛马与codevs 2181 田忌赛马
洛谷P1650 赛马
题目描述
我国历史上有个著名的故事: 那是在2300年以前。齐国的大将军田忌喜欢赛马。他经常和齐王赛马。他和齐王都有三匹马:常规马,上级马,超级马。一共赛三局,每局的胜者可以从负者这里取得200银币。每匹马只能用一次。齐王的马好,同等级的马,齐王的总是比田忌的要好一点。于是每次和齐王赛马,田忌总会输600银币。
田忌很沮丧,直到他遇到了著名的军师――孙膑。田忌采用了孙膑的计策之后,三场比赛下来,轻松而优雅地赢了齐王200银币。这实在是个很简单的计策。由于齐王总是先出最好的马,再出次好的,所以田忌用常规马对齐王的超级马,用自己的超级马对齐王的上级马,用自己的上级马对齐王的常规马,以两胜一负的战绩赢得200银币。实在很简单。
如果不止三匹马怎么办?这个问题很显然可以转化成一个二分图最佳匹配的问题。把田忌的马放左边,把齐王的马放右边。田忌的马A和齐王的B之间,如果田忌的马胜,则连一条权为200的边;如果平局,则连一条权为0的边;如果输,则连一条权为-200的边……如果你不会求最佳匹配,用最小费用最大流也可以啊。 然而,赛马问题是一种特殊的二分图最佳匹配的问题,上面的算法过于先进了,简直是杀鸡用牛刀。现在,就请你设计一个简单的算法解决这个问题。
输入输出格式
输入格式:
第一行一个整数n,表示他们各有几匹马(两人拥有的马的数目相同)。第二行n个整数,每个整数都代表田忌的某匹马的速度值(0 <= 速度值<= 100)。第三行n个整数,描述齐王的马的速度值。两马相遇,根据速度值的大小就可以知道哪匹马会胜出。如果速度值相同,则和局,谁也不拿钱。
【数据规模】
对于20%的数据,1<=N<=65;
对于40%的数据,1<=N<=250;
对于100%的数据,1<=N<=2000。
输出格式:
仅一行,一个整数,表示田忌最大能得到多少银币。
输入输出样例
输入样例#1:
3
92 83 71
95 87 74
输出样例#1:
200
思路自己去问孙膑吧·················
或者田忌也行,毕竟用过············
齐威王就算了,他会揍你的·········
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std; int tot,n;
int a[],b[];
bool flag;
int h1,h2,t1,t2;
int main()
{
scanf("%d",&n);
for(int i=;i<n;++i)
scanf("%d",&a[i]);
for(int i=;i<n;++i)
scanf("%d",&b[i]);
sort(a,a+n);
sort(b,b+n);
t1=t2=n-;
for(int i=;i<n;++i)
{
if(a[t1]>b[t2])//最快的马比对手最快的马快
{
--t1;
--t2;
tot++;
continue;
}
if(a[h1]>b[h2])//最慢的马比对手最慢的马快
{
++h1;
++h2;
tot++;
continue;
}
if(a[t1]==b[h2])//最快的马速度与对手最慢的马相等
{
--t1;
++h2;
continue;
}
++h1;
--t2;
tot--;//均不符合,用最慢的马消耗对手最快的马
}
printf("%d",tot*);
return ;
}
codevs上也有一道赛马题目,题目几乎一样,但如果把这份代码交上去会WA两个点(13和14)
2181 田忌赛马
中国古代的历史故事“田忌赛马”是为大家所熟知的。话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金,如果是平局的话,双方都不必拿出钱。现在每匹马的速度值是固定而且已知的,而齐王出马也不管田忌的出马顺序。请问田忌该如何安排自己的马去对抗齐王的马,才能赢取最多的钱?
第一行为一个正整数n ,表示双方马的数量。
第二行有N个整数表示田忌的马的速度。
第三行的N个整数为齐王的马的速度。
输出描述
Output Description
仅有一行,为田忌赛马可能赢得的最多的钱,结果有可能为负。
样例输入
Sample Input
3
92 83 71
95 87 74
样例输出
Sample Output
200
数据范围及提示
Data Size & Hint
n <= 1000
第13个点:
你的答案
\ No newline at end of file
正确答案
输入数据 (只显示前20行,完整数据请点击上面按钮下载)
871 837 394 984 484 862 976 366 235 294 235 156 208 415 144 313 639 443
779 824 280 464 570 669 25 837 869 262 952 359 840 809 610 1 440 591
319 976 501 14 18 682 190 732 428 992 1 749 69 926 66 136 372 270 629 88
219 855 912 148 163 880 906 560 783 829 939 929 649 265 810 946 511 296
812 323 726 547 761 809 989 803 41 538 34 921 88 240 102 142 582 15 197
940 217 730 556 937 84 408 279 595 202 772 271 880 797 352 536 839 371
972 703 434 924 186 304 377 470 54 372 547 625 731 325 605 970 561 335
601 983 394 997 878 469 431 859 573 555 261 833 656 584 56 67 68 214 517
338 228 520 990 842 829 337 363 609 776 270 875 532 125 990 981 954 605
838 156 956 537 237 458 702 594 455 446 307 593 873 692 887 538 360 445
979 734 333 82 376 546 133 161 210 953 580 642 542 372 899 354 215 382
322 49 120 52 334 367 911 220 613 615 200 633 548 68 89 719 467 362 332
803 447 241 360 984 250 128 48 840 812 728 612 71 706 816 660 663 331
721 837 990 236 832 178 709 375 746 513 778 117 114 94 624 997 827 61
461 921 580 735 ...
改后代码:
#include<iostream>
#include<cstdio>
#include<cmath>
#include<string>
#include<cstring>
#include<algorithm>
using namespace std; int tot,n;
int a[],b[];
bool flag;
int h1,h2,t1,t2;
int main()
{
scanf("%d",&n);
for(int i=;i<n;++i)
scanf("%d",&a[i]);
for(int i=;i<n;++i)
scanf("%d",&b[i]);
sort(a,a+n);
sort(b,b+n);
t1=t2=n-;
for(int i=;i<n;++i)
{
if(a[t1]>b[t2])//最快的马比对手最快的马快
{
--t1;
--t2;
tot++;
continue;
}
if(a[h1]>b[h2])//最慢的马比对手最慢的马快
{
++h1;
++h2;
tot++;
continue;
}
if(a[t1]==b[h2])//最快的马速度与对手最慢的马相等
{
--t1;
++h2;
continue;
}
++h1;
--t2;
tot--;//均不符合,用最慢的马消耗对手最快的马
}
if(tot>)printf("%d",tot*);
else printf("");
return ;
}
说好的结果可能为负呢························
洛谷P1650赛马与codevs 2181 田忌赛马的更多相关文章
- 洛谷P1650 赛马[2017年5月计划 清北学堂51精英班Day1]
P1650 赛马 题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这 ...
- 洛谷P1395 会议(CODEVS.3029.设置位置)(求树的重心)
To 洛谷.1395 会议 To CODEVS.3029 设置位置 题目描述 有一个村庄居住着n个村民,有n-1条路径使得这n个村民的家联通,每条路径的长度都为1.现在村长希望在某个村民家中召开一场会 ...
- 洛谷P1432 倒水问题(CODEVS.1226)
To 洛谷.1432 倒水问题 题目背景 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were co ...
- codevs 2181 田忌赛马
2181 田忌赛马 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题目描述 Description 中国古代的历史故事“田忌赛马”是为大家所熟知的.话说齐王 ...
- codevs——2181 田忌赛马
2181 田忌赛马 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond 题解 题目描述 Description 中国古代的历史故事“田忌赛马”是为大 ...
- 洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑
题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...
- [洛谷P1650] 田忌赛马
贪心难题:总结贪心问题的一般思路 传送门:$>here<$ 题意 田忌和齐王各有n匹马,赛马时一一对应.赢+200,输-200,平+0. 问最多多少钱? 数据范围:$n \leq 2000 ...
- 洛谷 P1262 间谍网络==Codevs 4093 EZ的间谍网络
4093 EZ的间谍网络 时间限制: 10 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B ...
- 洛谷——P1002 过河卒||codevs——T1010 过河卒
https://www.luogu.org/problem/show?pid=1002#sub||http://codevs.cn/problem/1010/ 题目描述 棋盘上A点有一个过河卒,需要走 ...
随机推荐
- 「PKUWC2018/PKUSC2018」试题选做
「PKUWC2018/PKUSC2018」试题选做 最近还没想好报THUSC还是PKUSC,THU发我的三类约(再来一瓶)不知道要不要用,甚至不知道营还办不办,协议还有没有用.所以这些事情就暂时先不管 ...
- [高清·非影印]Spring实战+SpringBoot实战+Spring微服务实战+SpringCloud微服务实战(全4本)
------ 郑重声明 --------- 资源来自网络,纯粹共享交流, 如果喜欢,请您务必支持正版!! --------------------------------------------- 下 ...
- Navicat premium工具转储数据表的结构时,datatime字段报错
Navicat premium工具导出数据库: Navicat premium工具导入数据库: 运行SQL文件,遇到的错误,红色下划线提示,发现:(SQL文件的时间有问题) 不是insert语句有问题 ...
- .NET Core中使用GB2312编码
原文:.NET Core中使用GB2312编码 .NET Core默认不支持GB2312,如果直接使用Encoding.GetEncoding("GB2312")的时候会抛出异常. ...
- Oracle开放1521端口 telnet不通解决办法
在windosw虚拟机server2012上安装Oracle数据库后,远程连接失败,报 java.sql.SQLException: The Network Adapter could not est ...
- UML系列——OO Unit4分析和学期总结
一.本单元的架构设计 1.类图 第一次 第二次 2.关键方法和架构简述 总体而言是读取图的时候就完成大部分计算(完成缓存),调用查询方法时只是展示计算的结果,少部分直接计算.主要是设计了各种自己定义的 ...
- python day10: 反射补充,面向对象
目录 pythdon day 10 1. 反射补充 16. 面向对象 16.1 面向对象初步介绍 16.2 面向对象和面向过程区别 16.3 对象的进化 17. 类class 17.1 类的定义 17 ...
- JavaScript的深浅复制
JavaScript的深浅复制 为什么有深复制.浅复制? JavaScript中有两种数据类型,基本数据类型如undefined.null.boolean.number.string,另一类是Obje ...
- UCOSIII内建消息队列
使能内建消息队列 将OS_CFG_TASK_Q_EN置1 API函数 #if OS_CFG_TASK_Q_EN > 0u //删除 OS_MSG_QTY OSTaskQFlush (OS_TCB ...
- postgressql启动与关闭
POSTGRESSQL启动和停止数据库可以通过service方式 .POSTGRESSQL的命令行工具进行启动与停止. 1.使有SERVICE方式 启动数据库服务的命令如下·: #service po ...