loj#2391 「JOISC 2017 Day 1」港口设施】的更多相关文章

分析 https://yhx-12243.github.io/OI-transit/records/uoj356%3Bloj2391%3Bac2534.html 代码 #include<bits/stdc++.h> using namespace std; ; vector<]; ][],a[],b[],bel[],],n,m,vis[]; inline int sf(int wh,int x){return fa[wh][x]==x?x:fa[wh][x]=sf(wh,fa[wh][x…
loj 答案显然满足二分性,先二分一个速度\(v\) 然后显然所有没有点火的都会往中间点火的人方向走,并且如果两个人相遇不会马上点火,要等到火快熄灭的时候才点火,所以这两个人之后应该在一起行动.另外有火的人应该是选前面一个或后面一个没火的人,去和他相遇,所有任意时刻点过火的人都是连续的区间\([L,R](L\le k \le R)\) 现在要做的是推出\([1,n]\)是否可以被全部点火.一个区间\([L,R]\)能被点火,至少要满足的条件为\(x_R-x_L\le 2tv(R-L)\),即这两…
Loj 2731 「JOISC 2016 Day 1」棋盘游戏 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子.JOI 君有若干棋子,并想用它们来玩一个游戏.初始状态棋盘上至少有一个棋子,也至少有一个空位. 游戏的目标是:在还没有放棋子的格子上依次放棋子,并填满整个棋盘.在某个格子上放置棋子必须满足以下条件之一: 这个格子的上下一格都放有棋子: 这个格子的左右一格都放有棋子. JOI 君想知道有多少种从初始状态开始,并达到游戏目标的方案,这个答案可能会非常大.请你帮 JO…
[LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞 试题描述 到河北省 见斯大林 / 在月光下 你的背影 / 让我们一起跳舞吧 うそだよ~ 河北省怎么可能有 Stalin. 可是-- 可是如果 Stalin 把自己当作炸弹扔到地堡花园里来了呢? 怀揣着这份小小的希望,元首 Adolf 独自走进了花园.终有一天会重逢的吧,Stalin.或许是在此处,或许是在遥远的彼方. 无论如何,在此之前,好好装点一番花园,编排一段优美的舞步吧! 元首把花园分为 \(n\) 行 \(m\…
#6250. 「CodePlus 2017 11 月赛」找爸爸 题目描述 小 A 最近一直在找自己的爸爸,用什么办法呢,就是 DNA 比对. 小 A 有一套自己的 DNA 序列比较方法,其最终目标是最大化两个 DNA 序列的相似程度,具体步骤如下: 给出两个 DNA 序列,第一个长度为 nnn,第二个长度为 mmm. 在两个序列的任意位置插入任意多的空格,使得两个字符串长度相同. 逐位进行匹配,如果两个序列相同位置上的字符都不是空格,假设第一个是 xxx,第二个是 yyy,那么他们的相似程度由 …
Description 有 n 棵树,初始时每棵树的高度为 H_i,第 i 棵树每月都会长高 A_i.现在有个木料长度总量为 S 的订单,客户要求每块木料的长度不能小于 L,而且木料必须是整棵树(即不能为树的一部分).现在问你最少需要等多少个月才能满足订单. Input 第一行 3 个用空格隔开的非负整数 n,S,L,表示树的数量.订单总量和单块木料长度限制.第二行 n 个用空格隔开的非负整数,依次为 H1,H2,…,Hn.第三行 n 个用空格隔开的非负整数,依次为 A1,A2,…,An. Ou…
Description “无体育,不清华”.“每天锻炼一小时,健康工作五十年,幸福生活一辈子” 在清华,体育运动绝对是同学们生活中不可或缺的一部分.为了响应学校的号召,模范好学生王队长决定坚持晨跑.不过由于种种原因,每天都早起去跑步不太现实,所以王队长决定每 a 天晨跑一次.换句话说,假如王队长某天早起去跑了步,之后他会休息 a−1 天,然后第 a 天继续去晨跑,并以此类推. 王队长的好朋友小钦和小针深受王队长坚持锻炼的鼓舞,并决定自己也要坚持晨跑.为了适宜自己的情况,小钦决定每 b 天早起跑步…
题目:https://loj.ac/problem/2737 相连的关系形成若干环 / 内向基环树 .如果不是只有一个环的话,就得断开一些边使得图变成若干链.边的边权是以它为出边的点的点权. 基环树的树的部分可以 DP 或者贪心,贪心就是只在分叉处断边. 对于每个环,先做出 f[ i ][ 0/1 ] 表示环上这个点 不向下 / 向下 延伸链的代价,然后在环上 DP . 方法就是先指定 tot -> 1 的边不选, DP 一番,再制定 tot -> 1 的边选, DP 一番. 如果指定 tot…
题目:https://loj.ac/problem/2736 如果每个询问都是 l = 1 , r = n ,那么每次输出序列的 n 个数与本次操作的数的最大值即可.可以用堆维护. 不同区间的询问,可以分块! 考虑如果 l = 1 , r = n ,怎么知道最后的序列每个位置是什么. 可以这样:把所有操作的数字都放进小根堆里,依次遍历每个位置,如果堆顶比该位置的值小,就把该位置的值换成堆顶的值,堆里删掉原堆顶,加入该位置原来的值. 分块的话,每个块开两个大根堆,一个 yq 维护原序列的数字,一个…
LOJ 题面传送门 orz 斜率优化-- 模拟赛时被这题送走了,所以来写篇题解( 首先这个最短路的求法是 trivial 的,直接一遍 dijkstra 即可( 重点在于怎样求第二问.注意到这个第二问平方和最大要在保证最短路的基础上求,因此考虑建出最短路 DAG,这样最短路径上一条 \(1\to n\) 的路径就对应原图中一条最短路.因此此题等价于求一条 \(1\to n\) 的路径,满足每一个属于同一连续段上路径权值和的平方之和最大.注意到 \(f(x)=x^2\) 是下凸函数,也就是对于一段…
题解: 和hnoi2018day2t1基本一样 我想了半小时想出了一个很麻烦的做法 写了之后发现假掉了 刚开始想的是 先预处理出每个门要打开至少要在左边的哪个点$L[]$,右边的哪个点$R[]$ 对每个位置要去二分出右端点(左端点同理) 然后合法的判定方法是 在$MIN(L[k])~i-1$这一段 和$i+1~当前点$这一段 不存在点满足$lx>=y&&ry>=x$ 然后我想了一会 很傻比的发现可以对每个点预处理最右边哪个点满足这个(直接忽略了前面的条件) 然后就gg了…
题意 JOI 君有一个棋盘,棋盘上有 \(N\) 行 \(3\) 列 的格子.JOI 君有若干棋子,并想用它们来玩一个游戏.初始状态棋盘上至少有一个棋子,也至少有一个空位. 游戏的目标是:在还没有放棋子的格子上依次放棋子,并填满整个棋盘.在某个格子上放置棋子必须满足以下条件之一: 这个格子的上下一格都放有棋子: 这个格子的左右一格都放有棋子. JOI 君想知道有多少种从初始状态开始,并达到游戏目标的方案,这个答案可能会非常大.请你帮 JOI 君算出这个答案,并对 \(10^9+7\) 取模. 数…
题目大意:有一个$n\times m$的网格图,若一个人的同一行或同一列有人,他就必须面向那个人,若都无人,就可以任意一个方向.若一个人无法确定方向,则方案不合法,问不同的方案数.$n,m\leqslant3000$ 题解:令$f_{n,m}$表示$n\times m$的网格图的答案.$f_{0,i}=f_{i,0}=1$,考虑在原来基础上加一列 1. 这一列是空的.$f_{n,m}+=f_{n,m-1}$2. 这一列放一个人,且他所在的一行无人,那么他可以放在这一列的任意一个位置,并且可以向$…
有趣的脑子题(可惜我没有脑子 好像也可以称为模拟费用流(? 我们考虑用链表维护这个东西 再把贡献扔到堆里贪心就好了 大概就是类似于有反悔机制的贪心?我们相当于把选中的一个打上一个-v的tag然后如果选了它旁边的就把它取消掉 也是一个打tag的思想 说起来不是很好描述 看代码可能会更好理解(? //Love and Freedom. #include<cstdio> #include<algorithm> #include<cstring> #include<cma…
分析 预处理每个点的前根号小的距离 对于每次询问删除点小于根号则已经处理好 否则直接暴力dp即可 代码 #include<bits/stdc++.h> using namespace std; #define fi first #define se second #define mp make_pair ; ],vis[]; priority_queue<pair<]; pair<][b+]; vector<]; int main(){ int i,j,k; scanf…
参考博文 (不过个人感觉我讲的稍微更清楚一点) 题目就是让我们求图中满足数值大于等于B的连通块数量 然后我们可以尝试转换为求连通块两端所产生的“谷”的数量,显然一个连通块对谷可以贡献2的答案,最终答案就是谷的数量除以2 (下图为查询$B_i$大小为4时的情况,每一个箭头代表一个谷) 发现每两个数中间的空格都是有可能产生谷的,所以我们只需要维护有多少个空格满足产生谷的条件即可 记一个空格左边的数字为X,右边的数字为Y,当前询问为B,观察发现,当且仅当满足下列条件时,这个空格可以成为谷 $$min(…
用 LCT 维护颜色相同连通块,然后在线段树上查一下逆序对个数就可以了. code: #include <cstdio> #include <algorithm> #include <cstring> #include <string> #define N 100005 #define ll long long using namespace std; namespace IO { void setIO(string s) { string in=s+&qu…
LOJ 2288「THUWC 2017」大葱的神力 Link Solution 比较水的提交答案题了吧 第一个点爆搜 第二个点爆搜+剪枝,我的剪枝就是先算出 \(mx[i]\) 表示选取第 \(i \sim n\) 个物品所能达到的最大价值,如果当前价值加上后面一段的最大价值都打不到当前最大答案,那么返回 第三个点只有一个包,直接背包 \(f[i][j]\) 表示前 \(i\) 个物品占用空间为 \(j\) 时最大价值 第四.五个点每个物品的体积相同,所以每个包能够放下的物品数量相同,直接建图跑…
「COCI2016/2017 Contest #2」Bruza 解题思路 : 首先对于任意时刻 \(i\) ,硬币一定移动到了深度为 \(i\) 的节点,所以第 \(i\) 时刻 Danel 一定染掉一个深度为 \(i + 1\) 的节点.又因为如果硬币到了深度为 \(k\) 的节点游戏就结束了,所以深度 \(> k\) 的节点都可以忽视,把所有深度 \(= k\) 的节点看做这棵树的叶子,如果一个节点其子树里面没有深度 \(= k\) 的节点,那么这整棵子树也是可以被忽视的. 其次,如果染色的…
「JOISC 2016 Day 1」棋盘游戏 先判无解:第1,3行有连续的空格或四个角有空格. 然后可以发现有解的情况第1,3行可以在任意时间摆放. 对于某一列,若第2行放有棋子,那么显然可以把棋盘分开两边来计算,然后再排列一下. 所以目前要处理的是一段 第二行都没有棋子的棋盘的方案数. 对于该段棋盘: 定义\(dp[i][j][2]\)为前\(i\)列,当前列的第二行是第\(j\)个放置的,\(0/1\)表示是否为通过行的方式放置. 这里为了避免重复和方便,若可以通过列的方式放置,就不通过行的…
目录 @description@ @solution@ @accepted code@ @details@ @description@ 「人生就像一盒巧克力,你永远不知道吃到的下一块是什么味道.」 明明收到了一大块巧克力,里面有若干小块,排成 n 行 m 列.每一小块都有自己特别的图案 \(c_{i, j}\),它们有的是海星,有的是贝壳,有的是海螺--其中还有一些因为挤压,已经分辨不出是什么图案了.明明给每一小块巧克力标上了一个美味值 \(a_{i, j}\)(\(0 \leq a_{i, j…
听说LOJ传了THUSC题赶紧上去看一波 随便点了一题都不会做想了好久才会写暴力爆了一发过了... LOJ #2978 题意 $ T$次询问,每次询问$ L,R$,问有多少种选取区间中数的方案使得选出的数的积为完全平方数 $ T \leq 100,R \leq 10^7 \sum\limits R-L \leq 6·10^7$ 时限$ 5s$ 题解 随便写个暴力发现答案都是$2$的若干次幂 首先对于每个数,每个质因子出现的次数显然只有奇偶性是有用的 用一个$ bitset$存储每个数中每个质因数…
loj 首先,所有位置最多被染色一次,因为要染多次的话,还不如一开始就染成最终的颜色.并且你可以一开始就染好色 因为最终长度为2,那么如果染完后这个序列可以被折完,那么首先最多只有两种颜色,还有就是要满足对于所有同色极大联通块长度都要是偶数,不过第一个和最后一个长度可以为奇数 证明的话,先证充分条件,即这样子一定合法.可以搞出一个方法,每次只操作后面.先把最后面一个连通块长度缩成1(这样一定最优),然后因为接下来一个连通块长度为偶数,所以可以把接下来那个轴对称翻过去,然后重复这个操作直到长度为2…
题目:https://loj.ac/problem/2980 线段树维护矩阵. 然后是 30 分.似乎是被卡常了?…… #include<cstdio> #include<cstring> #include<algorithm> #define ll long long #define ls Ls[cr] #define rs Rs[cr] using namespace std; int rdn() { ;;char ch=getchar(); ;ch=getchar…
题目:https://loj.ac/problem/2979 原来的思路: 优化连边.一看就是同一个桌子相邻座位之间连边.相邻桌子对应座位之间连边. 每个座位向它所属的桌子连边.然后每个人建一个点,向若干桌子连边. 因为连边的桌子是区间,所以线段树优化. 又想到志愿者招募之类的,所以想弄一个上下界费用流.人向它的座位连下界为1的边,对应桌子区间向人连边.找一些循环流. #include<cstdio> #include<cstring> #include<algorithm&…
题目:https://loj.ac/problem/2978 题解:https://www.cnblogs.com/Paul-Guderian/p/10248782.html 第 i 个数的 bitset 的第 j 位表示 i 是否含有奇数个 “第 j 个质数” . 想到用 bitset ,就开始考虑怎样 DP …… 其实是求选一些数,使得它们的 bitset 异或和为 0 .所以求线性基,答案就是 2R-L+1-线性基大小 . 然后考虑根号分治. 大于 \( \sqrt{n} \) 的质数,每…
题目:https://loj.ac/problem/2977 想到斯坦纳树.但以为只能做 “包含一些点” 而不是 “包含一些颜色” .而且不太会处理中位数. 其实 “包含一些颜色” 用斯坦纳树做也和普通的一模一样……只是赋初值的时候,遇到该颜色的点就可以更新一下罢了…… 中位数可以二分.每个点除了 “块数” 这个关键字之外,再带一个关键字表示 “a[ ][ ]是否大于二分值” ,用 -1 表示不大于,1表示大于,然后普通地跑一个斯坦纳树,看看第二关键字那一维是否 <= 0 即可. 至于处理 “从…
思路 和玩游戏一题类似 定义\(A_k(x)=\sum_{i=0}^\infty a_k^ix^i=\frac{1}{1-a_kx}\) 用\(\ln 'x\)代替\(\frac{1}{x}\), 所以就是求 \[ f(x)=\sum_{i=1}^n \ln'(1-a_ix) \] 这样没法快速计算 所以再设\(G(x)=\sum _{i=1}^n (ln(1-a_ix))'\) 所以 \[ G(x)=\sum_{i=1}^n\frac{-a_i}{1-a_ix} \] 所以 \[ f(x)=-…
题意 题目链接 分析 如果走到了下行车站就一定会在前面的某个车站走回上行车站,可以看成是一对括号. 我们要求的就是 类似 代价最小的括号序列匹配问题,定义 f(i,j) 表示到 i 有 j 个左括号没有匹配. 转移时注意一个车站可以有多个左括号和右括号,如果选多个类似无限背包顺着倒着递推一遍即可. 复杂度 \(O(n^2)\) 代码 代码链接…
题面 传送门 题解 我们发现如果两个三角形相离,那么这两个三角形一定存在两条公切线 那么我们可以\(O(n^2)\)枚举其中一条公切线,然后可以暴力\(O(n^3)\)计算 怎么优化呢?我们可以枚举一个定点,然后把其它所有点按到这个定点的极角排序,那么就可以\(O(n^2)\)得出答案了 //minamoto #include<bits/stdc++.h> #define R register #define ll long long #define inline __inline__ __a…