AtCoder | ABC380直播题解预告(附ABC 379真题解析)

关注我哟定期推送帐号信息学新闻竞赛自主招生信息学专业知识信息学疑难解答信息学训练营信息等诸多优质内容的微信平台, 欢迎分享文章给你的朋友或者朋友圈! 有任何问题请联系小编!

AtCoder (ABC 379)比赛于上周六晚(20:00)进行,今天为大家带来本次比赛的视频讲解,文字版题目解析及参考代码。

AtCoder (ABC 380)比赛于本周六(11月16日)晚20:00进行,同学们参与比赛后可在本周日(11月17日)晚 19:00进入继续到直播间观看题目解析

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

ABC379比赛真题讲解

题目列表:

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

ABC379题解(文字版)

►A代码

参考代码

#include <bits/stdc++.h> char str[ 23]; intmain{ //intx;scanf( "%d",& x); //inta = ( x/ 100)%10, b = ( x/ 10)%10, c = x%10; //printf( "%d%d%d %d%d%d\n",b,c,a,c,a,b); scanf( "%s",str+ 1); char a = str[ 1], b = str[ 2], c = str[ 3]; printf( "%c%c%c %c%c%c\n",b,c,a,c,a,b); return0; }

B代码

# include<bits/stdc++.h>

charstr[ 105]; intn,k;

intmain{ scanf( "%d%d",&n,&k); scanf( "%s",str+ 1); intans = 0;

intlen = 0; for( inti = 1;i <= n;++i){ if(str[i] == 'X'){ // 产生了一个连续段ans += len/k;len = 0; }else{ len++;}}ans += len/k;

printf( "%d\n",ans); return0; }

C代码

# include<bits/stdc++.h>

usingnamespacestd; constintMAXN = 2e5+ 5;

pair< int, int> a[MAXN]; intn,m;

intmain{ scanf( "%d%d",&n,&m); for( inti = 1;i <= m;++i) scanf( "%d",&a[i].first); for( inti = 1;i <= m;++i) scanf( "%d",&a[i].second); sort(a+ 1,a+m+ 1);

intnow = 0; for( inti = 1;i <= m;++i){ // 此时的位置时 a[i].first, // 上一个位置时 a[i].first-1// 上一个位置的前缀和就是 nowif(now < a[i].first -1){ puts( "-1"); return0; }now += a[i].second;if(now < a[i].first){ puts( "-1"); return0; }}if(now != n){ puts( "-1"); return0; }longlongans = 1ll*n*(n+ 1)/ 2; for( inti = 1;i <= m;++i) ans -= 1ll*a[i].first * a[i].second; printf( "%lld\n",ans); return0; }

D代码

# include<bits/stdc++.h>

usingnamespacestd; queue< longlong> q; longlongtag = 0;

intmain{ intQ; scanf( "%d",&Q); while(Q--){ intop; scanf( "%d",&op); if(op == 1){ // 加一个实际的0,在队列是-tagq.push(-tag);}if(op == 2){ // 整体加上 T,所以 tag += TintT; scanf( "%d",&T); tag += T;}if(op == 3){ // 看有多少个 >= HintH; scanf( "%d",&H); intans = 0; while(!q.empty && q.front+tag >= H){ q.pop;ans++;}printf( "%d\n",ans); }}return0; }

E代码

# include<bits/stdc++.h>

constintMAXN = 2e5+ 5; intn; charstr[MAXN]; longlonga[MAXN];

intmain{ scanf( "%d",&n); scanf( "%s",str+ 1);

for( inti = 1;i <= n;++i){ a[n-i] += i*(str[i]- '0'); }

for( inti = n -1;i >= 0;--i) a[i] += a[i+ 1];

for( inti = 0;i <= n -2;++i){ a[i+ 1] += a[i]/ 10; a[i] %= 10; }

intlen = n -1; while(a[len] >= 10){ a[len+ 1] = a[len]/ 10; a[len] %= 10; len++;}for( inti = len;i >= 0;--i) printf( "%lld",a[i]); return0; }

F代码

# include<bits/stdc++.h>

usingnamespacestd; constintMAXN = 2e5+ 5; intn,q; inta[MAXN]; intans[MAXN];

std:: vector<pair< int, int> > query[MAXN]; // query[i]: 所有左端点为i的询问, <右端点, 第几个询问>intstk[MAXN],tp;

intmain{ scanf( "%d%d",&n,&q); for( inti = 1;i <= n;++i) scanf( "%d",a+i); for( inti = 1;i <= q;++i){ intl,r; scanf( "%d%d",&l,&r); query[l].emplace_back(r,i);}

for( intl = n;l >= 1;--l){ // 先处理所有询问for( auto[r, idx] : query[l]){ if(tp == 0) ans[idx] = 0; elseans[idx] = lower_bound(stk+ 1,stk+tp+ 1,-r)-stk -1; }while(tp && a[-stk[tp]] < a[l]) tp--; stk[++tp] = -l;}

for( inti = 1;i <= q;++i) printf( "%d\n",ans[i]); return0; }

G代码

# include<bits/stdc++.h>

voidadd( int&x, inty) { x += y-mod;x += x>> 31&mod; }

intpw[MAXM]; // pw[i]=3^iintn,m; charstr[MAXN][MAXN]; // 输入的inta[MAXN][MAXM]; // 列 <= 14

std:: vector< int> all_state; std:: map< int, int> state_id; // S -> all_state 的位置std:: vector< int> next_state[MAXS]; // next_state[i]: 第i个状态(all_state[i]) 下一行能填啥

voiddfs( intS, intT, intstep) { if(step == m){ // 已经填好了next_state[state_id[S]].push_back(state_id[T]);return; }ints_i = (S / pw[step])% 3; intt_last = (step == 0) ? -1: (T / pw[step -1]) % 3; for( into = 0;o < 3;++o){ if(o == s_i || o == t_last) continue; dfs(S, T+o*pw[step], step+ 1); }}

intf[ 2][MAXS],now;

intmain{ pw[ 0] = 1; for( inti = 1;i < MAXM;++i) pw[i] = pw[i -1] * 3; scanf( "%d%d",&n,&m); for( inti = 1;i <= n;++i) scanf( "%s",str[i]+ 1);

boolflip = 0; if(n < m) flip = 1, swap(n, m);

for( inti = 1;i <= n;++i) for( intj = 1;j <= m;++j){ charo = flip ? str[j][i] : str[i][j]; a[i][j] = (o == '?') ? -1: (o- '1'); }

assert(m <= 14); // RE assertion failed.

// 搜索所有合法状态for( intS = 0;S < pw[m];++S){ intlas = -1; boolflag = 1; for( inti = 0;i < m;++i){ into = (S/pw[i])% 3; if(las == o) {flag = 0; break;} las = o;}if(flag){ state_id[S] = all_state.size;all_state.push_back(S);}}

now = 0; // 搜索所有合法转移for( inti = 0;i < all_state.size;++i){ intS = all_state[i]; dfs(S, 0, 0); // S 能否作为第一行boolflag = 1; for( intj = 0;j < m;++j){ if(a[ 1][j+ 1] != -1&& (S/pw[j])% 3!= a[ 1][j+ 1]){ flag = 0; break; }}if(flag) f[now][i] = 1; elsef[now][i] = 0; }

for( inti = 2;i <= n;++i){ memset(f[now^ 1], 0, sizeof(f[now^ 1])); for( intj = 0;j < all_state.size;++j){ intS = all_state[j]; // j 能否作为第 i 行boolflag = 1; for( intk = 0;k < m;++k){ if(a[i][k+ 1] != -1&& (S/pw[k])% 3!= a[i][k+ 1]){ flag = 0; break; }}if(!flag) continue; for( autok:next_state[j]){ add(f[now^ 1][j], f[now][k]); }}now ^= 1; }

intans = 0; for( inti = 0;i < all_state.size;++i) add(ans, f[now][i]); printf( "%d\n",ans); return0; }

题库地址:https://atcoder.jp

针对每周六20:00举办的ABC比赛,我们每周日都会对比赛直播。

AtCoder-OI初学者最佳题库推荐(附比赛参赛方式介绍) <<<点击查看

1

IOI2024 信息学国家队名单出炉,学军中学2人入选!

IOI2024中国队获得两金一银好成绩!

清华大学&北京大学2024年各省各批次录取分数线

祝贺!NOI创建40周年表彰名单公示

379人获奖!APIO 2024获奖名单公示

最适合信息学初学者题库推荐-AtCoder

2024年高校保送生拟录取名单发布,共1808人,清华北大共319人

GESP与CSP-J/S的衔接办法发布-GESP七级可直通CSP-J第二轮

NOI2024报名通知发布

2024五大学科竞赛国家队名单全部发布

260人入选获清北保送资格!2024年五大学科竞赛国家集训队名单出炉

信息学竞赛金牌教练-讲述优秀的学生是如何养成的

信息学高手是怎么炼成的 | 入选信息学国家队,被清北保送两次!

西交大少年班考试近日结束,一起来了解国内现有的几个少年班

姚班信息学大牛讲座视频-如何学好信息学竞赛(入门篇)

学好信竞-浅谈信息学竞赛考场策略及程序测试

详细盘点清华姚班 智班,北大 浙大图灵班等多所高校AI专业实力!

再见,OI-大牛HZW亲笔,分享OI生涯记录,不变的是坚持和热爱!

根据信息学竞赛之路带你了解信息学竞赛流程

从搜狗CEO王小川(信息学金牌),看这二十几年中国奥赛金牌的去向 揭晓高薪专业排行榜,计算机专业薪资最高!哪些专业最具潜力?

一个清华保送生妈妈对竞赛的感受,自主招生家长都要看看!

计算机科学与技术专业全国大学排行榜!

为什么这些孩子初中就能被清华北大签约

(1)为什么有“编程思维”和数学能力强的人更优秀?

(2) 清北独家录制NOIP成功者说学习视频!!!

(3)我们为什么要对孩子进行编程教育?

(4)信息学竞赛答家长问题

1.信息学竞赛,你想了解的知识都在这里

2.信息学奥赛(NOIP)初赛学习方法推荐

3.信息学奥赛(NOIP)复赛学习方法推荐

4.大牛为你推荐十本最适合信息学竞赛的书籍

5.信息学奥赛有那么重要吗?

6.参加编程竞赛对实际工作的用处

7.清北学堂独家录制NOIP考试技巧讲座

8.在线编程挑战赛第一名:我是这么学算法的

9.信息学竞赛如何学习及准备攻略!

10.凭什么我得了信息学奥赛国家一等奖

11.榜样 | 北大降200分要这个诸暨天才少年

12.OI金牌教练胡芳:爱和成长的故事

13.信息学竞赛,一个让孩子不需要再去挤独木桥的方向

14.北大录取生陈代超:在信息学中找到“思维图谱”

15.国务院发文支持编程教育进入中小学,中国人工智能厚积薄发

关注「信息学竞赛」

看更多信息学趣闻与知识

↓↓返回搜狐,查看更多

责任编辑:

平台声明:该文观点仅代表作者本人,搜狐号系信息发布平台,搜狐仅提供信息存储空间服务。
阅读 ()