Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder

E - Lucky Numbers

题意: 给两个数组a,b,构成一个S数组,保证S[i]+S[i]+1==a[i],问S数组中出现的元素中,与b数组相同的最多有几个。

题解: 首先要知道,你确定了这个数组中的某一个值,那么其他的值也就确定了,所以,我们可以让最少有一个相同的,所以每个位置遍历b数组的几种数字。

首先我们构成一个第一位为0的S数组,然后可以发现,如果第一位+1,那么奇数位置都加一,偶数位置都减一,所以每次判断选择的数字和以0为开始的S数组的中你要替换的哪一项的差值,然后判断奇偶,记录一下即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=2e5+5;
const ll inf=1e18;
const ll mod=998244353;
ll a[N],b[N],sum[N];
map<ll,ll> mp;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
ll n,m;cin>>n>>m;
for(ll i=1;i<=n-1;i++) cin>>a[i];
for(ll i=1;i<=m;i++) cin>>b[i];
for(ll i=2;i<=n;i++) sum[i]=a[i-1]-sum[i-1];
for(ll i=1;i<=n;i++)
for(ll j=1;j<=m;j++){
ll pt=sum[i]-b[j];//记录差值
if(i&1) pt*=-1;//判断奇偶
mp[pt]++;//存储
}
ll ans=-inf;
for(auto it:mp) ans=max(ans,it.second);
cout<<ans;
}

F - Pre-order and In-order

题意: 给出先序中序,判断能否构成一个根节点为1的树,能的话每个点的左右节点是多少

题解: 根据先序遍历找出对应元素在中序遍历的位置,对应的肯定是一个中点,然后分为左右两块遍历即可。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=2e5+5;
const ll inf=1e18;
const ll mod=998244353;
ll f[N],mid[N];
ll cnt,idx[N];
ll ansl[N],ansr[N];
ll solve(ll l,ll r){
if(l>r) return 0;
cnt++;
ll p=f[cnt];ll pt=idx[p];
if(pt<l||pt>r){//判断是否越界
cout<<"-1";exit(0);
}
ansl[p]=solve(l,pt-1);
ansr[p]=solve(pt+1,r);
return p;
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
ll n;cin>>n;
for(ll i=1;i<=n;i++) cin>>f[i];
for(ll i=1;i<=n;i++) { cin>>mid[i];idx[mid[i]]=i;}
if(f[1]!=1){
cout<<"-1";
return 0;
}
solve(1,n);
for(ll i=1;i<=n;i++){
cout<<ansl[i]<<" "<<ansr[i]<<endl;
}
}

AtCoder Beginner Contest 255(E-F)的更多相关文章

  1. AtCoder Beginner Contest 238 A - F 题解

    AtCoder Beginner Contest 238 \(A - F\) 题解 A - Exponential or Quadratic 题意 判断 \(2^n > n^2\)是否成立? S ...

  2. AtCoder Beginner Contest 131 Task F. Must Be Rectangular

    Score: 600 points Approach 固定横坐标 $x$,考虑横坐标为 $x$ 的竖直线上最多可以有几个点. Observations 若最初两条竖直线 $x_1$.$x_2$ 上都有 ...

  3. AtCoder Beginner Contest 137 F

    AtCoder Beginner Contest 137 F 数论鬼题(虽然不算特别数论) 希望你在浏览这篇题解前已经知道了费马小定理 利用用费马小定理构造函数\(g(x)=(x-i)^{P-1}\) ...

  4. AtCoder Beginner Contest 136

    AtCoder Beginner Contest 136 题目链接 A - +-x 直接取\(max\)即可. Code #include <bits/stdc++.h> using na ...

  5. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

  6. AtCoder Beginner Contest 153 题解

    目录 AtCoder Beginner Contest 153 题解 A - Serval vs Monster 题意 做法 程序 B - Common Raccoon vs Monster 题意 做 ...

  7. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  8. AtCoder Beginner Contest 161

    比赛链接:https://atcoder.jp/contests/abc161/tasks AtCoder Beginner Contest 161 第一次打AtCoder的比赛,因为是日本的网站终于 ...

  9. 题解 AtCoder Beginner Contest 168

    小兔的话 欢迎大家在评论区留言哦~ AtCoder Beginner Contest 168 A - ∴ (Therefore) B - ... (Triple Dots) C - : (Colon) ...

随机推荐

  1. vue大型电商项目尚品汇(后台篇)day02

    这几天更新有点小慢,逐渐开始回归状态了.尽快把这个后台做完,要开始vue3了 3.添加修改品牌 用到组件 Dialog 对话框,其中visible.sync这个配置是修改他的显示隐藏的,label-w ...

  2. 2.2.1 用户态、内核态的形成 -《zobolの操作系统学习札记》

    内核态的出现,让计算机系统的权力向操作系统高度集中了. 操作系统分出内核态和用户态,就是为了进行不同等级的权限管理, 从而更好的适应多用户多任务并发的工作环境. 用户态和内核态的来源 在早期的单进程单 ...

  3. 使用AndroidKiller进行APK反编译

    安装环境 JDK 最好用JDK8,问就是坑太多了 Android Studio 官网安装即可,安装教程如下 https://www.runoob.com/android/android-studio- ...

  4. sql-删除重复数据-oracle

    删除重复数据 准备重复数据 create table mystudent ( stuno number , stuname varchar2(20), stuage number ); insert ...

  5. JQuery中html(),val(),text()-的区别

    1.HTML html():取得第一个匹配元素的html内容.这个函数不能用于XML文档.但可以用于XHTML文档 html(val):设置每一个匹配元素的html内容.这个函数不能用于XML文档.但 ...

  6. 令你瞠目结舌的 Python 代码技巧

    0. for-else 在 Python 中,else 不仅可以与 if 搭配使用,还可以与 for 结合. python答疑 咨询 学习交流群2:660193417### for x in rang ...

  7. Python程序入口 __name__ == ‘__main__‘ 有重要功能(多线程)而非编程习惯

    文章来源于互联网(https://jq.qq.com/?_wv=1027&k=rX9CWKg4) 在Python中,被称为「程序的入口」的 if name =='main': 总是出现在各种示 ...

  8. POI 给单元格添加批注

    图中红框框是处理单元格内容和批注的地方. 参考:https://blog.csdn.net/qq_38974638/article/details/114837631 //SXSSFWorkbook ...

  9. C#.NET笔试题-高级

    1.说说什么是架构模式. 1,分层. 2,分割. 分层是对网站进行横向的切分,那么分割就是对网站进行纵向的切分.将网站按照不同业务分割成小应用,可以有效控制网站的复杂程度. 3,分布式. 在大型网站中 ...

  10. 动态树 — Euler_Tour_Tree

    一般提到动态树,我们会不约而同的想到 LCT,这算是比较通用,实用,能力较为广泛的一种写法了.当然,掌握 LCT 就需要熟悉掌握 Splay 和各种操作和知识.ETT(中文常用称呼:欧拉游览树)是一种 ...