2017 无奈的模拟赛

悲剧的开始~~~~

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


题目名称


第二题


死亡


凝视


名称


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


是否有部分分





题目类型


传统


传统


传统

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

P73 第二题

第二题

【题目描述】

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

【输入格式】

两行,每行一个日期,日期格式保证为“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%的数据,两个日期的年份一定相同。

第 2 页 共 5 页

P73 第二题

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

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

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

two

第 3 页 共 5 页

P73 死亡

死亡

【问题描述】

现在有 个位置可以打 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 }

第 4 页 共 5 页

P73 凝视

凝视

【问题描述】

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

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

【输入格式】

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

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

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

【输出格式】

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

【样例输入】

1

2 3 2 2

1 2

1 2

【样例输出】

4

【样例解释】

庙里有座山。

【数据规模与约定】

对于20%的数据, , ≤ 10, 12 ≤ 100。对于70%的数据, , ≤ 100, 12 ≤ 2000。

对于100%的数据,1 ≤ ≤ 10,1 ≤  , ≤ 500,0 ≤  1, 2 ≤ 10000。

时间: 2024-10-27 00:28:40

2017 无奈的模拟赛的相关文章

2017 7.22 模拟赛

最水的一次模拟赛.. 点击查看题目 T1 求最后K位  那前面的数是没有比要求的 , 我们就把 10k 作为模数 ,对答案进行取模 就好了  #include <ctype.h> #include <cstdio> #define N 100005 typedef long long LL; void read(LL &x) { x=0;bool f=0; register char ch=getchar(); for(;!isdigit(ch);ch=getchar())

2017 6 11模拟赛

盘子序列 [题目描述] 有 n 个盘子.盘子被生产出来后,被按照某种顺序摞在一起.初始盘堆中如果一 个盘子比所有它上面的盘子都大,那么它是安全的,否则它是危险的.称初始盘堆为 A,另外有一个开始为空的盘堆 B.为了掩盖失误,生产商会对盘子序列做一些“处 理” ,每次进行以下操作中的一个:(1)将 A 最上面的盘子放到 B 最上面:(2)将 B 最上 面的盘子给你. 在得到所有n个盘子之后, 你需要判断初始盘堆里是否有危险的盘子. [输入格式] 输入文件包含多组数据(不超过 10 组) 每组数据的

2017/11/1模拟赛

磁星(magnet)[题目描述]在 B 城呆惯了的小 H 决定去外太空溜达一圈.人类现已发现并开发的星球(包括小 H 所在的星球)有 n 个,并且在这 n 个星球之中,人们发现了 m 对两个星球的关系.关系"xy"表示的是星球 x 对星球 y 有 1 一个单位的引导力,由于引导力还具有传递性,如果星球 x 对星球 y 能有恰好 a 个单位的引导力,星球y 对星球 z 能有恰好 b 个单位的引导力,那么星球 x 对星球 z 就能有恰好 a+b 个单位的引导力. 换言之,星球 x 对星球

2017/9/13模拟赛

粉饰(decorate) [题目描述] 小D有一块被分为n*m个格子的矩形鱼片.为了装饰鱼片,小D决定给每个格子上色.由于小D很喜欢红白,所以小D给每个格子涂上了红色或白色,第i行第j列的格子颜色记为c[i,j].涂完之后,小D想评估这块鱼片的"XY值".我们定义一个有序无重复三元格子组{(x1,y1),(x2,y2),(x3,y3)}为"XY组"当且仅当: |(x1-x2)*(y1-y2)|+|(x3-x2)*(y3-y2)|=0   (c[x1,y1]-c[x2

2017/9/15模拟赛

游戏(game) [问题描述] 小R和小H在玩某个双人联机小游戏,一开始两人所操控的角色各有1点力量值,而在游戏中,每通过一关都会掉落一些力量强化道具.奇怪的是,明明是双人小游戏,每关却都会掉落3个相同的力量强化道具,于是两人决定每关每人先拿一个,剩下一个猜拳决定给谁.一个力量强化道具能使一个角色的力量值变为原来的若干整数倍,同一关卡掉落的道具倍率都相同,而不同的关卡可能不同.小R从攻略上找到了一些会产生特殊效果的力量值组合,他想知道哪些组合是按他们的道具分配方式有可能在通过某关时达成的. [输

2017/9/3模拟赛T1

题解:这题是一道判断题,分5种情况讨论,以下为了方便以ABC为例 ①若只有A,答案为A ②若A.B.C都有,答案为ABC ③若只有AB,答案为C ④若AAB式,答案为BC ⑤若只有A.B且AB均大等于2,答案为ABC 代码如下: 1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 int n,cnt[3],cur; 5 char a[205]; 6 bool pd(){ 7 for(int i=0;i&l

2017/9/3模拟赛T2

题解:由于题目已经提示我们这是个单峰函数,所以很容易想到三分法,所以我们就枚举中位数,为保证平均数最大,左右两侧都从右往左取数. 代码如下: 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #define MN 100005 5 using namespace std; 6 int n,a[MN],maxl,l,r,lm,rm; 7 long long sum[MN]; 8 double a

2017 9 27 模拟赛T1

题意简述: 求1-n中所有数的k次方的和,答案对1234567891取模. 样例输入格式: 一行,两个整数n,k 样例输出格式: 一个整数,即所求的和. 数据范围:n<10^9,k<100 这道题n非常大,即使是O(n)的算法也不能承受,但是此题的k却非常小,这也就提醒由k入手. 首先预处理前k+1个数的k次方的和,如果n<=k+1的话其实就可以直接输出a[0][n]了,不过我觉得出题人不会出这样的数据. 为什么是k+1个数呢?这是为了能处理一些差分的问题. 然后不断地计算每一行的差分,

2017 9 27 模拟赛 T2

原题题意:给出一个集合S,现满足以下关系: 实际题意:求32的n次方(这...)