hdu1052

#include <iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<cmath>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define maxn 2600
int a[maxn],b[maxn];
int main()
{
int N,i,j,i1,j1,sum;
while(scanf("%d",&N),N)
{
for(i=0; i<N; i++)
scanf("%d",&a[i]);
for(i=0; i<N; i++)
scanf("%d",&b[i]);
sort(a,a+N);
sort(b,b+N);
sum=0;
for(i=0,j=N-1,i1=0,j1=N-1;i1<=j1&&i<=j;)
{

if(a[i]>b[i1])
{
i++;
i1++;
sum++;
}
else if(a[i]<b[i1])
{
i++;
j1--;
sum--;
}
else if(a[j]>b[j1])
{
j--;
j1--;
sum++;
}
else if(a[j]<b[j1])
{
i++;
j1--;
sum--;
}
//现在剩余就是最快的和最慢的都相等的情况,
//则把田忌最慢的和齐王最快的比较
else if(a[i]<b[j1])
{
i++;
j1--;
sum--;
}
else
{
i++;
j1--;
}
}
printf("%d\n",sum*200);
}
return 0;
}

时间: 2024-08-24 12:34:33

hdu1052的相关文章

hdu1052(田忌赛马 贪心)

好坑的一道题,不过确实是贪心的一道好题,想了好久一直无法解决平局的情况.  参考了别人的思路,然后结合了自己的想法,总算是想出来了. 这题有些步骤是必须要执行的,有四个步骤 一.当期状态田忌的最慢的马比对手最慢的马快,那么就直接比赢了这一盘,因为对手最慢的马比田忌所有马都慢,田忌为了后面的情况最优就用最小的代价来赢得这一个必胜的局. 二.当前状态田忌最慢的马比对手最慢的马慢,说明田忌最慢的马比对手所有的马慢,对于这个必败的情况田忌自然会用这匹马去耗对手最快的马,所以这局用最慢的马去和对手最快的马

hdu1052 Tian Ji -- The Horse Racing

转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1052 Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 17346    Accepted Submiss

HDU-1052 Tian Ji -- The Horse Racing 贪心 考虑特殊位置(首尾元素)的讨论

题目链接:https://cn.vjudge.net/problem/HDU-1052 题意 田忌赛马问题扩展版 给n匹马,马的能力可以相同 问得分最大多少 思路 贪心做得还是太少,一开始一点思虑都没有的 这里稍微总结一下如何打开思路吧 从特殊位置开始考虑是否存在某种必然性,包括不限于序列首尾 若讨论难以进行,试着把这个讨论点展开,换个角度(或者换个特殊位置)讨论 首先排序 其次的关键是讨论尾元素是否必胜或必败,思考贪心 在一个关键是双方尾元素相同时,展开考虑首元素是否必胜或必败,思考贪心 当首

[HDU1052]Tian Ji -- The Horse Racing(田忌赛马)

题目大意:田忌赛马问题,给出田忌和齐威王的马的数量$n$和每匹马的速度$v$,求田忌最多赢齐威王多少钱(赢一局得200,输一局扣200,平局不得不扣). 思路:贪心. 1.若田忌最慢的马可以战胜齐王最慢的马,那么就让它战胜那匹慢马,胜利场次加1.(田忌最慢马 > 齐王最慢马) 2.若田忌最慢的马不能战胜齐王最慢的马,那么它更加不能战胜其他的马,那就让它输给齐王最快的马,失败场次加1.(田忌最慢马 < 齐王最快马) 3.若田忌最慢的马与齐王最慢的马速度相等.此时,打平是错误的. 因为自己的快马很

hdu1052——Tian Ji -- The Horse Racing

Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 19020    Accepted Submission(s): 5557 Problem Description Here is a famous story in Chinese history. "That was about

HDU1052 Tian Ji -- The Horse Racing 贪心

Tian Ji -- The Horse Racing Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 1052 Description Here is a famous story in Chinese history. "That was about 2300 years ago. General Tian Ji was a

HDU-1052 划水记录1

题目:题目描述:田忌赛马的故事众所都知,田忌与国王赛马,赢一场赚200,输一场亏200,平局没有影响.问田忌最大能赚多少.输入:输入数据多达50个测试案例.每一个数据都是由一个正整数n(1000个)开始,这是马的数目.第二行每一个整数是田忌的马的速度.第三行的每一个整数是国王的马的速度.n为0则输入结束.输出:对于每一个输入的情况,输出一行包含一个单一的数字,这是田忌将获得的最大的钱数. 思路:能用最差的马弄对面最差的马就用最差的马 否则用最差的马换对方最好的马.代码 #include <std

hdu-1052(贪心)

链接 [https://vjudge.net/contest/261555#problem/I] 题意 就是两个人都有n匹马,每只马都有战力 第二个人出马的顺序是战力大到小,请问第一个人采取怎样的策略使得自己总的胜场尽可能多 分析 肯定先对二者的战力分别排序 然后就是想尽可能地把第一个人的每只马发挥最大的作用 如果该马不能打败对方的任何一只马就让它尽可能地把对方最强战力的马,搞定 虽然输了但后面也会有更大的可能多赢 所以就从战力最弱的马相比较 如果当前的我最弱的马大于对方最弱的马就直接比掉 得一

HDU1052Tian Ji -- The Horse Racing

Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 26683    Accepted Submission(s): 7875 Problem Description Here is a famous story in Chinese history. "That was about 2