HDU 1052田忌赛马 贪心+动态数组
2016-05-15 19:07
253 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1052
就是田忌赛马,贪心策略为:
田忌的最快与齐王最快比,田忌快则比掉,赢下;
田忌慢则用田忌最慢的比齐王最快,输掉;
快马相等的话,用田忌的最慢与齐王最慢比,田忌快则赢下,田忌慢则比齐王最快输掉;
最快与最慢都相等,则用田忌最慢比掉齐王最快,输掉;
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = 1005 ;
vector<int> h1;
vector<int> h2;
int main(){
int n ;
//freopen("in.txt","r",stdin);
while(~scanf("%d",&n),n){
int a;
h1.clear();
h2.clear();
for(int i=0;i<n;i++){
scanf("%d",&a);
h1.push_back(a);
}
for(int i=0;i<n;i++){
scanf("%d",&a);
h2.push_back(a);
}
sort(h1.begin(),h1.end());
sort(h2.begin(),h2.end());
int sum = 0 ;
for(int i=0;i<n;i++){
// for(int i=0;i<h1.size();i++)printf("%d %d\n",h1[i],h2[i]);
// printf("sum = %d\n",sum);
if(h1.back()>h2.back()){
//printf("why\n");
sum+=200;
h1.erase(h1.end()-1);
h2.erase(h2.end()-1);
}else if(h1.back()<h2.back()){
sum-=200;
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}else{
if(h1.front()>h2.front()){
sum+=200;
h1.erase(h1.begin());
h2.erase(h2.begin());
}else if(h1.front()<h2.front()){
sum-=200;
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}else{
if(h1.front()==h2.back()){
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}else{
sum-=200;
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}
}
}
}
printf("%d\n",sum);
}
return 0;
}
就是田忌赛马,贪心策略为:
田忌的最快与齐王最快比,田忌快则比掉,赢下;
田忌慢则用田忌最慢的比齐王最快,输掉;
快马相等的话,用田忌的最慢与齐王最慢比,田忌快则赢下,田忌慢则比齐王最快输掉;
最快与最慢都相等,则用田忌最慢比掉齐王最快,输掉;
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
const int maxn = 1005 ;
vector<int> h1;
vector<int> h2;
int main(){
int n ;
//freopen("in.txt","r",stdin);
while(~scanf("%d",&n),n){
int a;
h1.clear();
h2.clear();
for(int i=0;i<n;i++){
scanf("%d",&a);
h1.push_back(a);
}
for(int i=0;i<n;i++){
scanf("%d",&a);
h2.push_back(a);
}
sort(h1.begin(),h1.end());
sort(h2.begin(),h2.end());
int sum = 0 ;
for(int i=0;i<n;i++){
// for(int i=0;i<h1.size();i++)printf("%d %d\n",h1[i],h2[i]);
// printf("sum = %d\n",sum);
if(h1.back()>h2.back()){
//printf("why\n");
sum+=200;
h1.erase(h1.end()-1);
h2.erase(h2.end()-1);
}else if(h1.back()<h2.back()){
sum-=200;
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}else{
if(h1.front()>h2.front()){
sum+=200;
h1.erase(h1.begin());
h2.erase(h2.begin());
}else if(h1.front()<h2.front()){
sum-=200;
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}else{
if(h1.front()==h2.back()){
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}else{
sum-=200;
h1.erase(h1.begin());
h2.erase(h2.end()-1);
}
}
}
}
printf("%d\n",sum);
}
return 0;
}
相关文章推荐
- maven--私服的搭建(Nexus的使用)
- 大数问题
- Gson的使用
- linux安全---系统更新+弱口令检测工具+nmap扫描工具
- 常用排序
- WampServer 2.5设置外网访问/局域网手机访问(403 Forbidden错误解决方法)
- Android百度定位API的使用
- 继上篇—FloatActionButton
- Android百度定位API的使用
- JavaIO系统
- web service接口调试心得
- ANDROID开发笔记(三)在ANDROID中安装OPENCV
- ANDROID开发笔记(三)在ANDROID中安装OPENCV
- 图文解说:Nginx+tomcat配置集群负载均衡
- Http1.0、Spdy和Http2.0的对比
- 简单立体几何和DP的结合
- 2016年5月15号学习笔记
- JSP page指令详解
- ROS(indigo)_turtlebot仿真示例包括stage和gazebo
- matlab 矢量化编程(二)—— 使用 meshgrid