zoukankan      html  css  js  c++  java
  • HDU 浙江科技学院校赛2016

    Let's go to play

    题意:给你N行信息,F 或者 M 是 表示 女士 或者男士 在 A -- B  之间的日期内有有空。作为主人 你要确定一天使得这一天邀请到的人数最多,并且这一天来得男人和女人一样多。

    方法:一年一共366天,把每一天的信息记住,最后遍历一下,看哪一天能够邀请到的人数最多。

    非常实用的一个点啊。。以后到了公司说不定可以用得到。写个程序跑一下,算法简直吊炸天。

    #include <stdio.h>
    #include <algorithm>
    #include <string.h>
    #include <queue>
    using namespace std;
    
    struct node
    {
        int a1;
        int b1;
        int c1;
    } viss[370];
    
    int main()
    {
        int n,a,b;
        char st[5];
        while(~scanf("%d",&n))
        {
            memset(viss,0,sizeof(viss));
            for(int i=0; i<n; i++)
            {
                scanf("%s",st);
                scanf("%d%d",&a,&b);
                if(strcmp(st,"F")==0)
                {
                    for(int j=a; j<=b; j++)
                    {
                        viss[j].a1++;
                        if(viss[j].a1==viss[j].b1)//只有男生女生有可能一样多的时候才有必要保存更大的值。
                        {
                            viss[j].c1=viss[j].a1;
                        }
                    }
                }
                else if(strcmp(st,"M")==0)
                {
                    for(int j=a; j<=b; j++)
                    {
                        viss[j].b1++;
                        if(viss[j].a1==viss[j].b1)
                        {
                            viss[j].c1=viss[j].b1;
                        }
                    }
                }
            }
            int max1=-1;
            for(int i=1; i<=366; i++)
            {
                if(viss[i].c1>max1)
                {
                    max1=viss[i].c1;
                }
            }
            printf("%d
    ",max1*2);//因为保存的是男生或者女生的数量,总人数应该乘二。
        }
        return 0;
    }

    田忌赛马

    题意:给出田忌和齐王马的速度,求最优策略。

    方法:这贪心简直绝了。

    每次田忌都有三种选择:赢,输,或者平局。

    能赢就不输、平局。

    能平局就不输。

    如果齐王出最好的马的时候,田忌要考虑他最快的马是不是能够战胜齐王最快的马。

    如果战胜的了,就战胜。符合了能赢就不输的贪心策略。

    如果会战败,那么说明无论田忌出哪一匹马都会败,干脆出一匹最差的。

    如果平局,情况就有些复杂:

    平局说明不可能赢了,就在平局和输之间做选择。

    如果平局的话,没有奖金可以拿,

    看一下最差的马是不是能打败齐王,

    如果最差的马可以打败齐王最差的马,就打。

    直到打不过齐王最差的马,说明最差的马谁都打不过,注定要输,还不如先给那个平局的牺牲了。

    这种贪心的思路简直是666.

    #include <stdio.h>
    #include <algorithm>
    #include <string.h>
    using namespace std;
    
    int a[1011],b[1011];
    
    int main()
    {
        int n;
        while(~scanf("%d",&n))
        {
            for(int i=0; i<n; i++)
            {
                scanf("%d",&a[i]);
            }
            for(int i=0; i<n; i++)
            {
                scanf("%d",&b[i]);
            }
            sort(a,a+n);
            sort(b,b+n);
            int max1=n-1,max2=n-1;
            int min1=0,min2=0;
            int sum=0;
            for(int i=0; i<n; i++)
            {
                if(a[max1]<b[max2])
                {
                    min1++;
                    max2--;
                    sum-=100;
                }
                else if(a[max1]>b[max2])
                {
                    max1--;
                    max2--;
                    sum+=100;
                }
                else
                {
                    if(a[min1]>b[min2])
                    {
                        sum+=100;
                        min1++;
                        min2++;
                    }
                    else
                    {
                        if(a[min1]<b[max2])
                        {
                            sum-=100;
                        }
                        min1++;
                        max2--;
                    }
                }
            }
            printf("%d
    ",sum);
        }
        return 0;
    }
  • 相关阅读:
    一、Javadoc文档标记
    0-写在java系列文章之前
    Tomcat全攻略
    linux使用普通账户时,无法登录,提示“-bash: fork: retry: Resource temporarily unavailable”
    在Linux下安装和使用MySQL
    linux下修改jdk环境变量的方法
    linux下卸载系统自带或者非自带的jdk
    linux中 /etc/profile的作用
    每天一个linux命令:tar命令-jia2
    如何使用蓝湖设计稿同时适配PC及移动端
  • 原文地址:https://www.cnblogs.com/qioalu/p/5334280.html
Copyright © 2011-2022 走看看