- 3991. 满足条件的01串【难度: 一般】
- 3992. 树上有猴【难度: 一般 / 知识点: 前缀和 思维】
- 3993. 石子游戏【难度: 中 / 知识点: 前缀和 思维】
https://www.acwing.com/problem/content/3994/
#include3992. 树上有猴【难度: 一般 / 知识点: 前缀和 思维】using namespace std; int main(void) { int t; cin>>t; while(t--) { int n; cin>>n; string s; cin>>s; bool flag=true; if(s.find("000")!=-1) flag=false; if(s.size()>=2&&s[0]=='0'&&s[1]=='0') flag=false; if(s.size()==1&&s[0]=='0') flag=false; if(s.size()>=2&&s[s.size()-1]=='0'&&s[s.size()-2]=='0') flag=false; if(s.find("11")==-1&&flag) puts("Yes"); else puts("No"); } return 0; }
https://www.acwing.com/problem/content/description/3995/
#includeusing namespace std; const int N=1e5+10; int n,m,a[N]; int main(void) { cin>>n>>m; int minv=0,maxv=m,sum=0; for(int i=0;i >a[i]; sum+=a[i]; minv=max(minv,-sum); maxv=min(maxv,m-sum); } cout< 3993. 石子游戏【难度: 中 / 知识点: 前缀和 思维】
https://www.acwing.com/problem/content/3996/#includeusing namespace std; const int N=1e5*2+10; int n,k,a[N],s[N]; int minv=1e9,maxv=-1e9; int get(int i) { return s[maxv]-s[i-1]; } int main(void) { cin>>n>>k; for(int i=0;i >a[i],s[a[i]]++,minv=min(minv,a[i]),maxv=max(maxv,a[i]); for(int i=0;i<=maxv;i++) s[i]+=s[i-1]; int res=0; for(int i=maxv;i>minv;) { int sum=0,j=i; while(j>minv&&sum+get(j)<=k) sum+=get(j--); i=j; res++; } cout<



