• 洛谷 P1178 到天宫做客


    题目描述

    有一天,我做了个梦,梦见我很荣幸的接到了猪八戒的邀请,到天宫陪他吃酒。我犹豫了。天上一日,人间一年啊!当然,我是个闲人,一年之中也没有多少时日是必须在人间的,因此,我希望选一个最长的空闲时间段,使我在天上待的时间尽量长。记住,今年是4000年。天上一天也是24小时,每小时60分,每分60秒。

    输入输出格式

    输入格式:

     

    输入文件的第一行是一个非负整数 N,表示4000年中必须呆在人间的天数,以下共N行,每行两个用空格隔开的正整数,即日期(月,日),输入文件保证无错误,日期无重复。

     

    输出格式:

     

    输出文件仅有一行包含一个非负整数,即在天上的时间(四舍五入精确到秒)。

     

    输入输出样例

    输入样例#1: 复制
    2
    3 8
    12 2
    输出样例#1: 复制
    63266
    思路:模拟
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n,ans,num[13];
    struct nond{
        int month,day;
    }v[366];
    int tim(nond a,nond b){
        if(a.month==b.month)    return b.day-a.day-1;
        int bns=num[a.month]-a.day;
        for(int i=a.month+1;i<b.month;i++)    bns+=num[i];
        bns+=b.day-1;
        return bns;
    }
    int cmp(nond a,nond b){
        if(a.month==b.month)    return a.day<b.day;
        return a.month<b.month; 
    }
    int main(){
        scanf("%d",&n);
        num[1]=num[3]=num[5]=num[7]=num[8]=num[10]=num[12]=31;
        num[4]=num[6]=num[9]=num[11]=30;
        num[2]=29;
        for(int i=1;i<=n;i++)
            scanf("%d%d",&v[i].month,&v[i].day);
        v[n+1].month=1;v[n+1].day=0;
        v[n+2].month=12;v[n+2].day=32;
        sort(v+1,v+3+n,cmp);
        for(int i=1;i<=n+1;i++)
            ans=max(ans,tim(v[i],v[i+1]));
        ans=ans*24*60*60;
        if(ans%366<183)    printf("%d",ans/366);
        else printf("%d",ans/366+1);
    }
     
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    http响应状态码大全
    Oracle中start with...connect by子句的用法
    sql的连接查询
    spring框架等web程序在tomcat下的启动顺序
    rest模式get,post,put,delete简单讲解
    context-param和init-param的区别
    spring的webutils包。适用于访问httpservletrequest和httpservletresponse
    java日志的相关配置文件知识
    jquery开发插件提供的几种方法
    Node.js实现网络编程
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7860343.html
Copyright © 2020-2023  润新知