getdp

HNOI2018

坚强是说给别人听的谎言 提交于 2021-02-10 02:26:45
为什么HN今年风格也这么诡异呀。 先给个Achen的题解链接: http://www.cnblogs.com/Achenchen/p/8921650.html ,我的题解太简略了。 D1T1 我觉得这是一道很有趣的题呀 如果第i个数之前的运算符是and,则这一位设为1,否则为0,得到的二进制数记为xx。 对每一位分别考虑,对于第i位,如果第j个数是1,那么这一位设为1,否则为0,得到的二进制数记为$b_i$。 以左边为最低位,按前缀归纳容易证明,第i位的结果为1,当且仅当$x < b_i$ 我们将b从大到小排序,结果设为c,那么答案不为零仅当在c的顺序下,r中没有任何0在1的前面。 找到r中第一个0的位置,假设是k,那么解x要满足$c_k≤x<c_{k–1}$,于是答案是$c_{k – 1} – c_k$ //Serene #include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #include<cmath> using namespace std; #define ll long long #define db double #define For(i,a,b) for(int i=(a);i<=(b);++i) #define Rep(i,a,b)

Leetcode: NO.887 鸡蛋掉落

末鹿安然 提交于 2020-04-13 20:24:01
【今日推荐】:为什么一到面试就懵逼!>>> 题目 题目链接:https://leetcode-cn.com/problems/super-egg-drop 你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。 每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。 你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。 每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。 你的目标是确切地知道 F 的值是多少。 无论 F 的初始值如何,你确定 F 的值的最小移动次数是多少? 示例 1 : 输入:K = 1 , N = 2 输出: 2 解释: 鸡蛋从 1 楼掉落。如果它碎了,我们肯定知道 F = 0 。 否则,鸡蛋从 2 楼掉落。如果它碎了,我们肯定知道 F = 1 。 如果它没碎,那么我们肯定知道 F = 2 。 因此,在最坏的情况下我们需要移动 2 次以确定 F 是多少。 示例 2 : 输入:K = 2 , N = 6 输出: 3 示例 3 : 输入:K = 3 , N = 14 输出: 4 提示: 1 <= K <= 100 1 <= N <= 10000 解题记录 可以使用动态规划求解