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 ...
随机推荐
- 四、spring中高级装配(2)
这个是接着上一篇写的,这章内容较多,分开来记录一下... 三.处理自动装配的歧义性 自动装配让spring完全负责bean引用注入到构造参数和属性中,不过,仅有一个bean匹配所需的结果时,自动装配才 ...
- 邮箱地址自动提示jQuery插件
// mailAutoComplete.js v1.0 邮箱输入自动提示// 2010-06-18 v2.0 使用CSS class类代替CSS对象,同时增强代码可读性// 2010-06-18 v2 ...
- formatDate() 格式化日期
function datefmt(milSec, format) { var oldTime = Number(milSec); //得到毫秒数 // 日期格式转换 var t = new Date( ...
- 浅谈FFT(快速博立叶变换)&学习笔记
0XFF---FFT是啥? FFT是一种DFT的高效算法,称为快速傅立叶变换(fast Fourier transform),它根据离散傅氏变换的奇.偶.虚.实等 特性,对离散傅立叶变换的算法进行改进 ...
- ProtoBuf - Arena
1.概述 最近看 Protocal Buffer 的源码,初次见到这个库源自陈硕的 muduo ,便打算看一看,在此做一下记录.官网文档不能访问,只能凭借代码的自己理解,查看的源码版本为 3.6.0. ...
- C++ typedef用法小结 (转载)
声明:本文转自charley_yang,点击此处查看原文 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换.可以用作同时声明指针型的多个对象.比如:char* pa, pb; // ...
- node Buffer.byteLength()
Buffer.byteLength(string[, encoding]) string {String} | {Buffer} | {TypedArray} | {DataView} | {Arra ...
- 86-Money Flow Index 资金流量指数指标.(2015.7.3)
Money Flow Index 资金流量指数指标 计算: 1.典型价格(TP)=当日最高价.最低价与收盘价的算术平均值 2.货币流量(MF)=典型价格(TP)×N日内成交金额 3.如果当日MF> ...
- cadence中元件所在库
DISCRETE(分立元件)中 开关: 其中可供选择的这几个比较好 SW PUSHBUTTON SW PUSHBUTTON-DPST 数码管: LDD(开头) LTD(开头) 版权声明:本文为博主原创 ...
- 3D标签云
一.圆的坐标表达式 for(var i = 0;i < len;i++){ degree = (2*(k+1)-1)/len - 1;a = Math.acos(degree);//这样取得弧度 ...