题意 题目链接 Sol 首先一种方案的期望等于它一次排好的概率的倒数. 一次排好的概率是个数数题,他等于一次排好的方案除以总方案,也就是\(\frac{\prod cnt_{a_i}!}{(n+m)!}\).因为最终的序列是一定的,两个序列不同当且仅当权值相同的数排列方式不同. 他的期望为\(\frac{(n+m)!}{\prod cnt_i!}\),我们希望这玩意儿尽量大,也就是下面的尽量小 显然对于每个\(cnt\)来说,最大值越小越好,可以直接二分,然后check一下是否可行. 具体的贪心…
P2680 运输计划 题目背景 公元 20442044 年,人类进入了宇宙纪元. 题目描述 公元20442044 年,人类进入了宇宙纪元. L 国有 nn 个星球,还有 n-1n−1 条双向航道,每条航道建立在两个星球之间,这 n-1n−1 条航道连通了 LL 国的所有星球. 小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 u_iui​ 号星球沿最快的宇航路径飞行到 v_ivi​ 号星球去.显然,飞船驶过一条航道是需要时间的,对于航道 jj,任意飞船驶…
题目链接 忘情水二分模板题,最优解对划分段数的导数满足单调性(原函数凸性)即可使用此方法. 详细题解洛谷里面就有,不啰嗦了. 二分的临界点让人有点头大... #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef double db; ,inf=0x3f3f3f3f3f3f3f3f; ll n,m,hd,tl,a[N],S[N],dp[N],cnt[N]; struct P {ll x,y,c;} q…
题目大意 \(T\)(\(T\leq10^5\))组询问 每次给出\(n,m,l,r\),和\(n\)个数\(a_1,a_2,...,a_n\),要找出\(m\)个可重复的在区间\([l,r]\)的数,使\(a_1,a_2,...,a_n\)和选出的\(m\)个数组成的序列期望随机排序得到升序序列的次数最多 输出序列最多期望随机排序几轮,模998244353 \(n\leq2\times10^5,\sum n\leq2\times10^6,m\leq10^7,a_i\leq10^9\) 题解 假…
传送门 题解: 二分月利率,假设当前判断的月利率为x: 那么如何判断x是大了还是小了呢? 下面来分析一下Check()函数: bool Check(double x) { double tot=a; ;i <= c;++i) { tot += tot*x; tot -= b; } ? true:false; } 变量a,b,c分别表示题目输入的三个变量: 首先看第4行的for(),由题意得他是分 c 个月还完的,所以当然要循环 c 次了: 并且知道了月利率为 x : 那么对于第 1 个月,他欠银…
正解:期望dp 解题报告: 哇我发现我期望这块真的布星,可能在刷了点儿NOIp之后会去搞一波期望dp的题...感觉连基础都没有打扎实?基础概念都布星! 好那先把这题理顺了嗷qwq 首先我们看到期望就会想到dp是趴,加上dp也确实很NOIp那就直接往dp的方向想嘛 比较容易想到的状态就是f[i][j]表示到第i个阶段了然后已经申请了j次的最小体力,然而在思考转移方程的时候就会发现如果这么设的话好像是不会转移的嗷,因为我们之后的转移会和你上一次是去的c还是d有关,然后就考虑再加一轮[0/1]表示上次…
题目描述 在艾泽拉斯,有n个城市.编号为1,2,3,...,n. 城市之间有m条双向的公路,连接着两个城市,从某个城市到另一个城市,会遭到联盟的攻击,进而损失一定的血量. 每次经过一个城市,都会被收取一定的过路费(包括起点和终点).路上并没有收费站. 假设1为暴风城,n为奥格瑞玛,而他的血量最多为b,出发时他的血量是满的. 歪嘴哦不希望花很多钱,他想知道,在可以到达奥格瑞玛的情况下,他所经过的所有城市中最多的一次收取的费用的最小值是多少. 题目分析 题目说了那么多,其实就是让求在角色不死亡的情况…
传送门 表示去年考普及组的时候失了智,现在看来并不是很难啊. 直接二分答案然后单调队列优化dp检验就行了. 注意入队和出队的条件. 代码: #include<bits/stdc++.h> #define N 500005 using namespace std; inline int read(){ int ans=0,w=1; char ch=getchar(); while(!isdigit(ch)){if(ch=='-')w=-1;ch=getchar();} while(isdigit…
题目大意:给你一颗$n$个点的有根树,相邻两个点之间有距离,我们可以从$x$乘车到$x$的祖先,费用为$dis\times P[x]+Q[x]$,问你除根以外每个点到根的最小花费. 数据范围:$n≤10^6$. 此题我们显然$dp$,列出方程为$f[x]=min\{f[y]+dis(x,y)\times P[x]+Q[x]\}$,其中$y$为$x$的祖先. 不难看出可能是一个斜率优化的式子,我们往下推推 设$i$是$j$的祖先,且从$i$出转移比从$j$处转移劣,不难列出: $f[i]+dis(…
正解:二分 解题报告: 传送门! 话说其实我开始看到这题想到的是分块,,, 但是显然不用这么复杂,,,因为仔细看下这题,会发现每次只改变相邻的兔子的位置 所以开个vector(或者开个数组也成QwQ(数组就能用lower_bound 按顺序存下来每个颜色的兔子的位置,每次修改只用O(1)地改就好了 然后复杂度是O(nlogn),和莫队复杂度一样却简单很多 over (对了,这题我本来想的是分块嘛,我就搜了下可不可以用分块,只看到了一篇题解,说分块会被时空双卡,但是可以优化,我还没有仔细看先贴个链…