跳柱子 #include<bits/stdc++.h> #define MP make_pair #define PB emplace_back using namespace std; typedef long long ll; template<typename T> inline T read(T&x){     x=0;int f=0;char ch=getchar();     while (ch<'0' || ch>'9') f|=(ch=='-'),ch=getchar();     while (ch>='0'&& ch<='9') x=x*10+ch-'0',ch=getchar();     return x=f?-x:x; } const int N=1e3+10; int T,n,k,i,j,h[N]; bool dp[N][2]; int main(){ for (read(T);T--;){ read(n),read(k); for (i=1;i<=n;++i) read(h[i]),dp[i][0]=dp[i][1]=0; dp[1][0]=1; for (i=2;i<=n;++i){ for (j=1;j<=i;++j)if(i-j>=1 && i-j<=k){ if (h[j]>=h[i]){ dp[i][0]|=dp[j][0]; dp[i][1]|=dp[j][1]; } dp[i][1]|=dp[j][0]; } } if (dp[n][0] || dp[n][1]) puts("YES"); else puts("NO"); } return 0; } 积木 #include<bits/stdc++.h> #define MP make_pair #define PB emplace_back using namespace std; typedef long long ll; template<typename T> inline T read(T&x){     x=0;int f=0;char ch=getchar();     while (ch<'0' || ch>'9') f|=(ch=='-'),ch=getchar();     while (ch>='0'&& ch<='9') x=x*10+ch-'0',ch=getchar();     return x=f?-x:x; } const int N=1e5+10; int T,n,i; ll m,h[N]; int main(){ for (read(T);T--;){ read(n),read(m); for (i=0;i<n;++i) read(h[i]); bool flag=0; for (i=0;i<n;++i){ if (h[i]>i) m+=h[i]-i; else{ if (i-h[i]>m){ flag=1; break; } else m-=i-h[i]; } }  puts(flag?"NO":"YES"); } return 0; }
点赞 3

相关推荐

牛客网
牛客企业服务