专题一 Problem C
来源:互联网 发布:手机接收卫星电视软件 编辑:程序博客网 时间:2024/05/22 16:43
一、题目编号:
Problem C
二、简单题意:
田忌赛马问题。田忌和齐王各有n匹马,输入田忌的马的速度和齐王的马的速度。每一轮田忌赢了就得200两银子,平就得0两,输了就失去200两银子。问田忌最多能得到多少银子。
三、解题思路形成过程
先比较最慢的,如果田忌的最慢的比大王的还慢,那就和大王最快的比,输一场,如果的田忌最慢的比大王的快,那就和大王最慢的比,赢一场。如果最慢的相同,看最快的,大王的最快的快,用田忌的最慢比大王的最快,如果田忌的最快的快,那么田忌用最快的和大王最快的比。如果最快的也相等,看看是否所有的都相等,否则,用田忌最慢的比大王最快的。
四、感想
看起来很简单,但是要注意细节。
五、AC代码
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
bool cmp(const int &a,const int &b)
{
if(a!=b)
return a>b;
else
return a>b;
}
int main()
{
int N,i,j=0,f=0,k=0,s,m=0,sum[10000];
while(cin>>N)
{
if(N==0)
break;
sum[m]=0;
vector<int> a(N),b(N);
for(i=0;i<N;i++)
{
cin>>a[i];
}
for(i=0;i<N;i++)
{
cin>>b[i];
}
sort(a.begin(),a.end());
sort(b.begin(),b.end());
s=N-1;
j=0;
f=0;
while(N--)
{
if(a[j+s]>b[f+s])
{
sum[m]+=200;
s--;
}
else if(a[j]>b[f])
{
sum[m]+=200;
f++;
j++;
s--;
}
else if(a[j]>b[f+s])
{
sum[m]+=200;
j++;
s--;
}
else if(a[j]==b[f+s])
{
j++;
s--;
}
else
{
sum[m]-=200;
j++;
s--;
}
}
m++;
}
for(k=0;k<m;k++)
{
cout<<sum[k]<<endl;
}
}
- 专题一 Problem C
- 专题一 Problem Q
- 专题一 Problem G
- 专题一 Problem A
- 专题一 Problem M
- 专题一 Problem F
- 专题一 Problem E
- 专题一 Problem R
- 专题一 Problem O
- 专题一 Problem P
- 专题一 Problem N
- 专题一 Problem K
- 专题三 Problem C
- 第四专题 Problem C
- 专题四 Problem C
- 专题一 Problem B(I)
- 数据结构专题训练一 C Bits
- C语言 作业一 结构体专题
- 数组中指针的应用
- 回归基础系列-快速排序[JAVA]
- 反向传播算法(过程及公式推导)
- Use libvirt to conmunicate with qemu
- libcurl上传文件到服务器的几种方式
- 专题一 Problem C
- 10.ARM汇编指令集详解
- C++上机练习
- Android的系统架构
- POJ 2485 Highways(Prim中最大边)
- 网络:网络基础知识
- ListView,GridView,单选默认选中,单选和多选盖布效果
- Hdu 3062 Party
- 【BZOJ1458】士兵占领【最大流】