• 2017 无奈的模拟赛 1


    悲剧的开始~~~~

    竞赛时间:??????????:??-??:??

    题目名称

    第二题

    死亡

    凝视

    名称

    two

    death

    eyesight

    输入

    two.in

    death.in

    eyesight.in

    输出

    two.out

    death.out

    eyesight.out

    每个测试点时限

    1 秒

    1 秒

    1 秒

    内存限制

    512MB

    512MB

    512MB

    测试点数目

    10

    10

    10

    每个测试点分值

    10

    10

    10

    是否有部分分

    题目类型

    传统

    传统

    传统

    注意事项(请务必仔细阅读):

    第二题

    【题目描述】

    给你两个日期,问这两个日期差了多少毫秒。

    【输入格式】

    两行,每行一个日期,日期格式保证为“YYYY-MM-DD hh:mm:ss ”这种形式。第二个日期时间一定比第一个日期时间要大两个日期的年份一定都是 21 世纪的年份。

    【输出格式】

    一行一个整数代表毫秒数。

    【样例输入 1】

    2000-01-01 00:00:00

    2000-01-01 00:00:01

    【样例输出 1】

    1000

    【样例输入 2】

    2000-01-01 00:00:00

    2000-11-11 00:00:00

    【样例输出 2】

    27216000000

    【样例解释】

    从前有座山。

    【数据范围与规定】

    对于10%的数据,两个日期相同。

    对于20%的数据,两个日期只有秒数可能不同。

    对于30%的数据,两个日期只有秒数、分钟数可能不同。对于40%的数据,两个日期的年月日一定相同。

    对于60%的数据,两个日期的年月一定相同。对于80%的数据,两个日期的年份一定相同。

    对于100%的数据,两个日期一定都是 21 世纪的某一天,且第二个日期一定大于等于第一个日期。

     把一天当做12小时~~搞成SB也没A..

    可以算出每个年月日到2001刚开始的秒,两个做差再加上时秒分的差

     1 #include <algorithm>
     2 #include <cstdio>
     3 
     4 #define LL long long
     5 #define dayss 86400
     6 
     7 using namespace std;
     8 
     9 int agy,agm,agd,agh,agmm,agss,noy,nom,nod,noh,nomm,noss;
    10 int month[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    11 LL ans,numm;
    12 char c;
    13 
    14 int main()
    15 {
    16     freopen("two.in","r",stdin);
    17     freopen("two.out","w",stdout);
    18     scanf("%d-%d-%d %d:%d:%d",&agy,&agm,&agd,&agh,&agmm,&agss);
    19     scanf("%d-%d-%d %d:%d:%d",&noy,&nom,&nod,&noh,&nomm,&noss);
    20     for(int i=2000;i<noy;i++)
    21     {
    22         if((i%400==0)||(i%4==0&&i%100!=0)) ans+=366*dayss;
    23         else ans+=(LL)365*dayss;
    24     }
    25     for(int i=2000;i<agy;i++)
    26     {
    27         if((i%400==0)||(i%4==0&&i%100!=0)) ans-=366*dayss;
    28         else ans-=(LL)365*dayss;
    29     } int nf=0,af=0;
    30     if((noy%400==0)||(noy%4==0&&noy%100!=0)) nf=1;
    31     if((agy%400==0)||(agy%4==0&&agy%100!=0)) af=1;
    32     for(int i=1;i<nom;i++)
    33         if(nf&&i==2) ans+=(LL)29*dayss;
    34         else ans+=(LL)month[i]*dayss;
    35     for(int i=1;i<agm;i++)
    36         if(af&&i==2) ans-=(LL)29*dayss;
    37         else ans-=(LL)month[i]*dayss;
    38     ans+=(LL)nod*dayss; ans-=(LL)agd*dayss;
    39     ans+=(LL)(noss-agss+(nomm-agmm)*60+(noh-agh)*3600);
    40     if(ans) printf("%I64d000",ans); else puts("0");
    41     return 0;
    42 }
    two

    死亡

    【问题描述】

    现在有 个位置可以打 sif,有 + 1个人在排队等着打 sif。现在告诉你前个人每个人需要多长的时间打 sif,问你第 + 1个人什么时候才能打 sif。(前个人必须按照顺序来)

    【输入格式】

    第一行两个整数 , 如上所述。

    接下来 行每行一个整数代表每个人所需要用的时间。

    【输出格式】

    一行一个整数表示答案。

    【样例输入】

    3 2

    1

    1

    1

    【样例输出】

    1

    【样例解释】

    山里有座庙。

    【数据规模与约定】

    对于100%的数据,每个人所需用的时间不超过105

    测试点

    测试点

    1

    10

    10

    1

    5000

    500

    2

    20

    10

    2

    100000

    5000

    3

    50

    10

    3

    100000

    10000

    4

    1000

    500

    4

    100000

    20000

    5

    2000

    500

    5

    100000

    50000

    用小根堆维护最短时间

     1 #include <algorithm>
     2 #include <cstdio>
     3 #include <queue>
     4 
     5 #define LL long long
     6 
     7 using namespace std;
     8 
     9 priority_queue<LL,vector<LL>,greater<LL> >que;
    10 const int N(1e6+15);
    11 LL n,m,tim[N],temp;
    12 
    13 int main()
    14 {
    15     freopen("death.in","r",stdin);
    16     freopen("death.out","w",stdout);
    17     scanf("%lld%lld",&n,&m);
    18     for(int i=1;i<=n;i++) scanf("%lld",tim+i);
    19     for(int i=1;i<=m;i++) que.push(tim[i]);
    20     for(int i=m+1;i<=n;i++)
    21     {
    22         temp+=que.top();
    23         que.pop();
    24         que.push(tim[i]+temp);
    25     }
    26     printf("%lld",que.top());
    27     return 0;
    28 }
    death

    凝视

    【问题描述 】

    背包是个好东西,希望我也有。

    给你一个二维的背包,它的体积是n ×m 。现在你有一些大小为1 × 2和1 × 3的物品,每个物品有自己的价值。你希望往背包里面装一些物品,使得它们的价值和最大,问最大的价值和是多少。

    【输入格式】

    第一行一个整数t 代表该测试点的数据组数。

    对于每组数据,第一行有四个整数n ,m  ,n 1,n 2,其中 12分别代表大小为 1 × 2和大小为1 × 3的物品个数。

    接下来一行有 1个数代表每个1 × 2物品的价值。接下来一行有 2个数代表每个1 × 3物品的价值。

    【输出格式】

    对于每组询问,输出能够达到的价值最大值。

    【样例输入】

    1

    2 3 2 2

    1 2

    1 2

    【样例输出】

    4

    【样例解释】

    庙里有座山。

    【数据规模与约定】

    对于20%的数据, n,m ≤ 10, n1,n 2 ≤ 100。对于70%的数据, n,m ≤ 100, n1, n2 ≤ 2000。

    对于100%的数据,1 ≤ t≤ 10,1 ≤ n ,m ≤ 500,0 ≤  n1, n2 ≤ 10000。

    法一:连通块状压DP~~~呵呵呵

    法二:贪心——处理出每个物品的价值前缀和(降序) 每举放1*3的物品的面积,计算出1*2 和 1*3 的物品的前缀和编号,每次计算最大值

     1 #include <algorithm>
     2 #include <cstring>
     3 #include <cstdio>
     4 
     5 using namespace std;
     6 
     7 const int N(10000+15);
     8 int t,n,m,n1,n2,val1[N],val2[N];
     9 
    10 int sum1[N],sum2[N],ans;
    11 bool cmp(int a,int b)
    12 {
    13     return a>b;
    14 }
    15 
    16 int main()
    17 {
    18     freopen("eyesight.in","r",stdin);
    19     freopen("eyesight.out","w",stdout);
    20     scanf("%d",&t);
    21     for(;t--;)
    22     {
    23         scanf("%d%d%d%d",&n,&m,&n1,&n2); ans=0;
    24         for(int i=1;i<=n1;i++) scanf("%d",val1+i);
    25         for(int i=1;i<=n2;i++) scanf("%d",val2+i);
    26         sort(val1+1,val1+n1+1,cmp);
    27         sort(val2+1,val2+n2+1,cmp);
    28         for(int i=1;i<=n1;i++) sum1[i]=sum1[i-1]+val1[i];
    29         for(int i=1;i<=n2;i++) sum2[i]=sum2[i-1]+val2[i];
    30         int temp=n*m;
    31         if((n==2||m==2)&&(n%3==2&&m%3==2)) temp-=4;
    32         for(int i=0,j;i<=temp;i+=3)
    33         {
    34             j=(n*m-i)>>1;
    35             ans=max(ans,sum2[min(i/3,n2)]+sum1[min(j,n1)]);
    36         }
    37         printf("%d
    ",ans);
    38     }
    39     return 0;
    40 }
    eyesight
    ——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。
  • 相关阅读:
    在bindingNavigator1中加入具有更好体验性的DateTimePicker
    static的初始化顺序 (转)
    C#数据结构求最大公约数和最小公倍数[辗转相除法]
    DataGridView控件显示行号
    C# 小票打印机 直接打印 无需驱动[转]
    Core Data 中遇到的一些问题
    字符指针不分配存储区,字符常量存储于静态数据区
    传送门
    Error Set
    实现类似iPhone通讯录新增名片,保存,之后可进行编辑操作的功能
  • 原文地址:https://www.cnblogs.com/Shy-key/p/7100881.html
Copyright © 2020-2023  润新知