AtCoder-ABC410真题解析报告
创始人
2025-06-16 01:22:33
0

AtCoder (ABC 410)于周六晚20:00进行,上周日 19:00我们在B站进行了AtCoder Beginner Contest 408的题解直播讲解,以下为本次直播讲解内容及文字解析。

AtCoder (ABC 411)于下6月21日晚20:00进行,6月22日19:00我们将继续进行视频直播讲解。同学们关注!

ABC410主讲老师:清华 吴老师(NOI2021银牌)

欢迎加入ABC交流QQ群咨询、沟通、交流群密码:AtCoder

ABC410比赛真题讲解

题目列表:

题目地址:https://atcoder.jp/contests/abc410/tasks

ABC410题解及参考程序(文字版)

========================================

A

#include

constintMAXN = 100+ 5; intn,a[MAXN],k;

intmain{ scanf( "%d",&n); for( inti = 1;i <= n;++i) scanf( "%d",a+i); scanf( "%d",&k); intans = 0; for( inti = 1;i <= n;++i){ if(k <= a[i]) ++ans; // k 可以参加第i场比赛}printf( "%d\n",ans); return0; }

B

#include

constintMAXN = 100+ 5; intn,a[MAXN],q;

intmain{ scanf( "%d%d",&n,&q);a[ 0] = 1e9; while(q--){ intx; scanf( "%d",&x); if(x > 0){ printf( "%d ",x); ++a[x];}else{ intps = 0; // 最小的位置for( inti = 1;i <= n;++i){ if(a[i] < a[ps]) ps = i; }printf( "%d ",ps); ++a[ps];}}return0; }

B2

#includeusingnamespacestd;

constintMAXN = 1e5+ 5;

set< pair< int, int> > S; inta[MAXN]; intn,q;

intmain{ scanf( "%d%d",&n,&q); for( inti = 1;i <= n;++i) S.insert({a[i],i}); while(q--){ intx; scanf( "%d",&x); if(x > 0){ S.erase(S.find({a[x],x}));++a[x];S.insert({a[x],x});printf( "%d ",x); }else{ intps = (*S.begin).second; S.erase(S.find({a[ps],ps}));++a[ps];S.insert({a[ps],ps});printf( "%d ",ps); }}return0; }

C

#include

constintMAXN = 1e6+ 5; intn,q; inta[MAXN]; intps;

intmain{ scanf( "%d%d",&n,&q); for( inti = 0;i < n;++i) a[i] = i+ 1; while(q--){ intop; scanf( "%d",&op); if(op == 1){ intp,x; scanf( "%d%d",&p,&x);--p; (p += ps) %= n;a[p] = x;}elseif(op == 2){ intp; scanf( "%d",&p);--p; (p += ps) %= n;printf( "%d\n",a[p]); }else{ intk; scanf( "%d",&k); (ps += k) %= n;}}return0; }

D

#include

usingnamespacestd; constintMAXN = 1000+ 5; constintMAXM = 1024+ 5;

vector< pair< int, int> > G[MAXN];

intn,m; boolvis[MAXN][MAXM]; queue< pair< int, int> > q;

intmain{ scanf( "%d%d",&n,&m); for( inti = 1;i <= m;++i){ intu,v,w; scanf( "%d%d%d",&u,&v,&w); G[u].push_back({v,w});}

q.push({ 1, 0});vis[ 1][ 0] = 1; while(!q.empty){ auto[v, val] = q.front;q.pop; for( auto[to, x] : G[v]){ // v -> to, 边权为 x 的边// (v,val) -> (x, val ^ x)if(!vis[to][val^x]){ vis[to][val^x] = 1; q.push({to,val^x});}}}intans = -1; for( inti = 0;i < 1024;++i) if(vis[n][i]){ans = i; break;} printf( "%d\n",ans); return0; }

E

#include

constintMAXN = 3000+ 5; intn; inth,m; inta[MAXN],b[MAXN]; intf[MAXN][MAXN]; // f[i][x]: 打[1,i],使用 x 生命// 最少使用多少魔法

intmain{ scanf( "%d%d%d",&n,&h,&m); for( inti = 1;i <= n;++i) scanf( "%d%d",a+i,b+i); memset(f, 0x3f, sizeof(f)); f[ 0][ 0] = 0; for( inti = 1;i <= n;++i){ boolflag = 0; for( intj = 0;j <= h;++j){ f[i][j] = f[i -1][j] + b[i]; if(j >= a[i]) f[i][j] = std::min(f[i][j], f[i -1][j-a[i]]); flag |= (f[i][j] <= m);}if(flag) continue; else{ printf( "%d\n",i -1); return0;} }printf( "%d\n",n); return0; }

F

#include

constintMAXN = 3e5+ 5; constintB = 3e5; usingnamespacestd; vector< int> a[MAXN]; intn,m; charstr[MAXN]; intv[MAXN], sm[MAXN]; intt[MAXN* 2];

voidSolve{ scanf( "%d%d",&n,&m); if(n <= m) for( inti = 1;i <= n;++i) a[i].resize(m+ 1); elsefor( inti = 1;i <= m;++i) a[i].resize(n+ 1);

for( inti = 1;i <= n;++i){ scanf( "%s",str+ 1); for( intj = 1;j <= m;++j){ into = str[j] == '#'? 1: -1; if(n <= m) a[i][j] = o; elsea[j][i] = o; }}

if(n > m) swap(n,m); longlongans = 0;

for( intup = 1;up <= n;++up){ for( intj = 1;j <= m;++j) v[j] = 0; for( intdown = up;down <= n;++down){ for( intj = 1;j <= m;++j) v[j] += a[down][j]; sm[ 0] = 0;t[sm[ 0] + B]++;

for( intj = 1;j <= m;++j){ sm[j] = sm[j -1] + v[j]; ans += t[sm[j] + B]; // sm[j]-sm[i]=0 => sm[j]=sm[i]t[sm[j]+B]++;}

for( intj = 0;j <= m;++j) t[sm[j]+B]--; }}

printf( "%lld\n",ans);

for( inti = 1;i <= n;++i) a[i].clear; }

intmain{ intT; scanf( "%d",&T); while(T--) Solve; return0; }

G

#include

constintMAXN = 4e5+ 5; usingnamespacestd; intmx[MAXN<< 2]; #definelc ((x)<<1)#definerc ((x)<<1|1)

voidupdate(intx,intl,intr,intp,intd){ if(l == r){ mx[x] = d;return; }intmid = (l + r) >> 1; if(p <= mid) update(lc,l,mid,p,d); elseupdate(rc,mid+ 1,r,p,d); mx[x] = max(mx[lc], mx[rc]);}

intquery(intx,intl,intr,intL,intR){ if(l == L && r == R) returnmx[x]; intmid = (l + r) >> 1; if(R <= mid) returnquery(lc,l,mid,L,R); elseif(L > mid) returnquery(rc,mid+ 1,r,L,R); elsereturnstd::max(query(lc,l,mid,L,mid),query(rc,mid+ 1,r,mid+ 1,R)); }

vector< pair< int, int> > vec; intn; intans[MAXN];

intmain{ scanf( "%d",&n); for( inti = 1;i <= n;++i){ inta,b; scanf( "%d%d",&a,&b); if(a > b) swap(a, b); vec.push_back({b,a});}sort(vec.begin, vec.end);

for( inti = 0;i < vec.size;++i){ auto[r,l] = vec[i]; ans[i] = query( 1, 1, 2*n,l, 2*n) + 1; update( 1, 1, 2*n,l,ans[i]); }

for( inti = 0;i < vec.size;++i){ auto[r,l] = vec[i]; ans[i] += query( 1, 1, 2*n,r, 2*n); }

intres = *max_element(ans,ans+n); printf( "%d\n",res); return0; }

G

#include

constintMAXN = 4e5+ 5; usingnamespacestd;

template< typenameT> inlinevoidread(T &x){ x = 0; intflag = 0; charch = nc; while(! isdigit(ch)){ if(ch == '-') flag = 1; ch = nc;}while( isdigit(ch)){ x = (x<< 1) + (x<< 3) + (ch^ '0'); ch = nc;}if(flag) x = -x; }

structBIT{#definelowbit(x) ((x) & (-(x)))inttree[MAXN];

voidadd(intp,intx){ // a[p] = max(a[p],x);while(p){ tree[p] = max(tree[p], x);p -= lowbit(p);}}

intquery(intp){ intres = 0; while(p < MAXN){ res = max(res, tree[p]);p += lowbit(p);}returnres; }}bit;

vector< pair< int, int> > vec; intn; intans[MAXN];

相关内容

最新资讯

高校学科专业调整怎么看?带来哪... 加快推进学科专业交叉融合(在一线) 全国高校共新增专业点1839个,调整学位授予门类或修业年限专业点...
安阳市钢城小学:观摩“超级语文... 大象新闻记者 贾峰 通讯员 陈改霞为深化语文教学改革,拓宽教师教学视野,2025年5月至6月,安阳市...
致忻州市2025年中考考生的一... 鸿鹄展翅凌霄汉 长楫击水济沧溟 ——致全市2025年中考考生的一封信 亲爱的同学们: “征程万里风正...
河北大学18年硕士研究生818... 在就业方面,语言学专业的学生在社会上非常受欢迎,除了从事语言教育或研究工作以外,还可以到新闻文艺出版...
【改编自2022年学考真题】浙... 加入的教师必须实名,否则会被请出 进入共享文件免费下载资料 浙江省2025年高中语文学...
长春工程学院成人高等教育本科招... 《长春工程学院成人高等教育本科招生简章解读:开启新篇章的教育之旅》 随着社会的发展和教育的普及,成人...
父亲节泼冷水:3种中国式父爱要... 你好,我是蓁蓁,一个80后宝妈~ 家有12岁儿子,在科学养娃的路上,邀你一路前行…… 今天...
2025高考志愿填报:这些事情... 2025高考志愿填报:这些事情,家长和学生需要提前了解 2025年高考的战鼓已然擂响,志愿填报作为这...
校长办公室当是一间至简书房 我走过两所学校,承担校长工作职责16年,从初期的懵懂到日后的稳健,关键的体会是校长要读书。 从这个...
6月25日来大明宫万达 与全国... 往届高招会现场。(资料图片) ■记者 牛凌 2025年“新高考”,面对全国3000多所大学、900多...
笑不活了,北理工学士服酷似&q... 上过大学,能熬到毕业的都知道,我们肯定会在毕业季穿学位服带学位帽拍照留念,纪念我们的这些年的青春。不...
安徽芜湖这所民办中学凭何实力出... 在安徽芜湖的教育领域,有一所学校正以其卓越的教学成果和独特的教育理念吸引着众多家长和学生的目光 ,它...
中国赴美留学人数 跌至十年前 [ 一名在国内上市公司负责人力资源的高管就告诉记者,现在大多数国内企业招聘应届毕业生并不会严格区分是...
穷人上学有多难,没有好教育就形... 自古以来,教育几乎就是改变命运的唯一途径,但是在一些城市,对穷人来说上学太难了。 就像北京,从小学开...
为什么有超过一半的高中生都在假... 超过一半的高中生存在“假努力”现象,主要原因包括学习方法不当、心理压力与外界评价的影响、缺乏明确目标...
市招考中心发布中考温馨提示 本报讯 山西省2025年初三年级学业水平考试将于6月20日至22日进行,为确保广大考生平安顺利参加考...
新人教版八下英语电子课本(20... 人民教育出版社初二英语八年级下册PDF高清电子课本 2025年春季新版八下英语电子课本(人教版) 人...
确认了!沈倩,毕业将入职 今天(6月15日)上午 中国传媒大学2025届毕业典礼暨学位授予仪式 在校内学生活动中心举办 宁波“...
不只是玩泥巴!827名学子同台... 6月15日 ,渝中区首届“科学教育+非遗”创意设计展示活动暨第二十届渝中区中小学生陶艺捏塑创新设计大...
湖北专升本复习如何循序渐进? 从六月份开始备考湖北专升本考试,离明年考试还有快一年的时间,同学们前期不需要花太多的时间,注意基础知...