zoukankan      html  css  js  c++  java
  • 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}。
    egin{equation*}cost1=c_1+c_2+c_4+c_5.end{equation*}
    按h对数据排序。
    推一下式子:$cost2=h_max - h_min$.
    枚举起点和终点(最高的楼和最低的楼),那么只需要确定cost1的代价。
    由于假定i是最低的一栋楼,j是最高的一栋楼。所以只需要找到使得len([i,j])最大,且$costleq T$的值。
    复杂度$O(n^3log n)$

    b.

    标程做法:动态规划。
    设状态f[i][j]表示现在停留在第i栋楼上,已经跳了j次楼的最小花费是多少。
    转移:直接枚举下一次跳的是哪一栋楼。($i<kleq 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 imesfrac{N-1}{2}$个数,代表它们两两的和。那么,这 N个数是多少呢?
    【输入格式】
    一行个整数 N。
    接下来一行 $N imesfrac{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 imes(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%的做法。可以只考虑$pleq 10^4$的情况,预处理出p的所有情况(TLE)。
    可以只对$p leq 100$的部分进行预处理。对于所有$pleq 100$的值,同60%的做法,在对应的数组中二分一下即可。
    对于p>100的情况,就不预处理了。容易看出$v+kpleq 10^4 ightarrow pleq 100$.
    最多枚举100个数,同60分的做法,在数组中二分即可。$O(nsqrt nlog 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 。

  • 相关阅读:
    2020-01月-02月
    Work needing Technologies
    gcc和 gdb工具(转)
    pyenv and grunt-contrib-testem
    Statistics Books
    HTML5学习--SVG全攻略(基础篇)
    一个完整的学院网站实现过程
    JavaScript 常用单词整理
    一张图教会CSS3倒影
    Python大数据处理案例
  • 原文地址:https://www.cnblogs.com/TheRoadToAu/p/7787827.html
Copyright © 2011-2022 走看看