NOIP2024 前集训:MX 炼石计划 NOIP 模拟赛 20
前言
music
《望》 红色风筝 俯瞰着地图 飘太远 在哪儿 着陆 远行的人 是望远镜里的模糊 借背影放大孤独 你我习惯 像常旅客来了又去 寄天空的信 未能 按时 回复 再等一等就返航 如初 我们总会 绕啊绕 绕啊绕 绕几千里路 也望向归途 乘着风想念吹拂 游夜空漂浮 抓一颗流星做礼物 愿你幸福 手中线 绕啊绕 绕啊绕 绕几千日夜 也望向归途 燕归巢迁徙之路 参与者无数 待到烟火照夜白时准备庆祝 心有所住 儿时总爱 掰着手默数 好希望 快些到 日出 长大的人 被挟裹着说不得不 借不到借口停驻 你我习惯 像常旅客来了又去 寄天空的信 未能 按时 回复 再等一等就返航 如初 我们总会 绕啊绕 绕啊绕 绕几千里路 也望向归途 乘着风想念吹拂 游夜空漂浮 抓一颗流星做礼物 愿你幸福 手中线 绕啊绕 绕啊绕 绕几千日夜 也望向归途 燕归巢迁徙之路 参与者无数 待到烟火照夜白时准备庆祝 心有所住 我们总会 绕啊绕 绕啊绕 绕几千里路 也望向归途 乘着风思念吹拂 游夜空漂浮 抓一颗流星祝福 你要幸福 手中线 绕啊绕 绕啊绕 绕几千日夜 也望向归途 燕归巢迁徙之路 参与者无数 待到烟火照夜白时准备庆祝 心有所住
0+100+12+0,T1 读假题:
不打 T4 是错误的,乱搞能得的分挺多的。
T2 是签,线段树直接跑就行了,行为是值域线段树所以从
下午到机房不知道为啥困得快死了,在机房睡了不知道多长时间。
T1 邻间的骰子之舞
设
点击查看代码
#include<bits/stdc++.h> #define ll long long #define ull __int128 #define endl '\n' #define sort stable_sort using namespace std; const int N=1e6+10; template<typename Tp> inline void read(Tp&x) { x=0;register bool z=true; register char c=getchar_unlocked(); for(;!isdigit(c);c=getchar_unlocked()) if(c=='-') z=0; for(;isdigit(c);c=getchar_unlocked()) x=(x<<1)+(x<<3)+(c^48); x=(z?x:~x+1); } template<typename T,typename ...Tp> inline void read(T &x,Tp &...y){read(x);read(y...);} template<typename Tp> inline void wt(Tp x){if(x>9)wt(x/10);putchar_unlocked((x%10)+'0');} template<typename Tp> inline void write(Tp x){if(x<0)putchar_unlocked('-'),x=~x+1;wt(x);} template<typename T,typename ...Tp> inline void write(T x,Tp ...y){write(x);putchar_unlocked(' ');write(y...);} ll n; int m; ull x,y,ans=1e27; inline bool check(int x,ll y) {ull res=1; while(x--) {res*=y; if(res>n) return 1;} return 0;} inline ull qpow(ull a,int b) {ull res=1; for(;b;a*=a,b>>=1) (b&1)&&(res*=a); return res;} signed main() { freopen("dice.in","r",stdin),freopen("dice.out","w",stdout); read(n,x,y),m=log2(n)+1; for(int i=1;i<=m;i++) { ll l=0,r=n,mid,res; while(l<=r) check(i,(mid=l+r>>1)+1)?r=(res=mid)-1:l=mid+1; ull sum=qpow(res,i); for(int j=1;j<=i;j++) { sum/=res,sum*=(res+1); sum>n&&(ans=min(ans,(x+(res-1)*y)*i+y*j)); } } write(ans); }
T2 星海浮沉录
对于一个值
点击查看代码
#include<bits/stdc++.h> #define ll long long #define endl '\n' #define sort stable_sort #define mid (l+r>>1) #define ls (p<<1) #define rs (p<<1|1) #define pb push_back using namespace std; const int N=1e6+10; template<typename Tp> inline void read(Tp&x) { x=0;register bool z=true; register char c=getchar_unlocked(); for(;!isdigit(c);c=getchar_unlocked()) if(c=='-') z=0; for(;isdigit(c);c=getchar_unlocked()) x=(x<<1)+(x<<3)+(c^48); x=(z?x:~x+1); } template<typename T,typename ...Tp> inline void read(T &x,Tp &...y){read(x);read(y...);} template<typename Tp> inline void wt(Tp x){if(x>9)wt(x/10);putchar_unlocked((x%10)+'0');} template<typename Tp> inline void write(Tp x){if(x<0)putchar_unlocked('-'),x=~x+1;wt(x);} template<typename T,typename ...Tp> inline void write(T x,Tp ...y){write(x);putchar_unlocked(' ');write(y...);} int n,m,a[N],rk[N],pre[N],now[N]; vector<int>e[N],pos[N]; struct private_tree { vector<int>mx; inline void build(int p,int l,int r,int x) { if(l==r) return mx[p]=pre[e[x][l-1]],void(); build(ls,l,mid,x),build(rs,mid+1,r,x),mx[p]=max(mx[ls],mx[rs]); } inline void init(int x,int siz) {mx.resize((siz+5)<<2),build(1,1,siz,x);} inline void change(int p,int l,int r,int x,int d) { if(l==r) return mx[p]=d,void(); x<=mid?change(ls,l,mid,x,d):change(rs,mid+1,r,x,d); mx[p]=max(mx[ls],mx[rs]); } }t[N]; struct total_tree { int mx[N<<2]; inline void build(int p,int l,int r) { if(l==r) return mx[p]=t[l].mx[1],void(); build(ls,l,mid),build(rs,mid+1,r),mx[p]=max(mx[ls],mx[rs]); } inline void change(int p,int l,int r,int x,int d) { if(l==r) return mx[p]=d,void(); x<=mid?change(ls,l,mid,x,d):change(rs,mid+1,r,x,d); mx[p]=max(mx[ls],mx[rs]); } inline int ask(int p,int l,int r,int x) { if(l==r) return l; if(mx[ls]>=x) return ask(ls,l,mid,x); if(mx[rs]>=x) return ask(rs,mid+1,r,x); return n+1; } }T; signed main() { freopen("star.in","r",stdin),freopen("star.out","w",stdout); read(n,m); for(int i=1;i<=n;i++) read(a[i]),pre[i]=i-now[a[i]]-1,e[a[i]].pb(now[a[i]]=i); for(int i=0;i<=n;i++) pre[n+i+1]=n-now[i],e[i].pb(n+i+1),t[i].init(i,e[i].size()); T.build(1,0,n); for(int i=0;i<=n;i++) { pos[i].pb(0); for(int j=0;j<e[i].size();j++) rk[e[i][j]]=j+1,pos[i].pb(e[i][j]); } for(int op,x;m;m--) { read(op,x); if(op==1) { if(a[x]==a[x+1]) continue; t[a[x]].change(1,1,e[a[x]].size(),rk[x],++pre[x]); t[a[x]].change(1,1,e[a[x]].size(),rk[x]+1,--pre[pos[a[x]][rk[x]+1]]); T.change(1,0,n,a[x],t[a[x]].mx[1]); t[a[x+1]].change(1,1,e[a[x+1]].size(),rk[x+1],--pre[x+1]); t[a[x+1]].change(1,1,e[a[x+1]].size(),rk[x+1]+1,++pre[pos[a[x+1]][rk[x+1]+1]]); T.change(1,0,n,a[x+1],t[a[x+1]].mx[1]); swap(pos[a[x]][rk[x]],pos[a[x+1]][rk[x+1]]); swap(a[x],a[x+1]),swap(rk[x],rk[x+1]),swap(pre[x],pre[x+1]); } else write(T.ask(1,0,n,x)),puts(""); } }
T3 勾指起誓
高级多项式题,再见。
T4 第八交响曲
双调排序。
对于一个单峰序列,设
那么对于一个乱序的序列,假设可以将他变成两个有序序列,考虑合并两个有序序列,发现只有把有区间的所有数翻转就和上面一样了,于是就可以递归求解了,复杂度
点击查看代码
#include<bits/stdc++.h> #define ll long long #define endl '\n' #define sort stable_sort #define pb push_back #define mkp make_pair #define fi first #define se second using namespace std; const int N=110; int n,ans,pos1[N],pos2[N][N]; vector<pair<int,int> >e[N]; inline void solve2(int l,int r,int dep,int top) { if(l==r) return ; int mid=l+r>>1; if(!pos2[top][dep]) pos2[top][dep]=++ans; for(int i=l,j=mid+1;j<=r;i++,j++) e[pos2[top][dep]].pb(mkp(i,j)); solve2(l,mid,dep+1,top),solve2(mid+1,r,dep+1,top); } inline void solve1(int l,int r,int dep) { if(l==r) return ; int mid=l+r>>1; solve1(l,mid,dep+1),solve1(mid+1,r,dep+1); if(!pos1[dep]) pos1[dep]=++ans; for(int i=l,j=r;j>mid;i++,j--) e[pos1[dep]].pb(mkp(i,j)); solve2(l,mid,dep+1,dep),solve2(mid+1,r,dep+1,dep); } signed main() { freopen("symphony.in","r",stdin),freopen("symphony.out","w",stdout); scanf("%d",&n); int tmp=n; n=powl(2,ceil(log2(n))); solve1(1,n,1),printf("%d\n",ans); for(int i=1;i<=ans;i++,puts("")) for(auto j:e[i]) if(j.fi<=tmp&&j.se<=tmp) printf("CMPSWP R%d R%d ",j.fi,j.se); }
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· 深度对比:PostgreSQL 和 SQL Server 在统计信息维护中的关键差异