【JSOI2018】绝地反击】的更多相关文章

[BZOJ5316][JSOI2018]绝地反击(网络流,计算几何,二分) 题面 BZOJ 洛谷 题解 很明显需要二分一个答案. 那么每个点可以确定的范围就是以当前点为圆心,二分出来的答案为半径画一个圆,和目标的圆的交就是可行的区间. 首先我们不知道正\(n\)边形的转角,如果我们知道的话,可以直接暴力网络流来进行\(check\). 首先一个答案可行,意味着某个点在目标圆上覆盖的弧的两端中,一定有一个是可行的. 所以我们需要验证的转角只有\(2n\)个.这样子暴力跑网络流的次数是\(2nlog…
若$R=0$,那么显然答案为离原点最远的点到原点的距离. 否则若所有点都在原点,那么显然答案为$R$. 否则考虑二分答案$mid$,检查$mid$是否可行. 那么每个点根据对应圆交,可以覆盖圆上的一部分,每个可行方案都可以通过平移使得刚好卡住某个交点. 枚举每个交点,算出圆上$n$个位置的坐标,然后匈牙利算法判断是否存在完美匹配,时间复杂度$O(n^4\log w)$,不能承受. 注意到这个图是个稠密图,所以可以用bitset对匈牙利进行加速,做到$O(\frac{n^3}{32})$每次匹配.…
题解: 只要确定了每艘飞船的就位位置,就可以用二分+网络流求得答案: 定义偏转角度$a$为离$x$正半轴逆时针最近的边的弧度,$a \in [0,\frac{2\pi}{n})$ 二分一个值,对于一个点可以求出可到达的弧度记为$[l,r]$ 那么在$[0,a]$的移动范围内只有可能前面一个点删除,后面一个点加入: 对$O(n)$个关键点做网络流即可: 复杂度$O(n^4 \ logn)$ 如果将关键点排序,每次只考虑变化的边退流可以优化到:$O(n^3 \log n)$ #include<bit…
题面 传送门 题解 调了咱一个上午-- 首先考虑二分答案,那么每个点能够到达的范围是一个圆,这个圆与目标圆的交就是可行的区间,这个区间可以用极角来表示 首先,如果我们知道这个正\(n\)边形的转角,也就是它在水平的基础上转过了几度的话,那么可以把它的每个顶点和包含它的圆弧所代表的点连边,如果这个二分图存在完备匹配那么说明有解 然而我们并不知道这个多边形转过了几度 我们考虑一种可行的方案,如果它没有任何一个顶点和在一段圆弧的端点上,那么一定可以转一点点距离使其中一个顶点刚好落在一个圆弧的端点上,那…
突然意识到有一些题目的计划,才可以减少大量查水表或者找题目的时间. 所以我决定这样子处理. 按照这个链接慢慢做. 当然不可能只做省选题了. 需要适时候夹杂一些其他的题目. 比如\(agc/arc/cf\)的题目,以及\(loj\)上的一些省的集训题目,还有\(uoj\)的各种\(round\)的题目. 大块大块的做题记录就在这里记录一下,省选后再来看结果,至少努力过就不曾后悔了不是吗? 首先先是省选题的记录,然后有比赛的记录,做到每周至少完成一整场\(CF\)或者\(AtCoder\)比赛的题解…
题目:https://loj.ac/problem/2548 如果知道正多边形的顶点,就是二分答案.二分图匹配.于是写了个暴力枚举多边形顶点的,还很愚蠢地把第一个顶点枚举到 2*pi ,其实只要 \( \frac{2*pi}{n} \) 就行了. 总之能得10分. #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define db double using nam…
题解 卡常卡不动,我自闭了,特判交上去过了 事实上90pts= = 我们考虑二分长度,每个点能覆盖圆的是一段圆弧 然后问能不能匹配出一个正多边形来 考虑抖动多边形,多边形的一个端点一定和圆弧重合 如果暴力枚举重合的点的话,是\(O(n^4 log V)\) 但是因为是正多边形,每个端点都等价,我们就把旋转角度控制在\(\frac{2\pi}{N}\)以内 然后就考虑加入一条边,我们要增广 删掉一条边,如果这条边没有流的话,就直接把容量改成0 如果有流的话,只涉及到三条边的流量,都修改就好 然后再…
题面 50pts 首先当然是二分答案\(mid\), 对于每一个点,以它为圆心的圆,交上攻击轨道: 那么这个点到攻击轨迹的可达范围就是一段圆弧. 怎么求这段圆弧呢? 我们知道圆弧可以用其两端点对于圆心的弧度(角度)来表示. 已知三角形的三边\(R1,R2,Dist\),利用余弦定理,我们可以求出角\(θ\). 然后我们也可以轻易得知\(C\)对于圆心\(A\)的弧度\(α\). 那么圆弧两端点的弧度分别为\(α±θ\). 假设一个圆弧覆盖正多边形的顶点,那么称圆弧和这个顶点可以匹配. 现在就是问…
来自FallDream的博客,未经允许,请勿转载,谢谢. 有幸拜读到贵省的题目,题的质量还不错,而且相比zjoi可做多了,简单发一下题解吧. 还有就是,怎么markdown在博客园上的代码这么丑啊 「JSOI2018」潜入行动 不难想到一个dp,用f[i][j][0/1][0/1]表示i的子树内放了j个监听设备,i这个节点是否放置,i是否已被监听的方案数. 表面上看起来是\(O(nk^{2})\)的,但是仔细考虑发现转移显然不满,复杂度是\(O(nk)\) #include<bits/stdc+…
潜入行动 复杂度分析题. 定义状态fi,j,0/1,0/1f_{i,j,0/1,0/1}fi,j,0/1,0/1​表示以iii为根子树放jjj个机器iii这个放不放,iii这个是否已放来进行dpdpdp 可以通过分类讨论证明做树上背包的时间复杂度是O(nk)O(nk)O(nk)的. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; inline int read(){ int ans=0; char…
[JSOI2018]潜入行动 树形\(DP\).设\(f_{i,j,0/1,0/1}\)表示以\(i\)为根的子树中,用了\(j\)个监听器,是否放置了监听器,是否被监听的方案数.转移就多讨论几种情况就好了. 关键问题是直接这么做是\(O(NK^2)\)的. 解决方案就是,我们别\(DP\)边维护子树的大小\(size\),每次枚举子树的监听器的时候不能超过\(min\{size,k\}\).这看似只是一个常数优化,但其实可以吧复杂度降到\(O(NK)\). 可以看这位dalao的证明 \(DP…
[BZOJ5318][JSOI2018]扫地机器人(动态规划) 题面 BZOJ 洛谷 题解 神仙题.不会.... 先考虑如果一个点走向了其下方的点,那么其右侧的点因为要被访问到,所以必定只能从其右上方的点走过来.同理,如果这个点向右,那么其下方的点就只能从其左下方的点向右走过来. 因此我们可以确定所有平行于副对角线的斜线上的位置的方向都是相同的. 考虑\(n=m\)的情况,从一个点开始无论向右开始向下,都只会走到下一条对角线上,因此这个过程本质上就是就是固定了一个向下向右的序列,然后循环这个操作…
[BZOJ5314][JSOI2018]潜入行动(动态规划) 题面 BZOJ 洛谷 题解 不难想到一个沙雕\(dp\),设\(f[i][j][0/1][0/1]\)表示当前点\(i\),子树中一共放了\(j\)个,这个点是否放了,这个是否被覆盖了. 看起来直接合并是\(O(nk^2)\)的QwQ..... 然后我以为是\(O(nk^2)\)的就不会做了嘤嘤嘤. 实际上是\(O(nk)\)的... 证明大概是这样的: 考虑什么时候会产生\(O(k^2)\)的贡献,即一个点有两棵子树的大小大于\(k…
[BZOJ5315][JSOI2018]防御网络(动态规划,仙人掌) 题面 BZOJ 洛谷 题解 显然图是仙人掌. 题目给了斯坦纳树就肯定不是斯坦纳树了,,,, 总不可能真让你\(2^n\)枚举点集再来一个至少\(2^n*n\)的斯坦纳树吧... 现在对于每一条边考虑贡献. 如果这条边是不在环内,那么这条边被选当且仅当其子树内外都有点备选,这个随便算算就知道贡献了. 然后就是环上的边,只考虑这个环,如果一个点的子树内选择了点的话就把环上这个点给标记出来,那么最后选择的东西就一定是整个环的长度减去…
[BZOJ5317][JSOI2018]部落战争(凸包,闵可夫斯基和) 题面 BZOJ 洛谷 题解 很明显我们只需要两个凸包\(A,B\). 假设询问给定的方向向量是\(v\). 那么现在就是判断\(B+v\)与\(A\)时候有交集. 转移一下改为判定向量\(v\)时候在\(A-B\)中,翻转\(B\)的坐标,做闵可夫斯基和得到\(A-B\). 那么每次只需要判断向量\(v\)是否在凸包内即可. #include<iostream> #include<cstdio> #includ…
Jsoi2018 R1: D1:T1:签到题,状压dp,(思考:讲题人说可以卡一卡空间,怎么做?) T2:50pts:贪心,因为无重复 100pts:线段树合并? T3:25pts 树形dp D1:T1:签到题,网络流,(玄学复杂度)(思考:讲题人说什么网络流/匹配都可以过). 实际得分:50pts 写了C=1的分支, if(c==1)baoli();else Dinic(); 结果正解写对了,暴力写炸了. T2:树形dp,线段树合并 T3:SAM R2: D1:  T1:树形dp 80pts…
「JSOI2018」战争 解题思路 我们需要每次求给一个凸包加上一个向量后是否与另外一个凸包相交,也就是说是否存在 \[ b\in B,(b+w)\in A \] 这里 \(A, B\) 表示凸包内部的点集,可以转化一步变成 \[ a\in A,b \in B,b+w=a \\ w =a -b \] 那相当于对 \(A,(-B)\) 作闵可夫斯基和,判断 \(w\) 是否在新的凸包内部,把新的凸包划分成三角区域,让 \(w\) 和原点做一条向量,二分一下在哪个区域然后判断一下在区域内部还是外部就…
[Luogu4558] [LOJ2550] \(19.3.25\) JSOI2018简要题解 - FallDream 规律就是 对于\(n=m\)我们每一条左下到右上的对角线上的点的走法都是一样的且每\(n\)步一个轮重复 对于\(n!=m\)我们找到最大公约数\(d\),在每个\(d∗d\)的方格里满足左上到右下的对角线点的走法一样且\(d\)轮一个重复 然后枚举\(dx,dy=d−dx\),我们要满足\(gcd(n,dx)==1且gcd(m,dy)==1\)这时是一个合法路径 显然有一些点是…
[JSOI2018]军训列队 题目大意: \(n(n\le5\times10^5)\)个学生排成一排,第\(i\)个学生的位置为\(a_i\).\(m(m\le5\times10^5)\)次命令,每次将编号在\([l,r]\)之间的学生移动到\([k,k+r-l]\)位置上,每个位置站一个人,顺序自定(无需考虑原来在\([k,k+r-l]\)位置上的人).每次的代价为每个人移动距离之和.求每次操作的最小代价. 思路: 建立主席树,维护每个区间内人数和与坐标和. 考虑所有人都在区间\([k,k+r…
BZOJ5319: [Jsoi2018]军训列队 https://lydsy.com/JudgeOnline/problem.php?id=5319 分析: 易知把所有人按原本的顺序放到\([K,K+len-1]\)这些位置上是最优的. 我们只需要求一个\(mid\), 满足从\(mid\)以后的人都是向左移动. 这个可以用二分+主席树在\(O(nlog^2)\)的时间内解决, 然后过不去. 变成直接在主席树上二分就好了,需要一点小技巧. 即二分走的区间不一定包含答案点,但可能是答案点减\(1​…