暑假集训PVZ提高模拟9
1.Codeforces Round 955 (Div. 2)2.AtCoder Beginner Contest 3633.AtCoder Regular Contest 182(A B C)4.暑假集训CSP提高模拟15.暑假集训CSP提高模拟26.暑假集训CSP提高模拟77.暑假集训CSP提高模拟58.暑假集训 加赛19.暑假集训CSP提高模拟410.暑假集训CSP提高模拟1811.暑假集训CSP提高模拟1712.暑假集训CSP提高模拟 1613.暑假集训CSP提高模拟 ∫[0,6] (x^2)/6 dx14.暑假集训CSP提高模拟1115.暑假集训SCP提高模拟10
16.暑假集训PVZ提高模拟9
17.暑假集训CSP提高模拟818.暑集假训SCP提高拟模2119.[CL-FOOL] CLOI 愚人赛的部分官方题解与小杂谈20.トヨタ自動車プログラミングコンテスト2024#7(ABC 362)21.寒假集训测试2 题目转存22.HEOI2024 题目转存23.高一小学期224.张江蔡25.高一高考集训总结赛26.高一下二调题目转存27.CSP提高组模拟128.Atcoder Beginner Contest 36729.[R18][中国語翻訳]HDKのABC370赛試(ABC370)30.[30] CSP 加赛 131.[33](CSP 集训)CSP-S 模拟 432.[34](CSP 集训)CSP-S 联训模拟 133.[35] (CSP 集训) CSP-S 模拟 534.[36](CSP 集训)CSP-S 模拟 635.AtCoder Beginner Contest 37336.[37](CSP 集训)CSP-S 模拟 737.[39] (多校联训) A层冲刺NOIP2024模拟赛0138.[40](CSP 集训)CSP 联训模拟 239.[42] (多校联训) A层冲刺NOIP2024模拟赛0340.[41] (CSP 集训) CSP-S 模拟 941.[44] (多校联训) A层冲刺NOIP2024模拟赛0442.[45] (多校联训) A层冲刺NOIP2024模拟赛0543.[46] (多校联训) A层冲刺NOIP2024模拟赛0644.パナソニックグループ プログラミングコンテスト2024(ABC 375)45.[47] (CSP 集训) CSP-S 模拟 1146.[49 & 50] (多校联训) A层冲刺NOIP2024模拟赛08 | CSP-S 模拟 1247.[51] (多校联训) A层冲刺NOIP2024模拟赛0948.Atcoder Beginner Contest 37649.Codeforces Round 980 (Div. 2)50.[54] (多校联训) A层冲刺NOIP2024模拟赛1251.[57] (多校联训) A层冲刺NOIP2024模拟赛1552.[61] (多校联训) A层冲刺NOIP2024模拟赛1853.[62] (NOIP 集训) NOIP2024加赛 254.[63] (多校联训) A层冲刺NOIP2024模拟赛1955.[68] (炼石计划) NOIP 模拟赛 #2056.[68] (NOIP集训) NOIP2024 加赛 557.[72] (多校联训) A层冲刺NOIP2024模拟赛2558.[73] (NOIP集训) NOIP2024 加赛 759.[75] (NOIP集训) NOIP2024 加赛 8没关 exe 让这货挂了一天
UPD:又挂了一晚上,现在被我正义制裁了
A.大众点评
交互红题啊,交互会写,但是忘记判
这个题交互库函数实现起来还是挺简单的,我 Windows 不会编译,我寻思你可以直接搓一个交互库出来啊,所以我就搓了个交互库
#include "ramen.h"
//#include"test.h"
#include<bits/stdc++.h>
using namespace std;
void Ramen(int N){
if(N==1){
Answer(0,0);return;
}
int res=Compare(0,1),maxn,minn;
if(res==1){
maxn=0,minn=1;
}
else{
maxn=1,minn=0;
}
int i=2;
for(;i+1<=N-1;i+=2){
res=Compare(i,i+1);
int jmax,jmin;
if(res==1){
jmax=i,jmin=i+1;
}
else{
jmax=i+1,jmin=i;
}
if(Compare(maxn,jmax)==-1){
maxn=jmax;
}
if(Compare(minn,jmin)==1){
minn=jmin;
}
}
for(;i<=N-1;++i){
res=Compare(maxn,i);
if(res==-1){
maxn=i;
}
else{
res=Compare(minn,i);
if(res==1){
minn=i;
}
}
}
Answer(minn,maxn);
}
#include<bits/stdc++.h>
using namespace std;
int NN,TT,_A[401],Cntt;
void Ramen(int N);
int Compare(int X,int Y){
++Cntt;
if(_A[X]>_A[Y]) return 1;
return -1;
}
int mi=0,ma=0;
void Answer(int X,int Y){
cout<<"Received Answer "<<X<<"(min) "<<Y<<"(max)"<<endl;
if(X==mi and Y==ma){
cout<<"Answer Correct. Compare Time: "<<Cntt<<endl;
}
else{
cout<<"Incorrect"<<endl;
}
}
int main(){
//文件输出版本
// ifstream="file name";
// f>>NN>>TT;
// for(int i=0;i<=NN-1;++i){
// f>>_A[i];
// if(mi==0 or _A[i]<_A[mi]) mi=i;
// if(ma==0 or _A[i]>_A[ma]) ma=i;
// }
// Ramen(NN);
cin>>NN>>TT;
for(int i=0;i<=NN-1;++i){
cin>>_A[i];
if(mi==0 or _A[i]<_A[mi]) mi=i;
if(ma==0 or _A[i]>_A[ma]) ma=i;
}
Ramen(NN);
}
B.录取查询
赛时先打的特殊性质二,我寻思这东西不妥妥的能分块,块内维护单调性,再在接口判一下就行了,所以就打了这个特殊性质的分块,后来发现这个性质是能推广的,只需要再判一下当前中间的字母是否在该区间内全部出现即可(因为出现的不全说明你这几个字母在排完序后势必还会再插入一点东西,所以就是错的),但是没时间打了,赛后发现单调性和全部出现性质还可以用线段树维护.
学长:你这是常数问题
分块版本
#include<bits/stdc++.h>
using namespace std;
int n,q;string s;
namespace subtask1{
string t;
void main(){
t=s;sort(t.begin(),t.end());
for(int i=1;i<=q;++i){
int op;cin>>op;
if(op==1){
int pos;char ct;
cin>>pos>>ct;
s[pos-1]=ct;
t=s;sort(t.begin(),t.end());
}
else{
int l,r;
cin>>l>>r;
if(t.find(s.substr(l-1,r-l+1))<t.length()){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
}
}
}
}
namespace subtask2{
int len,up[1001];
inline int locate(int id){
return id/len+1;
}
inline int start(int id){
return (id-1)*len;
}
inline int end(int id){
return id*len-1;
}
void main(){
len=sqrt(n);
for(int i=1;i<=n/len+1;++i){
bool isup=true;
for(int j=start(i);j<=min(n-2,end(i)-1);++j){
if(s[j]>s[j+1]){
isup=false;
break;
}
}
up[i]=isup;
}
for(int i=1;i<=q;++i){
int op;cin>>op;
if(op==1){
int pos;char ct;
cin>>pos>>ct;
s[pos-1]=ct;
bool isup=true;
for(int j=start(locate(pos-1));j<=min(n-2,end(locate(pos-1))-1);++j){
if(s[j]>s[j+1]){
isup=false;
break;
}
}
up[locate(pos-1)]=isup;
}
else{
int l,r;
cin>>l>>r;
// cout<<s<<" "<<l<<" "<<r<<endl;
bool isup=true;l--,r--;
// cout<<locate(l)<<" "<<locate(r)<<endl;
if(locate(r)-locate(l)<=1){
for(int i=l;i<=r-1;++i){
if(s[i]>s[i+1]){
cout<<"No"<<endl;
isup=false;
break;
}
}
if(isup){
cout<<"Yes"<<endl;
}
}
else{
bool isup=true;
for(int i=locate(l)+1;i<=locate(r);++i){
// cout<<"findk "<<i<<" "<<up[i]<<endl;
if((i!=locate(r) and !up[i]) or s[end(i-1)]>s[start(i)]){
isup=false;
cout<<"No"<<endl;
break;
}
}
if(isup){
for(int i=l;i<=min(n-2,end(locate(l))-1);++i){
if(s[i]>s[i+1]){
isup=false;
cout<<"No"<<endl;
break;
}
}
if(isup){
for(int i=start(locate(r));i<=r-1;++i){
if(s[i]>s[i+1]){
isup=false;
cout<<"No"<<endl;
break;
}
}
if(isup){
cout<<"Yes"<<endl;
}
}
}
}
}
}
}
}
int main(){
// freopen("test.in","r",stdin);
// freopen("sb2.out","w",stdout);
ios::sync_with_stdio(false);
cin>>n>>s>>q;
if(n<=300 and q<=300){
subtask1::main();
return 0;
}
bool issubtask2=true;
for(char i:s){
if(i!='a' and i!='b'){
issubtask2=false;
break;
}
}
if(issubtask2){
subtask2::main();
return 0;
}
// subtask1::main();
}
/*
33
aaaaabbbbbababaaaabbbabaaaaabbbbb
114
6
aabbba
1
2 1 5
8
bbbbbbbb
1
2 3 7
*/
线段树版本
#include <bits/stdc++.h>
using namespace std;
const int N=100001;
int n,q;
char s[N];
struct ST{
struct stree{
int l,r,is;
char lz,rz;
int cnt[30];
}a[N<<2];
void pushup(stree &res,stree a,stree b){
res.lz=a.lz;
res.rz=b.rz;
res.is=(a.is&&b.is)&&(a.rz<=b.lz);
for(int i=1;i<=26;i++){
res.cnt[i]=a.cnt[i]+b.cnt[i];
}
}
void build(int p,int l,int r){
a[p].l=l;
a[p].r=r;
if(a[p].l==a[p].r){
a[p].lz=a[p].rz=s[a[p].l];
a[p].is=1;
a[p].cnt[s[a[p].l]-'a'+1]=1;
return;
}
int mid=(a[p].l+a[p].r)/2;
build(p<<1,l,mid);
build(p<<1|1,mid+1,r);
pushup(a[p],a[p<<1],a[p<<1|1]);
return ;
}
void change(int p,int x,char k){
if(a[p].l==a[p].r){
a[p].cnt[a[p].lz-'a'+1]=0;
a[p].lz=a[p].rz=k;a[p].cnt[k-'a'+1]=1;
return;
}
int mid=(a[p].l+a[p].r)/2;
if(x<=mid) change(p<<1,x,k);
else change(p<<1|1,x,k);
pushup(a[p],a[p<<1],a[p<<1|1]);
}
stree ask(int p,int l,int r){
if(l<=a[p].l&&a[p].r<=r) return a[p];
int mid=(a[p].l+a[p].r)>>1;
if(r<=mid) return ask(p<<1,l,r);
if(l>mid) return ask(p<<1|1,l,r);
stree res;
pushup(res,ask(p<<1,l,r),ask(p<<1|1,l,r));
return res;
}
}tree;
int main(){
cin>>n>>(s+1)>>q;
tree.build(1,1,n);
while(q--){
int op;cin>>op;
if(op==1){
int x;char in;
cin>>x>>in;
tree.change(1,x,in);
}
if(op==2){
int l,r;
cin>>l>>r;
ST::stree res=tree.ask(1,l,r);
if(res.is){
bool flag=true;
for(int i=res.lz+1;i<=res.rz-1;i++){
if(res.cnt[i-'a'+1]!=tree.a[1].cnt[i-'a'+1]){
flag=false;
break;
}
}
if(flag){
cout<<"Yes"<<endl;
}
else{
cout<<"No"<<endl;
}
}
else cout<<"No"<<endl;
}
}
return 0;
}
C.精准打击
明天填坑
后记
你说得对,但是我被僵王博士的复仇恶心到了,我一共五路植物,车砸没两条,放三只橄榄球加两只巨人吃我一路半,放火球欺负我没寒冰菇烧了一路,我还打个牛魔,遂将题目改为暑假集训PVZ提高模拟9
今天电影后半段挺好看的,前半段不评价的原因是我没看
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!