QBXT Day2
遭遇
【问题描述】
你是能看到第一题的 friends呢。
—— hja
N座楼房,立于城中 。
第i座楼,高度 hi。
你需要一开始选择座楼,开始跳楼。 在第 i座楼准备跳需要 ci的花费。 每次可以跳到任何一个还没有过的楼上去。但是代价,另外一座楼的代价是两高度差绝对值 ,最后一次从楼上跳到地面不需 要代价(只能跳到地上一次)。为在代价不超过 T的情况下,最多跳几次楼。 (一座楼 只能 跳一次 ,且每次 跳楼 都要 计算 准备 的花费 )
【输入格式】
第一行个整数 N,代表 楼的数量。
接下来一行 N个整数代表 ci。
接下来一行 N个整数代表 hi。
最后一行一个整数 T。
【输出格式】
一行个整数 代表答案 。
【样例输入】
4
3 5 4 11
2 1
3 17
【样例输出】
3
【样例解释】
从1号楼跳到 2号楼再跳到 3号楼是一种 可行 的方案 。
【数据范围与规定】
对于 30%的数据, 1≤n≤5。
对于另外 20%的数据,所有 ℎi相同。
对于另外 20%的数据, ci=0。
对于 100%的数据, 1≤N≤50,1≤ci,ℎi≤106,1≤T≤10^7。
30分:暴力搜索
hi相同的20%:按c为关键字,对数据进行排序。选择花费最小的楼开始跳(贪心)
ci=0的20%:按高度h由大到小进行排序,然后按高度由高到低进行跳跃。
100%:
a.
考虑一个跳楼的集合{1,2,4,5}。
\begin{equation*}cost1=c_1+c_2+c_4+c_5.\end{equation*}
按h对数据排序。
推一下式子:$cost2=h_max - h_min$.
枚举起点和终点(最高的楼和最低的楼),那么只需要确定cost1的代价。
由于假定i是最低的一栋楼,j是最高的一栋楼。所以只需要找到使得len([i,j])最大,且$cost\leq T$的值。
复杂度$O(n^3\log n)$
b.
标程做法:动态规划。
设状态f[i][j]表示现在停留在第i栋楼上,已经跳了j次楼的最小花费是多少。
转移:直接枚举下一次跳的是哪一栋楼。($i<k\leq n$)。转移方程$f[k][j+1]=\min\{f[k][j+1], f[i][j]+f[i][j]+c[k]+h[k]-h[i]\}$
答案:枚举所有的f[i][j],$ans=\max\{f[i][j]\leq T\}$
都市
【问题描述】
你是能看到第二题的 friends呢。
—— laekov
塔立于都市, 攀登上塔,能够到达更远的地方。但是需要破解谜 题。仍然有 N个数,但并不给你 而是了$N\times\frac{N-1}{2}$个数,代表它们两两的和。那么,这 N个数是多少呢?
【输入格式】
一行个整数 N。
接下来一行 $N\times\frac{N-1}{2}$个数,代表两之和。
【输出格式】
第一行个整数 s代表解的个数 。
接下来 s行 ,每行N个数 代表一组解,数从小到大排列。解的顺序按照字典从大到小排列。
【样例输入1】
4
3 5 4 7 6 5
【样例输出1】
1
1 2 3 4
【样例输入2】
4
11 17 21 12 20 15
【样例输出2】
2
4 7 8 13
3 8 9 12
【数据范围与规定】
对于 30%的数据, 1≤N≤5,N个数均不超过 10。
对于 60%的数据, 1≤N≤50,N个数均不超过 100。
对于 100%的数据, 1≤N≤300,N个数均不超过 10^8。
考虑最终的答案为$a_1,a_2,\cdots,a_n$;题目给出的数为$b_1,b_2,\cdots,b_{\frac{n\times(n-1)}{2}}$。
给两个数组排序。易证以上两个数列存在以下性质:
1. $a_1+a_2=b_1$,
2. $a_1+a_3=b_2$.
但是不能保证$a_2+a_3$的值。
设$a_2+a_3=x$,可以算出$a_1,a_2,a_3$,把这三个数从b数组中删掉,可以证明a[1]+a[4]为最小值。计算出a[4]的值,然后可以确定a[1]+a[5]为最小值。然后就可以做了。
现在问题变为求x的值。枚举a[2]+a[3]在是b数组中是哪一个。从头到尾解一遍方程验证是否合法。
或者二分?set/map/手写平衡树?
街灯
【问题描述】
你是能看到第三题的 friends呢。
—— aoao
街上的灯亮起,指引向着远方的路。每个街灯上都有一数, 每次询问,第l个街灯到第 r个街灯上的数模 p等于 v的有几个。
【输入格式】
第一行两个数 N,M,代表街灯的个数 和询问。
接下来一行 N个数,代表 街灯上的数。
接下来M行,每四个数 l,r,p,v代表一组询问。
【输出格式】
对于每次询问,输出一行代表答案 。
【样例输入】
5 2
1 5 2 3 7
1
3 2 2 5 3 0
【样例输出】
2
1
【数据规模与约定】
对于 30%的数据, 1≤N,M≤10^3。
对于另外 30%的 数据,每次询问的p一样。
对于 100%的数据, 1≤N,M≤10^5,街灯上的数不超过 10^4,1≤p≤10^9。
30%:暴力
p相等的30%:
把所有的数先mod p,然后开p个vector ,记录mod p == v的数。然后用线段树。
e.g.
1 5 2 3 4 p==3
1 2 2 0 1
vector<int> v[p];
v=0: 4
v=1: 1,5
v=2: 2,3
二分区间。
100%:
同上60%的做法。可以只考虑$p\leq 10^4$的情况,预处理出p的所有情况(TLE)。
可以只对$p \leq 100$的部分进行预处理。对于所有$p\leq 100$的值,同60%的做法,在对应的数组中二分一下即可。
对于p>100的情况,就不预处理了。容易看出$v+kp\leq 10^4 \rightarrow p\leq 100$.
最多枚举100个数,同60分的做法,在数组中二分即可。$O(n\sqrt n\log n)$
主席树?
洗澡
【问题描述】
你是能看到第一题的 friends 呢。
——hja
洗澡的地方,有一段括号序列,将一个括号修改一次需要1的代价(将左括
号变成右括号或者相反) ,求最小代价使得括号序列合法。
【输入格式】
一行一个括号序列。
【输出格式】
一行一个整数代表答案。
【样例输入】
())(
【样例输出】
2
【数据范围与规定】
50%的数据,括号序列长度不超过100。
对于100%的数据,括号序列长度不超过10 5 且一定为偶数,只包含小括号。
SB原题。栈模拟。然而我zz。
日记
【问题描述】
你是能看到第二题的 friends 呢。
——laekov
日记之中,写满了质数,两个质数之间如果没有其他质数,那么则称为相
邻的质数。给定?,?,询问不超过?的数中能够表示成连续?个质数之和的最大
的数是多少。
【输入格式】
第一行一个整数?代表数据组数。
对于每组数据,一行行两个整数?,?。
【输出格式】
对于每组数据,一行一个整数代表答案。如果不存在,则输出−1。
【样例输入】
3
20 2
20 3
20 4
【样例输出】
18
15
17
【数据范围与规定】
21 ≤ ? ≤ 100。
40%的数据,? = 1。
另外20%的数据,所有的询问的?相等。
对于100%的数据,1 ≤ ? < 2000,1 ≤ ? ≤ 10 6 。
QBXT Day2的更多相关文章
- qbxt Day2 on 19-7-25
qbxt Day2 on 19-7-25 --TGZCBY 上午 1. 矩阵乘法在图论上的应用 有的时候图论的转移方程可以用dp的方式转移 特别是两个数的乘积求和的时候 比如邻接矩阵中f[i][j]表 ...
- QBXT Day2主要是数据结构(没写完先占坑)
简单数据结构 本节课可能用到的一些复杂度: O(log n). 1/1+1/1/.....1/N+O(n log n) 在我们初学OI的时候,总会遇到这么一道题. 给出N次操作,每次加入一个数,或者询 ...
- 【qbxt五一】day2
简单数据结构 入门题: 在初学OI的时候,总会遇到这么一道题. 给出N次操作,每次加入一个数,或者询问当前所有数的最大值. 维护一个最大值Max,每次加入和最大值进行比较. 时间复杂度O(N). 给出 ...
- QBXT T15214 Day2上午遭遇
题目描述 你是能看到第一题的 friends呢. -- hja ?座楼房,立于城中 . 第?座楼,高度 ℎ?. 你需要一开始选择座楼,跳. 在第 ?座楼准备跳需要 ??的花费. 每次可以跳到任何一个还 ...
- Qbxt 模拟题 day2(am) T2 jian
[问题描述] 有N个数,随机选择一段区间,如果这段区间的所有数的平均值在[L,R]中则你比较厉害.求你比较厉害的概率. [输入格式] 第一行有三个数N, l, r,含义如上描述. 接下来一行有N个数代 ...
- qbxt五一数学Day2
目录 1. 判断素数(素性测试) 1. \(O(\sqrt n)\) 试除 2. Miller-Rabin 素性测试 * 欧拉函数 2. 逆元 3. exgcd(扩展欧几里得) 4. 离散对数(BSG ...
- QBXT春季培训酱油记
Day-1: 下午回家收拾东西,明天去JN,先通知一下在JN的lll dalao明天去见他,然而手办到了,心情大好啊有没有,有没有! 晚上单曲循环<初音未来的消失>,睡觉的时候哭得稀里哗啦 ...
- 【从零开始学BPM,Day2】默认表单开发
[课程主题]主题:5天,一起从零开始学习BPM[课程形式]1.为期5天的短任务学习2.每天观看一个视频,视频学习时间自由安排. [第二天课程] Step 1 软件下载:H3 BPM10.0全开放免费下 ...
- NOIp2016 Day1&Day2 解题报告
Day1 T1 toy 本题考查你会不会编程. //toy //by Cydiater //2016.11.19 #include <iostream> #include <cstd ...
随机推荐
- 在Cocos2d-X中玩转精灵
创建一个Cocos2d-Xproject,project的文件夹例如以下图所看到的: 在Resourcees目录中加入一张png格式的图片 在HelloWorldScene.cpp文件里的bool H ...
- Chrome development tools学习笔记(3)
(上次DOM的部分做了些补充,欢迎查看Chrome development tools学习笔记(2)) 利用DevTools Elements工具来调试页面样式 CSS(Cascading Style ...
- 曼哈顿距离MST
https://www.cnblogs.com/xzxl/p/7237246.html 讲的不错 /* 曼哈顿距离最小生成树 poj 3241 Object Clustering 按照上面的假设我们先 ...
- P1052 过河(状态压缩)
P1052 过河(状态压缩) 题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把 ...
- C 非标准库(conio.h)
所谓的 C 标准库(C standard library),是指在 ISO C 或者 POSIX 标准中定义的: POSIX is a superset(超集) of the standard C l ...
- 【HDU 3663】 Power Stations
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3663 [算法] 先建图,然后用Dancing Links求解精确覆盖,即可 [代码] #inclu ...
- uoj#149
dp 没想出来 最先开始想 dp[i][j][k]表示s匹配到i,t匹配到j,当前分了k段的方案数 s[i]==t[j] dp[i][j][k]+=dp[i-1][j-1][k-1] s[i]==t[ ...
- 第2章 安装Nodejs 2-4 Linux下安装Nodejs
linux下编译安装Nodejs GCC和G++分别是GNU的C和C++编译器.它们在执行编译工作的时候把源代码通过预处理转化成汇编语言生成.i后缀的文件,再由汇编变成目标机器代码,最后连接目标代码 ...
- Gym - 101981I The 2018 ICPC Asia Nanjing Regional Contest I.Magic Potion 最大流
题面 题意:n个英雄,m个怪兽,第i个英雄可以打第i个集合里的一个怪兽,一个怪兽可以在多个集合里,有k瓶药水,每个英雄最多喝一次,可以多打一只怪兽,求最多打多少只 n,m,k<=500 题解:显 ...
- 分别使用Hadoop和Spark实现TopN(1)——唯一键
0.简介 TopN算法是一个经典的算法,由于每个map都只是实现了本地的TopN算法,而假设map有M个,在归约的阶段只有M x N个,这个结果是可以接受的并不会造成性能瓶颈. 这个TopN算法在ma ...