[JSOI2016]灯塔】的更多相关文章

来自FallDream的博客,未经允许,请勿转载,谢谢. JSOI的国境线上有N一座连续的山峰,其中第ii座的高度是hi??.为了简单起见,我们认为这N座山峰排成了连续一条 直线.如果在第ii座山峰上建立一座高度为p(p≥0)的灯塔,JYY发现,这座灯塔能够照亮第jj座山峰,当且仅当满足如 下不等式:hj≤hi+p-(是减号)sqrt(|i-j|)JSOI国王希望对于每一座山峰,JYY都能提供建造一座能够照亮全部其他山峰的灯 塔所需要的最小高度.你能帮助JYY么? 1< N ≤ 10^5 0 <…
Description $JSOI$的国境线上有$N$一座连续的山峰,其中第$i$座的高度是$h_i$​​.为了简单起见,我们认为这$N$座山峰排成了连续一条直线. 如果在第$i$座山峰上建立一座高度为$p(p\;\geq\;0)$的灯塔,$JYY$发现,这座灯塔能够照亮第$j$座山峰,当且仅当满足如下不等式: $h_j\;\leq\;h_i+p+\sqrt{|i-j|}$ $JSOI$国王希望对于每一座山峰,$JYY$都能提供建造一座能够照亮全部其他山峰的灯塔所需要的最小高度.你能帮助$JYY…
第一种方法是决策单调性优化DP. 决策单调性是指,设i>j,若在某个位置x(x>i)上,决策i比决策j优,那么在x以后的位置上i都一定比j优. 根号函数是一个典型的具有决策单调性的函数,由于根号函数斜率递减,所以i决策的贡献的增长速度必定比j快. 于是使用基础的决策单调性优化即可. 注意两个问题,一是DP函数要存实数而不能存整数,因为先取整会丢失在后面的判断中需要的信息.二是记录决策作用区间的时候左端点要实时更新,即下面的p[st].l++,否则在二分时会出现错误. #include<c…
即对每个i最大化hj-hi+sqrt(|i-j|).先把绝对值去掉,正反各做一次即可.注意到当x>y时,sqrt(x+1)-sqrt(x)<sqrt(y+1)-sqrt(y),所以若对于i选择j比选择k更优(j>k),对于i+1~n也会是这样,即满足决策单调性(虽然并不能算作dp). 可以这样使用决策单调性优化:维护一个栈,存储当前考虑的这些位置中每个位置向哪个区间转移最优.转移时在栈中二分,然后考虑更新栈,如果新加入的位置向栈顶的整个区间转移都是最优的,直接将栈顶位置弹出,否则二分找一…
传送门 #include <bits/stdc++.h> using namespace std; #define rep(i,a,b) for(int i=a;i<=b;++i) ; inline int gi() { ; char o; bool f=true; for(;!isdigit(o=getchar());)if(o=='-')f=false; )+(x<<)+(o&); ; } ][]; int qry(int l,int r){ ; <<…
DP学习记录Ⅰ 以下为 DP 的优化. 人脑优化DP P5664 Emiya 家今天的饭 正难则反.考虑计算不合法方案.一个方案不合法一定存在一个主食,使得该主食在多于一半的方法中出现. 枚举这个"超标"的主食 \(i\).设 \(f[j][k][l]\) 表示前 \(j\) 种方法中一共选择了 \(k\) 个主食 \(i\),一共选择了 \(l\) 个主食 的方案数.最终答案为 \(f[n][u][v]\),其中 \(u > v / 2\).这样,我们得到了一种 \(O(m^2…
「JSOI2016」灯塔 传送门 我们先只计算照亮左边的灯塔的最低高度,计算右边的类同,然后只要取 \(\max\) 就好了. 那么稍微整理一下式子:\(p_i \ge h_j - h_i + \sqrt{i - j}\) 我们发现可以对 \(j\) 数论分块,然后每次查询块内最大的 \(h_j\) 即可. 区间最大值用 \(\text{ST}\) 表维护. 复杂度就是 \(O(n \log n + n\sqrt{n})\) #include <cstdio> #define rg regis…
loj 题面错的--去bzoj上看吧qwq 观察到 \(\sqrt{|i-j|}\) 的取值只有 \(\sqrt{n}\) 级别个,然后就很显然了,rmq. #include <iostream> #include <cstdio> using namespace std; int n, a[100005], st[100005][19], mlg[100005]; int getMax(int l, int r){ if(l>r) return -0x3f3f3f3f; i…
TsingHua OJ 上不能使用<algorithm>头文件,因此需要手写快排(刚开始写的时候自己就出了很多问题....),另外本题需要在给横坐标排序后,需要记录纵坐标的顺序对的数量,因此,最快的算法貌似只有归并排序或者树状数组的方法进行顺序对的查找和记录了,时间度为O(nlogn),另外此前需要一次对横坐标的排序,这里用快排. 灯塔(LightHouse) 描述 海上有许多灯塔,为过路船只照明. 如图一所示,每个灯塔都配有一盏探照灯,照亮其东北.西南两个对顶的直角区域.探照灯的功率之大,足…
描述 海上有许多灯塔,为过路船只照明.从平面上看,海域范围是[1, 10^8] × [1, 10^8] . (图一) 如图一所示,每个灯塔都配有一盏探照灯,照亮其东北.西南两个对顶的直角区域.探照灯的功率之大,足以覆盖任何距离.灯塔本身是如此之小,可以假定它们不会彼此遮挡. (图二) 若灯塔A.B均在对方的照亮范围内,则称它们能够照亮彼此.比如在图二的实例中,蓝.红灯塔可照亮彼此,蓝.绿灯塔则不是,红.绿灯塔也不是. 现在,对于任何一组给定的灯塔,请计算出其中有多少对灯塔能够照亮彼此. 输入 共…
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title></title> <style> html,body{padding: 0; margin: 0; width: 100%;…
Description As shown in the following figure, If another lighthouse is in gray area, they can beacon each other. For example, in following figure, (B, R) is a pair of lighthouse which can beacon each other, while (B, G), (R, G) are NOT. Input 1st lin…
题目链接 loj#2071. 「JSOI2016」最佳团体 题解 树形dp强行01分规 代码 #include<cstdio> #include<cstring> #include<algorithm> #define gc getchar() #define pc putchar inline int read() { int x = 0,f = 1; char c = gc; while(c < '0' || c > '9') c = gc; while…
目录 题目链接 题解 代码 题目链接 loj#2076. 「JSOI2016」炸弹攻击 题解 模拟退火 退火时,由于答案比较小,但是温度比较高 所以在算exp时最好把相差的点数乘以一个常数让选取更差的的概率降低 代码 #include<ctime> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define gc getchar() #define…
BZOJ4755 [Jsoi2016]扭动的回文串 Solution 考虑对于他给出的 A中的一个回文串: B中的一个回文串: 或者某一个回文的扭动字符串S(i,j,k) 这样子几个限制,我们1,2就是很简单的manacher解决. 考虑第三个怎么做: 这一个扭动的回文串,一定是分成三个部分:A里面的,B里面的,A或B里的一个回文串.(串可以为空) 突然发现A或B里面的回文串可以选一个最大的,这样子对答案只会更优,不会变劣. 那么剩下的不难发现这是一个hash入门题(二分答案判断长度,终点已经确…
BZOJ 4753 [Jsoi2016]最佳团体 | 树上背包 分数规划 又是一道卡精度卡得我头皮发麻的题-- 题面(--蜜汁改编版) YL大哥是24OI的大哥,有一天,他想要从\(N\)个候选人中选\(K\)个小弟(\(N, K \le 2500\)). 想要成为大哥的小弟不是件容易事,必须要有一个举荐人才行,所以每个候选人\(i\)都有一个另一个候选人\(R_i\)作为举荐人,只有当举荐人\(R_i\)被大哥选为小弟时,候选人\(i\)才有可能被选. 每个候选人都有一个选取代价\(S_i\)…
首先我们来讨论下游戏开发中的几个坐标系,为了方便解释,我截取了灯塔AOI DEMO当NPC数目为0时候的样子(代码地址觉得有帮助的童鞋记得给我代码点个星^_^) 先对这张图简单说明下: 蓝色的坐标轴表示是灯塔AOI坐标系,绿色的坐标轴表示的是游戏坐标系,向左为X轴正方向,向上为Y轴正方向(这个坐标是我自己后面画上去的) 深蓝色的点表示灯塔AOI坐标,左下的表示(0,0),右上表示(1,1) 深绿色的点表示游戏坐标,左下表示(0,0),右上表示(1,1) 每个灰色的小格子代表一个游戏坐标(边长为1…
[LOJ 2082] 「JSOI2016」炸弹攻击 2 链接 链接 题解 枚举发射源,将发射源当做原点,对敌人和激光塔极角排序. 由于敌人纵坐标均为正,而其它点均为负,因此每两个角度差在 \(\pi\) 以内的激光塔内部的敌人的个数之和就是该发射源对答案的贡献. 用前缀和以及 \(Two Pointers\) 可以在 \(O(N)\) 的时间内统计一个发射源的贡献. 时间复杂度 \(O(N2LogN)\). 代码 #include <iostream> #include <cstdio&…
Z市是一座港口城市,来来往往的船只依靠灯塔指引方向.在海平面上,存在n个灯塔.每个灯塔可以照亮以它的中心点为中心的90°范围.特別地, 由于特殊限制,每个灯塔照亮范围的角的两条边必须要么与坐标轴平行要么与坐标轴成45°. 由于经费限制,Z市的灯塔只能被点亮一座.你需要求出在这种情况下,是否存在一座灯塔能够照亮Z市的所有灯塔. 输入描述: 第一行一个整数T,表示数据组数.对于每组数据,第一行一个整数n,表示灯塔的数量.接下来n行,每行两个整数xi,yi,表示第i座灯塔的坐标点. 输出描述: 如果存…
我竟然半个小时切了一道JSOI2016,,,,不敢相信. 首先可以发现,如果N个数中1出现的次数<=1的话,我们按不能在一个集合连无向边的话,连出的一定是一个二分图. 接下来我来证明一下: 因为1出现的次数<=1,所以如果两个数的和是质数的话,首先得满足他们的和是奇数,所以这两个数肯定得是一奇一偶,也就是连出的图中的边的两个端点的奇偶性肯定是不同的,这就证明了这是一个二分图. 然后我们还可以发现,如果1的个数>1的话,我们只留下一个1,答案是不变的,因为1的选择只能是{0,1},多了没用…
BZOJ_4753_[Jsoi2016]最佳团体_树形背包+01分数规划 Description JSOI信息学代表队一共有N名候选人,这些候选人从1到N编号.方便起见,JYY的编号是0号.每个候选人都由一位 编号比他小的候选人Ri推荐.如果Ri=0则说明这个候选人是JYY自己看上的.为了保证团队的和谐,JYY需要保证, 如果招募了候选人i,那么候选人Ri"也一定需要在团队中.当然了,JYY自己总是在团队里的.每一个候选人都有 一个战斗值Pi",也有一个招募费用Si".JYY…
BZOJ4753: [Jsoi2016]最佳团体(分数规划+树上背包) 标签:题解 阅读体验 BZOJ题目链接 洛谷题目链接 具体实现 看到分数和最值,考虑分数规划 我们要求的是一个\(\dfrac{\sum P_i}{\sum S_i}\)最大对吧,考虑二分一个答案\(mid\) 那么就会有合法条件\(\dfrac{\sum P_i}{\sum S_i}\ge mid\),化简一下:\(\sum{(P_i-S_i×mid)}\ge 0\) 所以每次二分一个\(mid\)之后得到一个新数组v[i…
题面 GDOI是一个地处丘陵的小国,为了边防建设,国王希望在国界线上的某一座山峰上建立一座灯塔,照亮整个边界.而灯塔建设的调研工作,就交给了你. GDOI的国境线上有N座连续的山峰,其中第i座的高度是hi.为了简单起见,我们认为这N座山峰排成了连续一条直线. 如果在第i座山峰上建立一座高度为p(p>=0)的灯塔,你会发现,这座灯塔能够照亮第j座山峰,当且仅当满足如下不等式: hj <= hi + p - sqrt(|i - j|) GDOI国王希望对于每一座山峰,你都能提供建造一座能够照亮全部…
题目 洛谷 P4322 [JSOI2016]最佳团体 Description 茜茜的舞蹈团队一共有\(N\)名候选人,这些候选人从\(1\)到\(N\)编号.方便起见,茜茜的编号是\(0\)号.每个候选人都由一位编号比他小的候选人\(R_i\)推荐.如果\(R_i=0\)则说明这个候选人是茜茜自己看上的.为了保证团队的和谐,茜茜需要保证,如果招募了候选人\(i\),那么候选人\(R_i\)也一定需要在团队中.当然了,茜茜自己总是在团队里的.每一个候选人都有一个能力值\(P_i\),也有一个招募费…
原创申明:本文由公众号[猿灯塔]原创,转载请说明出处标注 本文将介绍 java.util.concurrent.Phaser,一个常常被大家忽略的并发工具.它和 CyclicBarrier 以及 CountDownLatch 很像,但是使用上更加的灵活,本文会进行一些对比介绍. 和之前的文章不同,本文不写源码分析了,就只是从各个角度介绍下它是怎么用的.本文比较简单,我觉得对于初学者大概需要 20 分钟左右吧. 其实我对这个需要多少时间很没概念,有没有读者愿意记录下所花费的时间,在评论区反馈一下.…
老年人了,只能靠安装部署项目混混日子这样~ 简介: 斗象TCC团队正式发布「ARL资产安全灯塔」开源版,该项目现已上线开源社区GitHub.ARL旨在快速侦察与目标关联的互联网资产,构建基础资产信息库.协助甲方安全团队或者渗透测试人员有效侦察和检索资产,发现存在的薄弱点和攻击面. ARL采用Python3.6开发,Web API接口通过flask构建,数据存储在mongo中,任务调度采用celery进行分发(目前暂不支持windows平台,Linux和MAC建议采用Docker 运行) 安装部署…
Time Limit: 10 Sec  Memory Limit: 512 MB Description JYY有两个长度均为N的字符串A和B. 一个"扭动字符串S(i,j,k)由A中的第i个字符到第j个字符组成的子串与B中的第j个字符到第k个字符组成的子串拼接而成. 比如,若A='XYZ',B='UVW',则扭动字符串S(1,2,3)='XYVW'. JYY定义一个"扭动的回文串"为如下情况中的一个: 1.A中的一个回文串: 2.B中的一个回文串: 3.或者某一个回文的扭动…
来自FallDream的博客,未经允许,请勿转载,谢谢. JYY有两个长度均为N的字符串A和B. 一个“扭动字符串S(i,j,k)由A中的第i个字符到第j个字符组成的子串与B中的第j个字符到第k个字符组成的子串拼接而成. 比如,若A=’XYZ’,B=’UVW’,则扭动字符串S(1,2,3)=’XYVW’. JYY定义一个“扭动的回文串”为如下情况中的一个: 1.A中的一个回文串: 2.B中的一个回文串: 3.或者某一个回文的扭动字符串S(i,j,k) 现在JYY希望找出最长的扭动回文串. n<=…
一道比较好的树Hash的题目,提供一种不一样的Hash方法. 首先无根树的同构判断一般的做法只有树Hash,所以不会的同学可以做了Luogu P5043 [模板]树同构([BJOI2015]树的同构)再来. 首先我们直接考虑一种朴素的想法,暴力求出\(A\)树中以每一个点为根时的Hash值 然后扔到一个set(你要再写个Hash也没事)里,再在\(B\)树中枚举叶子节点,判断去掉这个叶子节点后的Hash值是否在set里即可. 发现这样算法的复杂度瓶颈在求\(A\)树Hash值时的\(O(n^2)…
题目分析: 我写了史上最丑的后缀数组,怎么办? 首先manacher一遍两个串,这样只用考虑第三问.用$作为间隔符拼接两个串,把第一个串翻转.枚举回文中心,取最长的回文串,对于剩下的部分利用LCP匹配即可. 代码: #include<bits/stdc++.h> using namespace std; #define Sec first.second #define Fir first.first ; ]; string s1,s2,vk; ]; void read(){cin >&g…