Codeforces Round #549 (Div. 2) 训练实录 (5/6)
The Doors +0
找出输入的01数列里,0或者1先出完的的下标。
Nirvana +3
输入n,求1到n的数字,哪个数逐位相乘的积最大,输出最大积。
思路是按位比较,从低到高,依次把小位换成全9,判断一下。细节上容易出错,比如边界和减一的情况。要多加小心。
Queen +0
给一棵树,删除树中一些点,这些点的\(C_i\)权值是1,且直接的孩子也也是1。从小到大依次输出删除的编号。
中间我以为是所有子孙的权值都要是1,幸好发现了。
The Beatles /+0
给一个\(n \cdot k\) 的环,其中每\(k\)个点就是一个关键点,现在主人公要从某点出发,每次走\(l\)个距离,最后回到出发点。给出起点距离最近关键点的距离\(a\),以及第二个到达的位置最近关键点的距离b。最少和最多需要多少次结束活动。

Lynyrd Skynyrd /+0
看过了题解,需要一点倍增(binary lifting)的技巧,大多数时间都用来学倍增了。题意是给长度\(n\)的数组\(p\),长度\(m\)的数组\(a\),对\(a\)进行\(q\)次区间询问,每次判断区间内,是否存在子序列恰好等于\(p\)的某个cyclic shifts。
cyclic shifts表示把p往左移动若干位,溢出的数依次插到右边。
看上去还挺蒙的,解法要一步步来,首先找到\(a[i]\)的最近的上一个数字\(a[j]\)在什么位置,使得\(a[j]\)和\(a[i]\)恰好是某对\(p[k-1]\)和\(p[k]\),我们把位置记作\(pre[i]\)。那么我们可以对每个位置\(i\),往左找\(a[i]\)作为结尾的匹配子序列的起点位置,如果能找到的话,我们可以对每个位置再记一个距离\(i\)最近的起点,每次询问就可以\(O(1)\)解决。但是这个找起点的过程暴力做的话是显然\(n*m\)的,时间不允许,因为是连续找前驱的操作,可以用倍增来优化。
//https://codeforces.com/contest/1143/problem/E
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 2e5+7;
const int INF = 0x3f3f3f3f;
int f[MAXN][(int)log(MAXN)+7];
int pre[MAXN];
int p[MAXN],a[MAXN];
int posa[MAXN],posp[MAXN];
int ans[MAXN];
int n,m,q,k;
int findpre(int u){
int t=n-1;
while(t&&u){
for(int i=k;i>=0;i--){
if((1<<i)<=t){
u=f[u][i];
t-=(1<<i);
break;
}
}
}
return u;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
//cout<<log10(100)<<endl;
cin>>n>>m>>q;
for(int i=1;i<=n;i++){
cin>>p[i];
posp[p[i]]=i;
}
for(int i=1;i<=m;i++){
cin>>a[i];
posa[a[i]]=i;
}
for(int pj,i=1;i<=m;i++){
pj=(posp[a[i]]-1+n-1)%n+1;
pre[i]=posa[p[pj]];
posa[a[i]]=i;
}
for(int u=1;u<=m;u++){
f[u][0]=pre[u]<u?pre[u]:0;
}
k=log(n)+1;
for(int i=1;i<=k;i++){
for(int u=1;u<=m;u++){
f[u][i]=f[f[u][i-1]][i-1];
}
}
for(int t,u=n;u<=m;u++){
t=findpre(u);
ans[u]=max(t,ans[u-1]);
}
for(int l,r,i=1;i<=q;i++){
cin>>l>>r;
if(ans[r]>=l)cout<<"1";
else cout<<"0";
}
cout<<endl;
return 0;
}
TBCD...还差一道,咕咕咕
U2
Codeforces Round #549 (Div. 2) 训练实录 (5/6)的更多相关文章
- [题解] Codeforces Round #549 (Div. 2) B. Nirvana
Codeforces Round #549 (Div. 2) B. Nirvana [题目描述] B. Nirvana time limit per test1 second memory limit ...
- Codeforces Round #549 (Div. 1)
今天试图用typora写题解 真开心 参考 你会发现有很多都是参考的..zblzbl Codeforces Round #549 (Div. 1) 最近脑子不行啦 需要cf来缓解一下 A. The B ...
- [ Codeforces Round #549 (Div. 2)][D. The Beatles][exgcd]
https://codeforces.com/contest/1143/problem/D D. The Beatles time limit per test 1 second memory lim ...
- Codeforces Round #302 (Div. 1) 训练
链接: http://codeforces.com/contest/543 过程: 惨淡的只做出了A和C 题解: A 题解: 简单的一道题 我们用$dp[i][j]$表示当前考虑到前num个人(这个另 ...
- Codeforces Round #549 (Div. 2) F 数形结合 + 凸包(新坑)
https://codeforces.com/contest/1143/problem/F 题意 有n条形如\(y=x^2+bx+c\)的抛物线,问有多少条抛物线上方没有其他抛物线的交点 题解 \(y ...
- Codeforces Round #549 (Div. 2) E 倍增处理按排列顺序的上一个位置
https://codeforces.com/contest/1143/problem/E 题意 p为n的一个排列,给出有m个数字的数组a,q次询问,每次询问a数组区间[l,r]中是否存在子序列为p的 ...
- Codeforces Round #549 (Div. 2) D 数学
https://codeforces.com/contest/1143/problem/D 题意 有nk个城市,第1,k+1,2k+1,...,(n-1)k+1城市有餐厅,你每次能走l距离,a为起始位 ...
- CodeForces Round #549 Div.2
A. The Doors 代码: #include <bits/stdc++.h> using namespace std; ; int N; , One = ; int a[maxn], ...
- B. Nirvana Codeforces Round #549 (Div. 2) (递归dfs)
---恢复内容开始--- Kurt reaches nirvana when he finds the product of all the digits of some positive integ ...
随机推荐
- WEB前端学习资源清单
常用学习资源 JS参考与基础学习系列 [MDN]JS标准参考 es6教程 JS标准参考教程 编程类中文书籍索引 深入理解JS系列 前端开发仓库 <JavaScript 闯关记> JavaS ...
- 【English】四、Y结尾名词变复数
一.辅音字母+y结尾的名词,将y改变为i,再加-es. 读音变化:加读[z]. 例: candy→candies; daisy→daisies; fairy→fairies; lady→ladies; ...
- Linq语法常见普通语法
闲言碎语 近期比较忙,但还是想写点什么,就分享一些基础的知识给大家看吧,希望能帮助一些linq新手,如果有其它疑问,可以进右上角群,进行交流探讨,谢谢. 开门见山 读这篇文章之前,我先说下,每一种搜索 ...
- Python 进程(一)理论部分
进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行,即正在运行的程序,是系统进行资源分配和调度的基本单位,进程是对正在运行程序的一个抽象,在早期面向进程设计的计算机结构中,进程是程 ...
- 基于gdal的格网插值
格网插值就是使用离散的数据点创建一个栅格图像的过程.通常情况下,有一系列研究区域的离散点,如果我们想将这些点转换为规则的网格数据来进行进一步的处理,或者和其他网格数据进行合并 等处理,就需要使用格网插 ...
- oracle 关于对时间操作的汇总
-- 对时间的操作 对当前日期增加一个小时: SQL> select sysdate, sysdate+numtodsinterval(1,’hour’) from dual ; 对当前日期增加 ...
- 2 OpenWrt路由器系统开发与网页设计
https://www.zhongkerd.com/news/content-729.html 摘 要: 目前商用WiFi路由器已应用到多个领域,商家通过给用户提供一个稳定免费WiFi热点达到吸引客户 ...
- QPalette
Help on class QPalette in module PyQt5.QtGui: class QPalette(sip.simplewrapper) | QPalette() | QPa ...
- EntityFramework Core是否可以映射私有属性呢?了解一下。
前言 最近几天身体有点抱恙,说话都需要勇气,痛哭.今天简短的写一点探索性的内容,仅供了解,感谢您的阅读. EF Core映射私有属性 在EF 6.x系列中写过一篇文章可以映射私有属性,说明EF的灵活性 ...
- url全部信息打印
public String findAllContract(HttpServletRequest request,String a){ String string = new StringBuilde ...
