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)的更多相关文章

  1. [题解] Codeforces Round #549 (Div. 2) B. Nirvana

    Codeforces Round #549 (Div. 2) B. Nirvana [题目描述] B. Nirvana time limit per test1 second memory limit ...

  2. Codeforces Round #549 (Div. 1)

    今天试图用typora写题解 真开心 参考 你会发现有很多都是参考的..zblzbl Codeforces Round #549 (Div. 1) 最近脑子不行啦 需要cf来缓解一下 A. The B ...

  3. [ 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 ...

  4. Codeforces Round #302 (Div. 1) 训练

    链接: http://codeforces.com/contest/543 过程: 惨淡的只做出了A和C 题解: A 题解: 简单的一道题 我们用$dp[i][j]$表示当前考虑到前num个人(这个另 ...

  5. Codeforces Round #549 (Div. 2) F 数形结合 + 凸包(新坑)

    https://codeforces.com/contest/1143/problem/F 题意 有n条形如\(y=x^2+bx+c\)的抛物线,问有多少条抛物线上方没有其他抛物线的交点 题解 \(y ...

  6. Codeforces Round #549 (Div. 2) E 倍增处理按排列顺序的上一个位置

    https://codeforces.com/contest/1143/problem/E 题意 p为n的一个排列,给出有m个数字的数组a,q次询问,每次询问a数组区间[l,r]中是否存在子序列为p的 ...

  7. 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为起始位 ...

  8. CodeForces Round #549 Div.2

    A. The Doors 代码: #include <bits/stdc++.h> using namespace std; ; int N; , One = ; int a[maxn], ...

  9. B. Nirvana Codeforces Round #549 (Div. 2) (递归dfs)

    ---恢复内容开始--- Kurt reaches nirvana when he finds the product of all the digits of some positive integ ...

随机推荐

  1. Mybatis-plus快速入门

    简介 MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:只做增强不做改变,引入它不会对现 ...

  2. 由于服务主机:DCOM服务进程占用过多CPU,导致系统卡死

    最近在使用电脑的时候,总是出现电脑死机,而且鼠标也是经常卡在那里不动了,开始以为是鼠标的问题,还换了个鼠标(飙泪中),这还是一个血的教训啊!!!之后打开任务管理器发现CPU占用已经达到100%,而且一 ...

  3. cesium 之地图显示坐标、比例尺、海拔高度效果篇(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 内 ...

  4. zabbix利用SNMPTrap接收交换机主动告警

    zabbix接收trap的工作流程: snmptrapd 收到trap snmptrapd将trap传递给SNMPTT或调用Perl接收器 SNMPTT或Perl trap接收器解析,格式化并将tra ...

  5. Jdk 接口类RandomAccess了解

    1. 接口说明 Marker interface used by List implementations to indicate that they support fast (generally ...

  6. java有关 String char 常见问题 编辑中

    1 输入输出有关 Scanner 的next()方法 返回值是String 所以尝试获得char时 应该用input.next().charAt[0] 2 空值 String 中null是指 对象引用 ...

  7. serialize()与serializeArray()

    1.了解serialize()与serializeArray() serialize()序列化表单元素,用于ajax请求, serializeArray()序列化表单元素,类似于serialize,但 ...

  8. Loj #3093. 「BJOI2019」光线

    Loj #3093. 「BJOI2019」光线 题目描述 当一束光打到一层玻璃上时,有一定比例的光会穿过这层玻璃,一定比例的光会被反射回去,剩下的光被玻璃吸收. 设对于任意 \(x\),有 \(x\t ...

  9. 如何配置jenkins 与代理服务器吗?

    0       我们面临一些问题使用代理服务器(即缓存服务器)和詹金斯是希望有人可以提供如果他们有类似的设置.    Herea€™年代简要描述的设置: 在主站点反向代理,JTS & CCM服 ...

  10. vue兄弟之间传值 bus中央事件总线

    创建一个eventVue.js文件 import Vue from 'vue' export default new Vue 父 <template> <div> <di ...