zoukankan      html  css  js  c++  java
  • CF777B:Game of Credit Cards(贪心)

      这题和田忌赛马类似,我做这题的时候,被卡了2个小时,还是太菜了。

      题目要求的是第二个人输的最小次数和第一个人输的最多次数。

      求第二个人输的最小次数,正面不好求,可以通过反 面来求,即求第二个人打赢和打平第一个人的最大次数,用总比赛次数减去即可。然后求第一个人输的最多次数,就是相当于求第二个人赢的最多次数。

    #include<bits/stdc++.h>
    using namespace std;
    char s[1005];
    int a[1005],b[1005];
    int main()
    {
        int n,ans1=0;
        cin>>n>>s;
        for(int i=0;i<n;i++) a[i]=s[i];
        cin>>s;
        for(int i=0;i<n;i++) b[i]=s[i];
        sort(a,a+n);
        sort(b,b+n);
        for(int i=0,j=0;i<n&&j<n;)//求第二个人打赢和打平的最大次数
        {
            while(j<n)
            {
                if(a[i]<=b[j])//打赢或打平就让下2个数比
                {
                    i++;
                    j++;
                    ans1++;
                    break;
                }
                else//输了的话i不用动,仍然指向原数,j往后走,找更大的数来和a[i]比
                    j++;
            }
    
        }
        cout<<n-ans1<<endl;
        ans1=0;
        for(int i=0,j=0;i<n&&j<n;)//求第二个人打赢的最大次数,就少判断了一个打平的情况
        {
            while(j<n)
            {
                if(a[i]<b[j])
                {
                    i++;
                    j++;
                    ans1++;
                    break;
                }
                else
                    j++;
            }
        }
        cout<<ans1<<endl;
        return 0;
    
    
    }
    
  • 相关阅读:
    完美配置Tomcat的HTTPS
    ant的build.xml,引入第三方包
    Eclipse生成jar文件
    持续集成
    Java_Ant详解
    Python简介
    Python 2.7教程
    Eclipse和PyDev搭建完美Python开发环境(Windows篇)
    Jmeter4.0----正则表达式提取器(11)
    Jmeter4.0----设置集合点_并发(10)
  • 原文地址:https://www.cnblogs.com/eason9906/p/11754902.html
Copyright © 2011-2022 走看看