列表

详情


NC19431. 切题之路

描述

众所周知,SD省有一个可爱的妹子,叫做rqy(rqy天下第一可爱!不接受反驳,抱走rqy~),她经常(雾)和一个叫做clccle的蒟蒻一起刷题,但是因为clccle太弱了,所以说她会跳过难度较高的题目,同时,如果clccle的时间不足以切掉当前这道简单题,那么她同时也会跳过这道简单题目,相对的,rqy要花掉两倍的时间去切掉一道难度较高的题目,但如果时间不够用,她会跳过这道题目,但是有一个特殊规定,因为她们两个人都非常懒,所以她们只会按给定的顺序刷,现在两人的刷题列表是一样的,请求出在给定时间里clccle和rqy各最多能刷多少道题目。


输入描述

第一行,两个整数n,t,表示有n道题目,给定的时间为t

第二行 两个整数a,b 分别表示clccle所认为的难度较高和rqy认为的难度较高

接下来两行,每行n个数字 第一行表示切题所需的时间,第二行表示题目的难度

输出描述

输出两个整数,分别表示clccle和rqy的切题数

示例1

输入:

2 100
6 10
100 10
7 5

输出:

1 1

说明:

clccle会跳过第一道题去切第二道题,而rqy会把时间都花在第一题上,P.s.100 10指的是两道题目所需的时间 7 5指的是题目的难度

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 46ms, 内存消耗: 1912K, 提交时间: 2019-10-29 00:10:05

#include<algorithm>
using namespace std;

int main()
{
	long long i,j,n,t,a,b,t1,t2,s1,s2,x,y,T[100005],R[100005];
	scanf("%lld%lld%lld%lld",&n,&t,&a,&b);
	for(i=0;i<n;i++)scanf("%lld",&T[i]);
	for(i=0;i<n;i++)scanf("%lld",&R[i]);
	s1=s2=0,t1=t2=t;
	for(i=0;i<n;i++)
	{
		if(t1>=T[i]&&R[i]<a)t1-=T[i],s1++;
		if(R[i]<b)
		{
			if(t2>=T[i])t2-=T[i],s2++;
		}
		else if(t2>=2*T[i])t2-=2*T[i],s2++;
	}
	printf("%lld %lld\n",s1,s2);
	return 0;
}

Python3(3.5.2) 解法, 执行用时: 155ms, 内存消耗: 17772K, 提交时间: 2020-06-16 19:15:56

n,m=map(int,input().split())
n1,n2=map(int,input().split())
from sys import stdin
tim=list(map(int,stdin.readline().split()))
nan=list(map(int,stdin.readline().split()))
clc,rqy=0,0
clc_t,rqy_t=m,m
i=0
while i<n:
    if nan[i]<n1:
        if clc_t>=tim[i]:
            clc_t-=tim[i]
            clc+=1
    if nan[i]>=n2: tim[i]*=2
    if rqy_t>=tim[i]:
        rqy_t-=tim[i]
        rqy+=1
    i+=1
print(clc,rqy)

C++14(g++5.4) 解法, 执行用时: 36ms, 内存消耗: 1784K, 提交时间: 2020-06-16 20:41:58

#include<cstdio>
long long n,t,a,b,tt[100010],p[100010],an1=0,an2=0,i,t1,t2;
int main()
{
	scanf("%lld%lld%lld%lld",&n,&t,&a,&b);
	t1=t2=t;
	for(i=0;i<n;i++) scanf("%lld",&tt[i]);
	for(i=0;i<n;i++) scanf("%lld",&p[i]);
	for(i=0;i<n;i++)
	{
		if(a>p[i]&&t1>=tt[i]) {t1-=tt[i];an1++;}
		if(b>p[i]&&t2>=tt[i]) {t2-=tt[i];an2++;}
		else if(b<=p[i]&&t2>=2*tt[i]) {t2-=2*tt[i];an2++;}
		
	}
	printf("%d %d",an1,an2);
}

上一题