poj 2287 田忌赛马
来源:互联网 发布:安卓sd卡数据恢复软件 编辑:程序博客网 时间:2024/05/16 09:33
(1)类型:贪心算法。
(2)题意:田忌有n匹马,国王有n匹马,田忌的马和国王的马比赛,问田忌要怎么安排自己的马匹出场的顺序才可以赢得比赛。
(3)解题思路:本题的解题思路在代码中有具体的注释。
(4)时间复杂度:O(n*log(n)+n);其中快排为:n*log(n),贪心主代码为O(n);
(5)总结:&此题用暴搜也可以敲的出来代码,但当n足够大时,是一定会超时的。一开始做的时候就超时了,后来借鉴大神的思想才搞出来。
&下面代码中用到运算符重载,即cmp函数将升序改为降序。
(6)代码:
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;const int MAX_N=1e3+6;int n,T[MAX_N],K[MAX_N];bool cmp(int a,int b){return a>b;}void solve(){ int ans=0,i,j,ii,jj; for(i=0,j=0,ii=n-1,jj=n-1;i<=ii;){ if(T[i]>K[j]){ans+=200;i++;j++;}/*如果比得过就比否则其他的也不一定能够比得过*/ else if(T[i]<K[j]){ans-=200;j++;ii--;}/*连最大的都没有王的大注定比不过*/ else {/*如果两者相等,则比较最小的*/ if(T[ii]>K[jj]){ans+=200;ii--;jj--;} else {/*如果最小的也没有王最小的大,则注定 比不过则比最小的*/ if(T[ii]<K[j])ans-=200; ii--;j++; } } } cout<<ans<<endl;}int main(){ ios::sync_with_stdio(false);cin.tie(0); while(cin>>n,n){ for(int i=0;i<n;i++)cin>>T[i]; for(int i=0;i<n;i++)cin>>K[i]; sort(T,T+n,cmp);sort(K,K+n,cmp); solve(); }}
阅读全文
1 0
- poj 2287 田忌赛马
- poj 2287 田忌赛马
- 田忌赛马(POJ 2287)
- 2287 poj 田忌赛马,贪心
- 田忌赛马: POJ 2287(贪心解法)
- poj 2287 贪心(田忌赛马)
- POJ 2287 田忌赛马 贪心
- poj 2287 田忌赛马 贪心
- Poj 2287 田忌赛马解题详解(贪心思想)
- HDUOJ-1052(poj-2287)(田忌赛马)(贪心)
- poj -- 2287 Tian Ji -- The Horse Racing(田忌赛马,递归分治)
- HDU-1052 POJ-2287 Tian Ji -- The Horse Racing(田忌赛马)
- 田忌赛马 poj 2287 (贪心,动态规划,贪心+动态规划)
- 田忌赛马
- 田忌赛马
- 田忌赛马
- 田忌赛马
- nyoj364(田忌赛马)
- PAT 甲级 1078. Hashing (25)
- [Haskell] CodeWars|Bouncing Balls
- HYSBZ
- 常用的Oracle的doc命令
- JAVA面试题整理之—基础篇第一部
- poj 2287 田忌赛马
- 剑指Offer------字符串的排列(全排列)
- ACM ICPC 2017 Warmup Contest 1 (NCPC 2016)
- 在IntelliJ IDEA下搭建基于Maven的spring boot框架
- 215[Medium]:Kth Largest Element in an Array
- Gemfire命令集
- JavaScript 数组对象深拷贝与浅拷贝
- JavaWeb笔记(1)
- Spring报错:org.springframework.beans.factory.NoUniqueBeanDefinitionException