10.27 noip模拟试题(moring)

WPS转word太丑了 凑合看喽

第二题

【题目描述】

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

【输入格式】

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

【输出格式】

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

【样例输入 1】

2000-01-01 00:00:00

2000-01-01 00:00:01

【样例输出 1】

1000

【样例输入 2】

0 1 2 3 4 5 6 7 8 9  0 1 2 3 4 5 6 7

2000-01-01 00:00:00

2000-11-11 00:00:00

【样例输出 2】

27216000000

【样例解释】

从前有座山。

考场上写了一个多小时 还好写出来了....

要不就尴尬了2333

/*有点恶心....*/
#include<iostream>
#include<cstdio>
#include<cstring>
#define ll long long
using namespace std;
ll nian1,nian2,yue1,yue2,tian1,tian2;
ll shi1,shi2,fen1,fen2,miao1,miao2;
ll now,pre;
ll Mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
char s1[110],s2[110],c1[110],c2[110];
ll Get1(char s[110]){//年
    ll x=0;
    for(ll i=0;i<4;i++)
        x=x*10+s[i]-‘0‘;
    return x;
}
ll Get2(char s[110]){//月
    ll x=0;
    for(ll i=5;i<7;i++)
        x=x*10+s[i]-‘0‘;
    return x;
}
ll Get3(char s[110]){//日
    ll x=0;
    for(ll i=8;i<10;i++)
        x=x*10+s[i]-‘0‘;
    return x;
}
ll Get4(char s[110]){//时
    ll x=0;
    for(ll i=0;i<2;i++)
        x=x*10+s[i]-‘0‘;
    return x;
}
ll Get5(char s[110]){//分
    ll x=0;
    for(ll i=3;i<5;i++)
        x=x*10+s[i]-‘0‘;
    return x;
}
ll Get6(char s[110]){//秒
    ll x=0;
    for(ll i=6;i<8;i++)
        x=x*10+s[i]-‘0‘;
    return x;
}
ll Is(ll x){
    return (x%400==0)||(x%100&&x%4==0);
}
ll Nian(ll x){
    if(Is(x))return 366;
    else return 365;
}
int main()
{
    freopen("two.in","r",stdin);
    freopen("two.out","w",stdout);
    scanf("%s%s%s%s",s1,s2,c1,c2);
    nian1=Get1(s1);yue1=Get2(s1);tian1=Get3(s1);
    nian2=Get1(c1);yue2=Get2(c1);tian2=Get3(c1);
    shi1=Get4(s2);fen1=Get5(s2);miao1=Get6(s2);
    shi2=Get4(c2);fen2=Get5(c2);miao2=Get6(c2);
    for(int i=2000;i<nian2;i++)
        now+=Nian(i);
    for(int i=1;i<yue2;i++)
        now+=Mon[i];
    if(Is(nian2)&&yue2>2)now++;
    now+=tian2-1;now=now*24;//shi
    now+=shi2;now*=60;now+=fen2;// fen
    now*=60;now+=miao2;//miao

    for(int i=2000;i<nian1;i++)
        pre+=Nian(i);
    for(int i=1;i<yue1;i++)
        pre+=Mon[i];
    if(Is(nian1)&&yue1>2)pre++;
    pre+=tian1-1;pre=pre*24;//shi
    pre+=shi1;pre*=60;pre+=fen1;// fen
    pre*=60;pre+=miao1;//miao

    cout<<(now-pre)*1000<<endl;
    return 0;
}

死亡

【问题描述】

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

【输入格式】

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

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

【输出格式】

一行一个整数表示答案。

【样例输入】

3 2

1

1

1

【样例输出】

1

【样例解释】

山里有座庙。

裸贪心

#include<cstdio>
#include<queue>
#define maxn 100010
using namespace std;
int n,m,c[maxn],mx,k;
priority_queue<int,vector<int>,greater<int> >q;
int init(){
    int x=0,f=1;char s=getchar();
    while(s<‘0‘||s>‘9‘){if(s==‘-‘)f=-1;s=getchar();}
    while(s>=‘0‘&&s<=‘9‘){x=x*10+s-‘0‘;s=getchar();}
    return x*f;
}
int main()
{
    freopen("death.in","r",stdin);
    freopen("death.out","w",stdout);
    n=init();m=init();
    for(int i=1;i<=n;i++)
        c[i]=init();
    for(int i=1;i<=m;i++)
        q.push(0);
    for(int i=1;i<=n+1;i++){
        mx=q.top();q.pop();
        q.push(mx+c[i]);
        if(i==n+1){
            printf("%d\n",mx);
            break;
        }
    }
    return 0;
}

凝视

【问题描述】

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

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

【输入格式】

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

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

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

【输出格式】

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

【样例输入】

1

2 3 2 2

1 2

1 2

【样例输出】

4

【样例解释】

庙里有座山。

骗分没骗到 不粘了2333

正解很锻炼脑子2333

/*
贪心.....
不是dp(基于连通性的状丫dp)
如果确定了选几个1*2 几个1*3就ok了
然后枚举摆几个1*3 只要个数够 一定能全放开
然后Judge
如果只放1*2的 最多剩下一个 或者0个
先放1*3的 一样的结论 1*2的剩下1或0个
剩下的空间可以算出来
那么放几个1*2就能算出来 last/2
小小的特盘 要是2*2 不能放1*3的
*/
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 10010
using namespace std;
int T,n,m,n1,n2,s1,s2,ans,c1[maxn],c2[maxn];
struct node{
    int x,c;
    bool operator < (const node &a) const{
        return c>a.c;
    }
}p1[maxn],p2[maxn];
int init(){
    int x=0,f=1;char s=getchar();
    while(s<‘0‘||s>‘9‘){if(s==‘-‘)f=-1;s=getchar();}
    while(s>=‘0‘&&s<=‘9‘){x=x*10+s-‘0‘;s=getchar();}
    return x*f;
}
void Cl(){
    ans=0;c1[0]=0;c2[0]=0;
}
int min(int x,int y){
    return x<y?x:y;
}
int main()
{
    freopen("eyesight.in","r",stdin);
    freopen("eyesight.out","w",stdout);
    T=init();
    while(T--){
        Cl();
        n=init();m=init();
        n1=init();n2=init();
        for(int i=1;i<=n1;i++){
            p1[i].x=2;p1[i].c=init();
        }
        for(int i=1;i<=n2;i++){
            p2[i].x=3;p2[i].c=init();
        }
        sort(p1+1,p1+1+n1);
        sort(p2+1,p2+1+n2);
        for(int i=1;i<=n1;i++)
            c1[i]=c1[i-1]+p1[i].c;
        for(int i=1;i<=n2;i++)
            c2[i]=c2[i-1]+p2[i].c;
        if(n==2&&m==2){
            s1=2;s2=0;
            ans=max(ans,c1[s1]+c2[s2]);
        }
        else {
            for(s2=0;s2*3<=n*m;s2++){
                s1=n*m-s2*3;s1/=2;
                ans=max(ans,c1[min(s1,n1)]+c2[min(s2,n2)]);//取小 取小 取小
            }
        }
        printf("%d\n",ans);
    }
    return 0;
}

时间: 2024-11-18 10:12:28

10.27 noip模拟试题(moring)的相关文章

10.27 noip模拟试题(afternoon)(跪在游戏玩少了2333)

[问题描述] 祖玛是一款曾经风靡全球的游戏,其玩法是:在一条轨道上初始排列着若干个彩色珠子,其中任意三个相邻的珠子不会完全同色.此后,你可以发射珠子到轨道上并加入原有序列中.一旦有三个或更多同色的珠子变成相邻,它们就会立即消失.这类消除现象可能会连锁式发生,其间你将暂时不能发射珠子. 开发商最近准备为玩家写一个游戏过程的回放工具.他们已经在游戏内完成了过程记录的功能,而回放功能的实现则委托你来完成. 游戏过程的记录中,首先是轨道上初始的珠子序列,然后是玩家接下来所做的一系列操作.你的任务是,在各

10.7 noip模拟试题

楼[问题背景]zhx 为他的妹子造了一幢摩天楼.[问题描述]zhx 有一幢摩天楼. 摩天楼上面有 M 个观光电梯,每个观光电梯被两个整数???? " ,???? " 描述.每个电梯只有两个按钮, (针对第 i 个电梯)两个按钮分别可以使电梯向上???? " 层向下???? " 层.摩天楼的高度是无限的,但是电梯不可以钻入地下,也就是说是有下限的.每层楼用整数标记, 以 0 作为地面这一层的标记.zhx 去陪他妹子了,留你一个人在摩天楼的 0 层,现在你想知道,仅可以

10.23 noip模拟试题

尼玛蛋pdf好难粘 直接写了 T1 /*开始写wa了 我真弱2333 关于p的排序规则不只是差值 为了字典序最小 还要拍别的*/ #include<cstdio> #include<algorithm> #define maxn 100010 #define inf 1e7 #define mem(a,b) for(int i=0;i<=n;i++)a[i]=b[i]; using namespace std; int n,m,ans=inf,k; char s[maxn],

10.4 noip模拟试题

题目名称 PA 青春 三部曲 名称 huakai taritari truetears 输入 huakai.in taritari.in truetears.in 输出 huakai.out taritari.out truetears.out 每个测试点时限 1秒 1秒 1秒 内存限制 512MB 512MB 512MB 测试点数目 10 10 10 每个测试点分值 10 10 10 是否有部分分 无 无 无 题目类型 传统 传统 传统 注意事项(请务必仔细阅读): PA [题目描述] 汉诺塔

10.3 noip模拟试题

希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“前进栈”,从“后退栈”中取出栈顶页面,并设置为当前页面.FORWARD: 如果“前进栈”为空则忽略此命令.否则将当前两面压入“后退栈”,从“前进栈”中取出栈顶页面,并设置为当前页面.VISIT: 将当前页面压入“后退栈”. 并将当前页面置为指定页面, 并将“前进栈”置空.QUIT: 退出.假设此浏览

10.5 noip模拟试题

2bc*cosA=b^2+c^2-a^2 数学题QAQ 开始π精度不够40分 怪我喽~ #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const double pi=3.14159265358979323846264; int T; double a,c,b,d,r1,r2,C,x,y,P,s; double Abs(dou

10.8 noip模拟试题

  1.花 (flower.cpp/c/pas) [问题描述] 商店里出售n种不同品种的花.为了装饰桌面,你打算买m支花回家.你觉得放两支一样的花很难看,因此每种品种的花最多买1支.求总共有几种不同的买花的方案?答案可能很大,输出答案mod p的值. [输入格式] 一行3个整数n,m,p,意义如题所述. [输出格式] 一个整数,表示买花的方案数. [输入输出样例1] flower.in flower.out 4 2 5 1 见选手目录下的flower / flower1.in与flower /

9.27 noip模拟试题

工资 (money/money.in/money.out) 时限1000ms 内存256MB 聪哥在暑假参加了打零工的活动,这个活动分为n个工作日,每个工作日的工资为Vi.有m个结算工钱的时间,聪哥可以自由安排这些时间,也就是说什么时候拿钱,老板说的不算,聪哥才有发言权!(因为聪哥是土豪,他是老板的老板) 聪哥不喜欢身上一次性有太多的钱,于是他想安排一下拿钱的时间,使他一次性拿的钱中最大的最小.(最后一天一定要领钱) 输入 第一行 2个数 n,m 接下来n行,每行一个数,代表Vi. 输出 最小的

2016.10.30 NOIP模拟赛 day2 PM 整理

满分:300分 直接全部爆零,真的是很坑啊! 10.30的题目+数据:链接:http://pan.baidu.com/s/1jHXLace 密码:i784 T1: 题目中的难点就是每次折叠的点可能应经被覆盖了,我的做法是递归去推出它现在在哪个位置,不仅超时,而且答案错误. 也曾想过用数组去存下它当前的位置,但是被10^18的数据吓到了. 正解:并不是所有的坐标都有用,仅仅是那m个将要用到的点有用,所以每次折叠,就只对之后的有用的k个点进行更新,这样就行了. 时间复杂度O(m^2) 不会超时的.