[题解]MX-X6 A~B
Portal:https://www.luogu.com.cn/contest/200833
\(\bf{100+100+12+0+7+0=\color{indianred}219}\)\(\bf{\ ,\ rk230}\)
A - もしも
容易发现可以构造\(1,x\)或\(x,1\)让序列如\(\dots,1,x,1,x,1,x,\dots\)这样循环。只需要关注\(n\)的奇偶性即可。
点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,an;
signed main(){
cin>>t;
while(t--){
cin>>n>>an;
if(n&1) cout<<an<<" "<<1<<"\n";
else cout<<1<<" "<<an<<"\n";
}
return 0;
}
B - さよならワンダーランド
根据题意,我们找到的\(j\)需要满足:
- \(j\ge 1-i\)
- \(j\le n-i\)
- \(j\ge a_i\)
- \(j\le a_{i+j}\)
其中前\(3\)项都是静态的,与\(j\)无关的,所以我们在前\(3\)项限制的范围\([l,r]\)内寻找\(j\)使得\(j\le a_{i+j}\)即可,这也是此题的关键点。
我们记\(b_i=a_i-i\),那么
\(a_{i+j}\ge j\)
\(\iff [\max\limits_{j\in [l,r]}a_{i+j}-j]\ge 0\)
\(\iff [\max\limits_{j\in [l,r]}a_{i+j}-(i+j)]\ge (-i)\)
\(\iff \max\limits_{j\in [l,r]}b_{i+j} \ge (-i)\)
因此我们仅需用ST表维护出\(b\)的区间最大值,然后查找是否存在就直接看最后那个式子是否成立;查找具体位置我直接用的二分,如果\([l,mid]\)成立,那么左边一定存在合法的\(j\)(不是说右边没有),否则\(j\)一定在右边。
题解也有线性的做法,这个之后会补。
点击查看代码
#include<bits/stdc++.h>
#define int long long
#define N 300010
using namespace std;
int n,a[N],f[N][30],lg[N];
void init(){
lg[0]=-1;
for(int i=1;i<=n;i++) lg[i]=lg[i/2]+1;
for(int i=1;i<=lg[n];i++){
for(int j=1;j+(1<<i)-1<=n;j++){
f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]);
}
}
}
int query(int l,int r){
if(r<l) return LLONG_MIN;
int len=lg[r-l+1];
return max(f[l][len],f[r-(1<<len)+1][len]);
}
int modi(int a){
return min(max(1ll,a),n);
}
signed main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
f[i][0]=a[i]-i;
}
init();
for(int i=1;i<=n;i++){
int l=max(a[i],1-i),r=n-i;
if(query(i+l,i+r)>=-i){
while(l<r){
int mid=(l+r)>>1;
if(query(i+l,i+mid)>=-i) r=mid;
else l=mid+1;
}
cout<<"1 "<<l<<"\n";
}else cout<<"0\n";
}
return 0;
}
[题解]MX-X6 A~B的更多相关文章
- 2019第十届蓝桥杯C++B组题解(赛后重写的,不确保答案正确性,仅供参考)
先说一下这次的感受吧,我们考场比较乱,开始比赛了,还有的电脑有故障,(向这些人发出同情),第一次认真参加比赛,真正比赛的时候感觉没有那么正式,很乱,各种小问题,(例如博主就没找到题目在哪里,找到后又不 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- 2016ACM-ICPC Qingdao Online青岛网络赛题解
TonyFang+Sps+我=5/12 滚了个大粗 2016年9月21日16:42:36 10题完工辣 01 题意:求形同的数中大于n的最小值 题解:预处理所有的(5194个),在这里面二分 #inc ...
- 6.5 THUSC 考试题解
QAQ 由于并没有数据,而且没有A掉的是提交答案题目,所以并没有修改 QAQ 只能放题解了,代码还没有拿到,不过在清华听了一波习题讲评的安利 第一题 成绩单 先说暴力分 对于单调序列来说最优决策一定是 ...
- 2017 google Round C APAC Test 题解
题解参考网上的答案,以及我自己的想法. 主要参考网站:http://codeforces.com/blog/entry/47181,http://codeforces.com/blog/entry/4 ...
- [bzoj\lydsy\大视野在线测评]题解(持续更新)
目录: 一.DP 二.图论 1.最短路 2.强连通分量 三.利用单调性维护 四.贪心 五.数据结构 1.并查集 六.数学 1.计数问题 2.数学分析 七.博弈 八.搜索 /////////////// ...
- 1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区(题解第一弹)
1675: [Usaco2005 Feb]Rigging the Bovine Election 竞选划区 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: ...
- “盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛题解&&源码【A,水,B,水,C,水,D,快速幂,E,优先队列,F,暴力,G,贪心+排序,H,STL乱搞,I,尼姆博弈,J,差分dp,K,二分+排序,L,矩阵快速幂,M,线段树区间更新+Lazy思想,N,超级快速幂+扩展欧里几德,O,BFS】
黑白图像直方图 发布时间: 2017年7月9日 18:30 最后更新: 2017年7月10日 21:08 时间限制: 1000ms 内存限制: 128M 描述 在一个矩形的灰度图像上,每个 ...
- NOIP 2014 提高组 题解
NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...
随机推荐
- Hypermesh_LsDyna划分网格
1.创建角点 2.创建单元(按F6) 3.划分网格(按F12) 4.清除临时节点(Geom → temp nodes → clear all) 5.设置单元集(PD单元)(*SET_SHELL_LIS ...
- 阿里P7,竟问这么简单的题目?
今天面试阿里后端开发, ● 面试官提问:谈谈你对 const 理解 ● 我这样回答的: const 仅仅表示变量不能修改,太简答了,我早就知道了. ● 面试官回复:你觉得 这样能面过 P7 ,百万年薪 ...
- 几分钟了解下java虚拟机--04
方法内联 它的基本思想是在调用某个方法时,不通过跳转指令去执行该方法的代码,而是直接将该方法的代码复制到调用点处.这样可以减少方法调用的开销,包括减少函数调用和返回的指令执行时间,以及减少堆栈操作 方 ...
- 几分钟了解下java虚拟机--01
JDK, JRE, JVM的关系 ⚙ 解释器: 逐行转换字节码为机器码 即时编译器(JIT):将热点代码(经常执行的代码段)编译成高效的本地机器码,并缓存起来以供后续直接执行 Just-In-Time ...
- vue快速入门~必备基础知识(一)上
和JQ完全操作dom不同,他是通过一些特殊的html语法,将dom和数据绑定,创建了这种绑定,DOM和数据保持同步,js处数据一更新,dom自动更新. vue.js是javascript MVVM库( ...
- ttl串口wifi模块
串口无线模块ZLSN7046T是上海卓岚推出的wifi转串口模块.它能够将wifi信号转化为串口信号,且支持多种功能,邮票孔封装,体积小巧可以外置天线或者内置天线.7046T支持一个UART TTL电 ...
- sql server的 安装说明与基本工具概念
shared memory(共享内存) 代表连接本机的数据库:Named Pipes(命名管道)针对局域网内的数据库链接:tcp/ip 针对互联网内的数据库链接 ------数据库的操作: 1.联机事 ...
- 前端开发系列033-基础篇之Event事件
本文介绍JavaScript事件相关的知识点,主要包括事件流.事件处理程序.事件对象(event)以及常见事件类型和事件委托等相关内容. 在网页开发涉及的三种基础技术(HTML \ CSS \ Jav ...
- 前端开发系列009-基础篇之JavaScript内置Math
本文介绍JavaScript中的内置对象Math,以及Math的常用方法. 一.Math简单介绍 ECMAScript为我们提供了一个专门处理数学计算的内置对象--Math对象.Math对象提供了很多 ...
- linux cmake 报错 the c compiler identification is unknown
简介 RT 解决方案 cmake .. -DCMAKE_CXX_COMPILER=/usr/bin/c++ -DCMAKE_C_COMPILER=/usr/bin/gcc 另一个解决方案 也可以通过在 ...