HNOI模拟 Day3.25 By Yqc
怕老婆
【问题描述】
有一天hzy9819,来到了一座大城市拥有了属于他自己的一双滑板鞋。但是他还是不满足想要拥有属于自己的一栋楼,他来到了一条宽敞的大道上,一个一个记录着这些楼的层数以方便自己选择。
hzy9819因为欣欣的要求,所以只喜欢高度h mod p=k的房子。但hzy9819是个鬼畜boy,他总是忘记欣欣的要求,但他不知道其实不是他记错了而是每次欣欣讲的p k都不同。
假设hzy9819每次知道了欣欣要求后是从大道的li点进入,ri点出去。因为害怕老婆的hzy9819怕自己数错,所以请你帮忙统计每次满足鬼女要求的楼有多少栋。
【输入格式】
第一行两个数n,m表示大道上有n栋楼,m表示情圣回去问了鬼女m次
第二行n个数,表示从1~n房子的高度
接下来m行,每行四个数li,ri,p,k。表示询问li到ri之间满足mod p=k的房屋个数。
【输出格式】
m行,每行输出所询问的答案。
【样例输入】
5 2
1 5 2 3 7
1 3 2 1
2 5 3 0
【样例输出】
2
1
【数据说明】
30%:n<=1000,m<=2000
100%: 0<n,m<=10^5,任意1<=i<=n满足hi<=10^4,0<p<=10^4,0<=k<p。
我们首先发现只有询问操作所以我们可以直接离线操作,将询问按照端点排序
接下来我们看到数据范围hi<=10000所以我们将询问分成两种情况处理
p<=100
这时我们可以用f[i][j]表示mod i=j的数有多少个
此时我们所需要统计的就是将r时的值减去l-1时的值可以很容易求出
p>=100
我们可以用f1[i]表示为i的数有多少个
我们只需统计f1[k]+f1[k+1*p]+f1[k+2*p]。。。我们再减去l-1时所得到的值就可以了
保护家园
【问题描述】
在一次偶然的情况下,科学家知道金字塔是古人类为了保护自己抵御外星人入侵而建立的保护塔,它的保护范围为一个R半径的圆形。
因为古人类要保留尽可能多的资源来对外星人进行反扑,所以他们希望保护的范围尽量的小。又因为要为人类保留香火所以要至少保护住k个居住点,这样才能让所有人类住下。现在国王不知道最小确定的R是多少,所以他穿越了千年来找你,要你帮他计算一下。如果你找不到,他就把你“嘿嘿嘿”。
【输入格式】
程序的第一行输入数据为两个整数:N和K(2≤K≤N≤500)——N为居住点的数目,K为至少保护k个居住点。
接下来的N行中,每一行包括了一对整数:X和Y(0≤X, Y≤10,000)——(X,Y)是居住点的坐标。“居住点”的坐标不会重复。保证有合法解。
【输出格式】
仅一行,包含一个实数。推荐保留8位小数。
【样例】
|
Sample Input 1 |
Sample Output 1 |
|
10 5 1 8 2 6 4 8 2 2 9 7 8 5 5 3 3 3 4 6 4 1 |
2.23606797 |
|
Sample Input 2 |
Sample Output 2 |
|
4 3 2 2 6 2 6 5 2 8 |
2.50000000 |
【数据说明】
35%的数据保证N<=100
100%的数据保证N<=500
暴力:
首先我们考虑暴力怎么写,是不是枚举两个点在圆上(思考为什么不是三个或两个)
对于每两个给定点,试探所有可能的圆,分为以下两种情况:
I) 以该两点连线为圆的直径
II)这两点与其他N-2个点分别组成圆
通过解方程组得出圆心坐标及半径,并检查给定点集在圆内的点的数目
算法分析:
取任意两点,复杂度为O(N2)
求出所有可能的圆,复杂度为O(N)
对于任一个圆求在圆中的点的数目O(N)
算法的总复杂度:O(N4)
显然复杂度不正确,那么接下来怎么做?
正解:
接下来我们首先看一下题目,我们发现其实R是可以二分的,二分性显然可证。
那么我们应该怎么验证和确定的R的正确性呢?
我们可以记得在不久前有一道题是将两个圆是否相交投影到了一个半径上,那么我们这道题我们假设确定了一个点一定在圆上,那么我们将每一个圆投影到这个半径上然后扯开,就转化为了在一个线段上被多条线段最大覆盖量,显然可以(N2logn)
所以总复杂度为(N2lognlogmaxR)
其实也是到水题毕竟以前有接触过啊!
保留实力
【问题描述】
在庞大的中国有大大小小若干个军区,有无数个军人在奋斗,他们为了祖国的荣耀和尊严默默奉献着,他们用生命捍卫着人民至高无上的权益。你或许不知道他们的名字,不知道他们是谁。但是我们知道他们是中国人民解放军,是中国人民的部队,是正义的保护伞,是罪犯的天敌。
现在因为中国每个军区外围都有一个围墙(每个军区都为矩形,围墙是矩形的边缘部分),有一天因为黑客入侵,没有开启型号屏蔽。被M国的卫星不小心检测到了中国的军队部分围墙所在。因为中国军队的数量太庞大,M国联合所有国家向中国施压,要中国公布所有军区的所在地,来确保世界和平。
现在中国的白客组织在一次截取资料时,不小心看到了M国从卫星上观测到的已知的N个军区的情况。但是因为中国以前用了许多的农民来建筑围墙其中有一些是障眼法(现在已经全部拆除了),所以他们也不敢确信这些围墙所围的地方一定是军区的范围,但是他们确信这些地方有军区。
军委主席为了保护尽可能多的民族英雄,希望公开的军区领土越少越好。现在你知道了M国已知的N个军区所在的矩形,现在有一种虚以为蛇的方法,就是公开在带i个(1<=i<=n)军区内,用一个由围墙(可以是别的军区的围墙)组成的矩形来代表第i个军区。而且公开的军区矩形之间不能有重叠部分(而原本军区因为有重点保护区是有重叠部分的)。求最小公开的面积。(如果无法代表所有的军区输出-1)(注:边界可以重叠)
【输入格式】
输入文件第一行括一个数字
N,
接下来 4 行 N 列,每列依次为 4 个数字(x1,y1),(x2,y2)表示一个矩形的对顶角坐标。
【输出格式】
输出最小面积,或者-1
【样例输入1】
2
1 0
1 2
3 4
4 3
【样例输出1】
3
【样例输入 2】
2
0 1
0 1
2 3
2 3
【样例输出 2】
-1
【数据说明】
对于 30%的数据,|X|,|Y| ≤ 100
对于 100%的数据,N ≤30 , |X|,|Y|≤10000
基本上就是裸的暴力题。
将矩形扣出来的方法有太多种 最后的二分图或者费用流就是一个模板所以大家如果想练代码能力的话还是可以打的。
这道题其实只是为了补充算法的多样性其实也是一道水题。
首先我们看到一一对应关系首先就可以想到网络流和二分图。
然后我们可以发现一个性质,对于每一个可以代表军区的矩形内部是没有比他小的矩形的否则选比他小的更优。
然后我们呢可以将每一个不包含其他矩形的矩形给扣出来然后,将其对应的军区连线,然后跑一边带权二分图,或者费用流就可以完美解决这道题了。
HNOI模拟 Day3.25 By Yqc的更多相关文章
- HNOI模拟 Day3.23
一.拓扑(top)[ 题目描述]:给你一个有向二分图,求他的拓扑序列的个数.[ 输入]:第一行两个数 N,M,表示点数和边数.接下来 M 行每行两个数 a,b,表示 a 向 b 有一条有向边.[ 输出 ...
- HNOI模拟 Day3.22
第一题: 盾盾的打字机 (drdrd) [题目描述] 盾盾有一个非常有意思的打字机,现在盾哥要用这台打字机来打出一段文章. 由于有了上次的经验,盾盾预先准备好了一段模板 A 存在了内存中,并以此为基础 ...
- NOIP模拟测试2-5
该补一下以前挖的坑了 先总结一下 第二次 T1 搜索+剪枝 #include<cstdio> #include<iostream> #define ll long long u ...
- 【模拟7.25】回家(tarjan V-DCC点双连通分量的求法及缩点 求割点)模板题
作为一道板子题放在第二题令人身心愉悦,不到一个小时码完连对拍都没打. 关于tarjan割点的注意事项: 1.在该板子中我们求的是V-DCC,而不是缩点,V-DCC最少有两个点组成,表示出掉一个块里的任 ...
- 3194. 【HNOI模拟题】化学(无标号无根树计数)
Problem 求\(n\)个点的每个点度数不超过\(4\)的无标号无根树个数. Data constraint \(1\le n\le 500\) Solution 尝试着把问题一般化.我们来考虑一 ...
- [第一波模拟\day3\T3]{益智游戏}(game.cpp)
[问题描述] 小P和小R在玩一款益智游戏.游戏在一个正权有向图上进行. 小P控制的角色要从A点走最短路到B点,小R控制的角色要从C点走最短路到D点. 一个玩家每回合可以有两种选择,移动到一个相邻节点或 ...
- [第一波模拟\day3\T2]{独立集}(bubble.cpp)
[问题描述] 有一天,一个名叫顺旺基的程序员从石头里诞生了.又有一天,他学会了冒泡排序和独立集.在一个图里,独立集就是一个点集,满足任意两个点之间没有边.于是他就想把这两个东西结合在一起.众所周知,独 ...
- 【HNOI模拟By lyp】Day2
1 toad1.1 题目描述 有 n 个石子, A B 两人博弈, A 先手. A 首先取若干个石子(至少一个,不能取完),然后B和A 再轮流取石子,每次取的石子不能超过 axb ( x 表示上次取的 ...
- 【HNOI模拟By lyp】Day1
1 xlk1.1 题目描述 给定一棵大小为 n 的无根树,求满足以下条件的四元组 (a, b, c, d) 的个数: 1. 1 ≤ a < b ≤ n 2. 1 ≤ c < d ≤ n 3 ...
随机推荐
- A7. JVM 垃圾回收收集器(GC 收集器)
[概述] 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.Java 虚拟机规范中对垃圾收集器应该如何实现没有任何规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾处理器都可能会 ...
- oracle调用存储过程和函数返回结果集
在程序开发中,常用到返回结果集的存储过程,这个在mysql和sql server 里比较好处理,直接返回查询结果就可以了,但在oracle里面 要 out 出去,就多了一个步骤,对于不熟悉的兄弟们还得 ...
- Ubuntu 系统安装(这里用ubuntu 16.04)
一.安装Vmware Workstation 12 选择新建虚拟机- 下一步-安装根据红框部分及说明一步一步进行 点击下一步进行 接下来默认下一步,直到如下图 这里的最大磁盘大小100G.不会直接在本 ...
- Linux命令学习(6):paste合并几列文件
如果我们有三个文件: $ cat name.txt #姓名文档 Kevin Mary Tom $ cat gender.txt #性别文档 M F M $ cat age.txt #年龄文档 我们想把 ...
- 版本控制git之五-标签管理 tags 标签 代码版本 如: v1.0
版本控制git之五-标签管理 打标签 像其他版本控制系统(VCS)一样,Git 可以给历史中的某一个提交打上标签,以示重要. 比较有代表性的是人们会使用这个功能来标记发布结点(v1.0 等等). ...
- DAG模型(矩形嵌套)
推荐在线例题:http://acm.nyist.net/JudgeOnline/problem.php?pid=16 题摘: 矩形嵌套 时间限制:3000 ms | 内存限制:65535 KB 难 ...
- allegro学习--区域约束
前言: 在有些情况需要我们在走线时在某些区域的时候,线是细的,例如BGA封装的FPGA在引出线的时候,我们希望在FPGA内部的线细,出了FPGA后,线变粗.如图: 这就用到了区域的规则约束. 实现: ...
- MySQL:视图、触发器、存储过程、事务
视图: 视图,虚拟表 创建虚拟表: # 语法: # create view 虚拟表名称 as 虚拟表; create view course_and_teacher as select * from ...
- openjudge7627 鸡蛋的硬度
描述 最近XX公司举办了一个奇怪的比赛:鸡蛋硬度之王争霸赛.参赛者是来自世 界各地的母鸡,比赛的内容是看谁下的蛋最硬,更奇怪的是XX公司并不使用什么精密仪器来测量蛋的硬度,他们采用了一种最老土的办法- ...
- mysql控制流程函数(case,if,ifnull,nullif)
1.case...when... 用法 参考:http://www.cnblogs.com/qlqwjy/p/7476533.html CASE value WHEN [compare-value] ...