BZOJ5316 : [Jsoi2018]绝地反击】的更多相关文章

若$R=0$,那么显然答案为离原点最远的点到原点的距离. 否则若所有点都在原点,那么显然答案为$R$. 否则考虑二分答案$mid$,检查$mid$是否可行. 那么每个点根据对应圆交,可以覆盖圆上的一部分,每个可行方案都可以通过平移使得刚好卡住某个交点. 枚举每个交点,算出圆上$n$个位置的坐标,然后匈牙利算法判断是否存在完美匹配,时间复杂度$O(n^4\log w)$,不能承受. 注意到这个图是个稠密图,所以可以用bitset对匈牙利进行加速,做到$O(\frac{n^3}{32})$每次匹配.…
[BZOJ5316][JSOI2018]绝地反击(网络流,计算几何,二分) 题面 BZOJ 洛谷 题解 很明显需要二分一个答案. 那么每个点可以确定的范围就是以当前点为圆心,二分出来的答案为半径画一个圆,和目标的圆的交就是可行的区间. 首先我们不知道正\(n\)边形的转角,如果我们知道的话,可以直接暴力网络流来进行\(check\). 首先一个答案可行,意味着某个点在目标圆上覆盖的弧的两端中,一定有一个是可行的. 所以我们需要验证的转角只有\(2n\)个.这样子暴力跑网络流的次数是\(2nlog…
题解: 只要确定了每艘飞船的就位位置,就可以用二分+网络流求得答案: 定义偏转角度$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…