zoukankan      html  css  js  c++  java
  • HDU 1052

    绝好的贪心题
    把马按照从大到小排序。
    若田忌的快马比王的快马快,直接赢
    若田忌的快马比王的快马慢,则用最慢的马和王比
    若快马相等,则转向慢马。若田忌的慢马比王的慢马快,则赢,指针移位。否则,比较田忌的慢马与王的快马,若相等,直接和。否则,让慢马输给王的快马(只有这种情况)
    想想,应该是按上面的解答的。这题的贪心真不好想。。。看来自己还有距离。
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 using namespace std;
     5 
     6 const int MAX=1010;
     7 
     8 int tian[MAX],king[MAX];
     9 
    10 bool cmp(int a,int b){
    11 if(a>b) return true;
    12 return false;
    13 }
    14 
    15 int main(){
    16 int n,cnt,unt;
    17 while(scanf("%d",&n),n){
    18 cnt=unt=0;
    19 for(int i=0;i<n;i++)
    20 scanf("%d",&tian[i]);
    21 for(int i=0;i<n;i++)
    22 scanf("%d",&king[i]);
    23 sort(tian,tian+n,cmp);
    24 sort(king,king+n,cmp);
    25 int front=0;int head=0;
    26 int rear=n-1;int last=n-1;
    27 while(front<=rear){
    28 if(tian[front]>king[head]){
    29 head++; front++;
    30 cnt++;
    31 }
    32 else if(tian[front]<king[head]){
    33 unt++;
    34 head++; rear--;
    35 }
    36 else {
    37 if(tian[rear]>king[last]){
    38 cnt++;
    39 rear--; last--;
    40 }
    41 else if(tian[rear]==king[head]){
    42 rear--; head++;
    43 }
    44 else{
    45 unt++;
    46 rear--; head++;
    47 }
    48 }
    49 }
    50 printf("%d
    ",(cnt-unt)*200);
    51 }
    52 return 0;
    53 }
    View Code
  • 相关阅读:
    combination sum II
    Combination sum
    Swap Nodes in Pairs(交换节点)
    4 sum
    3 sum closest
    五大常用算法:分治、动态规划、贪心、回溯和分支界定
    3sum(从数组中找出三个数的和为0)
    从系统相册选择照片时,没有选框,相册无选框
    iOS Xcode 调试技巧 全局断点这样加才有意思
    将任意对象存进数据库
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/3791841.html
Copyright © 2011-2022 走看看