[ZJOI2018]胖】的更多相关文章

[BZOJ5308][ZJOI2018]胖(模拟,ST表,二分) 题面 BZOJ 洛谷 题解 首先发现每条\(0\)出发的边都一定会更新到底下的一段区间的点. 考虑存在一条\(0\rightarrow x\)的边,我们来求解其可以影响的区间\([L,R]\),显然\(L\le x\le R\). 两侧分开考虑,以左边举例. 二分一个\(L\).如果这个\(L\)可行,即不存在一条边\(0\rightarrow y\),满足\(W_{0\rightarrow x}+Dis(L,x)\ge W_{0…
5308: [Zjoi2018]胖 链接 分析: 题目转化为一个点可以更新多少个点,一个点可以更新的点一定是一个区间,考虑二分左右端点确定这个区间. 设当前点是x,向右二分一个点y,如果x可以更新到y,那么在x~y之间的所有关键点(存在宫殿往这边的点)到y的距离小于x到y的距离,以及y~2*y-x之间的关键点到y的距离小于x到y的距离. 当然一个点可能同时被两个点更新,那么让最靠左的点更新它. 代码: #include<cstdio> #include<algorithm> #in…
题目 P4501 [ZJOI2018]胖 官方口中的送分题 做法 我们通过手玩(脑补),\(a_i\)所作的贡献(能更新的点)为:在\(a_i\)更新\(\forall x\)更新前前没有其他点能把\(x\)更新到更优 我们预处理出数组\(dis[i]\)为\(1\)号点走到\(i\)号点的未包含计划前的距离 对于\(x≤a[i]\Longrightarrow edge[x]=-dis[x]+(l[i]+dis[a[i]])\),对于\(x≥a[i]\Longrightarrow dis[x]+…
嘟嘟嘟 都说这题是送分题,但我怎么就不觉得的呢. 看来我还是太弱了啊-- 大体思路就是对于每一个设计方案,答案就是每一个关键点能更新的点的数量之和. 关键在于怎么求一个关键点能更新那些点. 首先这些点肯定是一个包含关键点\(a_i\)的连续区间,于是可以二分找区间的左右端点. 具体是这样的: 对于一个点\(x\),判断这个点能否被\(a_i\)更新. 令\(d = |x - a_i|\),即\(x\)和\(a_i\)间边的数量.然后看从七点出发经过\([x - d, x + d]\)这个区间的所…
题解: 因为n,m很大 所以复杂度应该是和m相关的 考虑到每个点的影响区间是连续的 就很简单了 区间查询最小值线段树维护(st表也可以) 然后注意一下不要重复算一个就可以了 max函数用template<class T> 不能与原来min重名 代码: #pragma GCC optimize(2) #include <bits/stdc++.h> using namespace std; #define ll long long #define IL inline #define…
原文链接https://www.cnblogs.com/zhouzhendong/p/ZJOI2018Day2T2.html 题目传送门 - BZOJ5308 题目传送门 - LOJ2529 题目传送门 - 洛谷P4501 题意 略. 题解 首先这个题目名称用来形容 cly 太好了. 考虑每一对 $(a_i,l_i)$ 对于答案的贡献. 我们可以发现每一条这种路径能够更新的节点是连续的一段.于是我们考虑二分边界. 设 x 为当前节点,我们当前二分到的节点为 y ,如果 x 不能更新节点 y ,那…
传送门 想题5分钟调题两小时系列 其实还是我tcl 读完题之后自然会知道一个关键点能够更新的点是一段连续的区间,于是我们对于每个点能到的左右区间二分答案,用ststst表维护一下查询即可. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getchar();…
贝尔福特曼(?)的方式相当于每次将所有与源点直接相连的点的影响区域向两边各扩展一格.显然每个点在过程中最多更新其他点一次且这些点构成一段连续区间.这个东西二分st表查一下就可以了.注意某一轮中两点都更新某节点的情况. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> #i…
题面 传送门(loj) 传送门(洛谷) 题解 我们对于每一个与宫殿相连的点,分别计算它会作为多少个点的最短路的起点 若该点为\(u\),对于某个点\(p\)来说,如果\(d=|p-u|\),且在\([p-d,p+d]\)中不存在点到\(p\)的距离小于\(u\)到\(p\)的距离,那么\(u\)就可以作为\(p\)的最短路的起点 易知可行的\(p\)肯定是连续的一段区间,所以我们可以二分左右端点 设\(sum_i\)表示点\(i\)到点\(1\)的距离,我们维护关键点的区间中\((sum_i-l…
Description Cedyks是九条可怜的好朋友(可能这场比赛公开以后就不是了),也是这题的主人公. Cedyks是一个富有的男孩子.他住在著名的ThePLace(宫殿)中. Cedyks是一个努力的男孩子.他每天都做着不一样的题来锻炼他的The SaLt(灵魂). 这天,他打算在他的宫殿外围修筑一道城墙,城墙上有n座瞭望塔. 你可以把城墙看做一条线段,瞭望塔是线段上的n个点,其中1和n分别为城墙的两个端点. 其中第i座瞭望塔和第i+1座瞭望塔的距离为wi,他们之间的道路是双向的. 城墙很…