洛谷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 田忌赛马

时间限制: 1 s
空间限制: 32000 KB
题目等级 : 钻石 Diamond
题目描述 Description

中国古代的历史故事“田忌赛马”是为大家所熟知的。话说齐王和田忌又要赛马了,他们各派出N匹马,每场比赛,输的一方将要给赢的一方200两黄金,如果是平局的话,双方都不必拿出钱。现在每匹马的速度值是固定而且已知的,而齐王出马也不管田忌的出马顺序。请问田忌该如何安排自己的马去对抗齐王的马,才能赢取最多的钱?

输入描述 Input Description

第一行为一个正整数n ,表示双方马的数量。
第二行有N个整数表示田忌的马的速度。
第三行的N个整数为齐王的马的速度。

输出描述
Output Description

仅有一行,为田忌赛马可能赢得的最多的钱,结果有可能为负。

样例输入
Sample Input

3
92 83 71
95 87 74

样例输出
Sample Output

200

数据范围及提示
Data Size & Hint

n <= 1000

第13个点:

你的答案

< -400000
\ No newline at end of file

正确答案

> 0

输入数据 (只显示前20行,完整数据请点击上面按钮下载)

610
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 田忌赛马的更多相关文章

  1. 洛谷P1650 赛马[2017年5月计划 清北学堂51精英班Day1]

    P1650 赛马 题目描述 我国历史上有个著名的故事: 那是在2300年以前.齐国的大将军田忌喜欢赛马.他经常和齐王赛马.他和齐王都有三匹马:常规马,上级马,超级马.一共赛三局,每局的胜者可以从负者这 ...

  2. 洛谷P1395 会议(CODEVS.3029.设置位置)(求树的重心)

    To 洛谷.1395 会议 To CODEVS.3029 设置位置 题目描述 有一个村庄居住着n个村民,有n-1条路径使得这n个村民的家联通,每条路径的长度都为1.现在村长希望在某个村民家中召开一场会 ...

  3. 洛谷P1432 倒水问题(CODEVS.1226)

    To 洛谷.1432 倒水问题 题目背景 In the movie "Die Hard 3", Bruce Willis and Samuel L. Jackson were co ...

  4. codevs 2181 田忌赛马

    2181 田忌赛马 时间限制: 1 s 空间限制: 32000 KB 题目等级 : 钻石 Diamond   题目描述 Description 中国古代的历史故事“田忌赛马”是为大家所熟知的.话说齐王 ...

  5. codevs——2181 田忌赛马

    2181 田忌赛马  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 钻石 Diamond 题解       题目描述 Description 中国古代的历史故事“田忌赛马”是为大 ...

  6. 洛谷 P2155 BZOJ 2186 codevs 2301 [SDOI2008]沙拉公主的困惑

    题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的 ...

  7. [洛谷P1650] 田忌赛马

    贪心难题:总结贪心问题的一般思路 传送门:$>here<$ 题意 田忌和齐王各有n匹马,赛马时一一对应.赢+200,输-200,平+0. 问最多多少钱? 数据范围:$n \leq 2000 ...

  8. 洛谷 P1262 间谍网络==Codevs 4093 EZ的间谍网络

    4093 EZ的间谍网络 时间限制: 10 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 由于外国间谍的大量渗入,国家安全正处于高度的危机之中.如果A间谍手中掌握着关于B ...

  9. 洛谷——P1002 过河卒||codevs——T1010 过河卒

    https://www.luogu.org/problem/show?pid=1002#sub||http://codevs.cn/problem/1010/ 题目描述 棋盘上A点有一个过河卒,需要走 ...

随机推荐

  1. [LOJ3086] [GXOI2019] 逼死强迫症

    题目链接 LOJ:https://loj.ac/problem/3086 洛谷:https://www.luogu.org/problemnew/show/P5303 Solution 显然不考虑\( ...

  2. [洛谷P4052][JSOI2007]文本生成器

    题目大意:有$n$个字符串$s_i$,问有多少个长度为$m$的字符串至少包含$n$个字符串中的一个,字符集 A-Z .$s_i,m\leqslant100,n\leqslant60$ 题解:$AC$自 ...

  3. angularjs 动态加载指令------编译服务$compile

    场景: 我们写了一个自定义的指令,这条指令需要一些数据,而这些数据需要在某些操作之后才能就绪,这时候,我们就需要在数据就绪之后,动态加载指令. 示例: js: $scope.$watch('repor ...

  4. Oracle开放1521端口 telnet不通解决办法

    在windosw虚拟机server2012上安装Oracle数据库后,远程连接失败,报 java.sql.SQLException: The Network Adapter could not est ...

  5. 修改Excel脚本

    批量修改Excel TODO: 批量修改Excel 功能: 将图片防止在本地,读取excel数据,拆分数据之后根本地照片名称对比,然后上传服务器,创建新得excel. #!/usr/bin/pytho ...

  6. 5_PHP数组_3_数组处理函数及其应用_3_数组指针函数

    以下为学习孔祥盛主编的<PHP编程基础与实例教程>(第二版)所做的笔记. 数组指针函数 1. key() 函数 程序: <?php $interests[2] = "mus ...

  7. 不能在本机启动SQL Server服务错误代码126(要在协议里面禁用所有别的VIA,是怎么回事?)

    在启动数据库sql服务的时候提示[Windows 不能在 本地计算机 启动 SQL Server . 有关更多信息,查阅系统事件日志.如果这是非 Microsoft 服务,请与服务厂商联系,并参考特定 ...

  8. DateTimePicker控件CustomFormat格式字符串及其说明

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wuzhanwen/article/details/78800720格式字符串 描述 d 一个或两位数 ...

  9. laravel——表操作集成操作

    背景:通过判断不同的请求参数,返回不同的需要的数据 一.准备工作: 数据库新建一个表 DROP TABLE IF EXISTS `tb_category2`; CREATE TABLE IF NOT ...

  10. Python学习日记(十四) 正则表达式和re模块

    正则表达式: 它是字符串的一种匹配模式,用来处理字符串,可以极大地减轻处理一些复杂字符串的代码量 字符组:它是在同一位置可能出现的各种字符组成了一个字符组,用[]表示,但是它的结果只能是一个数字或者一 ...