列表

详情


NC238569. Calling

描述

空。
你有 6 种正方形纸片,其中第 种边长为 i,每一种都有 k_i 个,你需要把它们放在 至多 s 个面积为 的正方形框中,显然我们可以一个框一个框的放,要求如下:


请问能否放得下,若可以,输出 ,否则输出

输入描述

第一行,一个正整数 ,表示 T 组数据。

对于每组数据:
第一行,一个非负整数
第二行,6 个非负整数,为

输出描述

T 行,每行一个字符串 ,表示对应数据的答案。

请注意区分大小写。

示例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;
}

上一题