NC238569. Calling
描述
空。
输入描述
第一行,一个正整数 ,表示 组数据。对于每组数据:第一行,一个非负整数 。
第二行, 个非负整数,为 。
输出描述
行,每行一个字符串 或 ,表示对应数据的答案。请注意区分大小写。
示例1
输入:
4 15 3 1 4 1 5 9 20 0 0 0 1 4 1 10 1 1 4 5 1 4 1024 123 456 1 3 4 10
输出:
No Yes No Yes
Python3 解法, 执行用时: 1688ms, 内存消耗: 5072K, 提交时间: 2022-07-09 23:19:21
for _ in range(int(input())): s=int(input()) l=[0]+list(map(int,input().split())) s+=-l[6]-l[5]-l[4]-l[3]//4 l[1]-=l[5]*11 l[2]-=l[4]*5 l[3]%=4 if l[3]==1: s-=1 l[2]-=5 l[1]-=7 elif l[3]==2: s-=1 l[2]-=3 l[1]-=6 elif l[3]==3: s-=1 l[2]-=1 l[1]-=5 if l[2]<0: l[1]+=l[2]*4 l[2]=0 if l[1]<0: l[1]=0 mian=l[2]*4+l[1] print('No'if (mian+35)//36>s else'Yes')
C++(clang++ 11.0.1) 解法, 执行用时: 312ms, 内存消耗: 4240K, 提交时间: 2022-08-04 10:32:12
#include<bits/stdc++.h> using namespace std; int main(){ int t; cin>>t; for(int i=0;i<t;i++){ int a,b,c,d,e,f,s; cin>>s; cin>>a>>b>>c>>d>>e>>f; int v,ans; ans=d+e+f+ceil(1.0*c/4); v=d*5; if(c%4==1)v+=5; if(c%4==2)v+=3; if(c%4==3)v+=1; if(b>v){ ans+=ceil(1.0*(b-v)/9); } int p=6*6*f+5*5*e+4*4*d+3*3*c+2*2*b; int p2=ans*6*6-p; if(a>p2){ ans+=ceil(1.0*(a-p2)/36); } if(ans>s){ cout<<"No\n"; }else{ cout<<"Yes\n"; } } return 0; }