serene

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)

概率、期望

浪子不回头ぞ 提交于 2021-01-03 07:59:19
BZOJ1076 奖励关 你正在玩你最喜欢的电子游戏,并且刚刚进入一个奖励关。 在这个奖励关里,系统将依次随机抛出k次宝物,每次你都可以选择吃或者不吃(必须在抛出下一个宝物之前做出选择,且现在决定不吃的宝物以后也不能再吃)。 宝物一共有n种,系统每次抛出这n种宝物的概率都相同且相互独立。 获取第i种宝物将得到Pi分,但并不是每种宝物都是可以随意获取的。 第i种宝物有一个前提宝物集合Si。只有当Si中所有宝物都至少吃过一次,才能吃第i种宝物(如果系统抛出了一个目前不能吃的宝物,相当于白白的损失了一次机会)。 注意,Pi可以是负数,但如果它是很多高分宝物的前提,损失短期利益而吃掉这个负分宝物将获得更大的长期利益。 假设你采取最优策略,平均情况你一共能在奖励关得到多少分值? 1<=k<=100,1<=n<=15 正着做感觉不是很方便,所以考虑倒着做。 //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)

CTSC2017密钥、吉夫特

試著忘記壹切 提交于 2020-11-30 23:36:56
自己是有多么sb。 密钥 大家都说这是一道普及-的题,一年前我做不起,我可以说我太弱啦,我就普及组水平,今年我还是做不起…… 看大佬题解都是:开个桶就好啦! 我:你在说什么…… 首先把环拉成链,倍长。 如果确定$i$这个位置是起始位置,那么特征值就是$\sum\limits_{j=1}^{n-1} (p_j!=0 , sum(A_{i+1}...A_{i+j})>0) $。 那么我们先记录一个前缀和,后面所提到的$A$都是前缀和。$\sum\limits_{j=1}^{n-1} (p_j!=0 , A_{i+j} > A_{i})$。 我们可以这样来考虑,我们把$A$看作高度,从左到右连起来看成折线,我每次在$A_{i}$高度处拉根线,比线高的,并且向上走的(就是p!=0),的折线的个数就是特征值 因为$A_i-A_{i-1}$要么是1要么是-1,所以我们每次减掉或者加上某一个取值的个数就可以了,所以这就是开个桶的意义。 然后如果$p!=0$是B的位置的时候,如果图不变,相当于比线低的,往下走的,的折线的个数,就是特征值, 然后因为折线起始点和终止点的高度都是拉的这根线的高度, 所以 比线低的,往下走的 ,和比线低或者相等的,往上走的,是可以一一对应的,数目是相等的, 而 比线低或者相等的,往上走的 个数,就是k- 比线高的,并且向上走的个数 我在说啥…… //Serene