摘要:
令人印象深刻的状态转移方程... f[i][j][0/1]表示前i个换j次,第i次是否申请时的期望。 注意可能有重边,自环。 转移要分类讨论,距离是上/这次成功/失败的概率乘相应的路程。 从上次的0/1中取min 1 #include <cstdio> 2 #include <cstring> 3 阅读全文
摘要:
DP+图论大毒瘤。 推荐这个博客。 先跑两遍最短路,搞掉一些无用点。 然后选出最短路上的边,做拓扑排序。 然后每层DP。 具体看代码。 用到的数组较多,记得清空。 1 #include <cstdio> 2 #include <queue> 3 #include <cstring> 4 const 阅读全文
摘要:
经典NIM游戏。 取XOR和即可。 注意输出方案时,找到大于异或和sum的,变为a[i] ^ sum即可。 1 #include <cstdio> 2 const int N = 500010; 3 int a[N]; 4 int main() { 5 int n, sum = 0; 6 scanf 阅读全文
摘要:
好,经典扩展域并查集(冰茶几)。 因为有三个动物形成环(这不生物),所以并查集开3倍。 x - y 表示同类,x - (y + n) 表示 y 吃 x 然后瞎搞搞即可。 思考:如果不是环,就是个A <- B <- C的食物链呢?如果还有A吃C呢? 据说是bitset 1 #include <cstd 阅读全文
摘要:
大概就是二分+树上差分... 题意:给你树上m条路径,你要把一条边权变为0,使最长的路径最短。 最大的最小,看出二分(事实上我并没有看出来...) 然后二分k,对于所有大于k的边,树上差分求出最长公共边,然后看是否可以。 (yy的解法②:边按照长度排序,然后二分。删除最长公共边。据logeadd j 阅读全文
摘要:
好,终于搞完了这一道毒瘤题...... 先想到搜索,然后想到状压,发现数据组数很多,又是随机,还是决定用搜索。 先搜出的多的,于是顺序是三个顺子,然后按照多到少搜带牌,最后是不带牌。 大体思路很简单,写起来很毒瘤... 注意很多细节...我就是一个地方没写上界导致数组越界了。 三带一别带自己,因为可 阅读全文
摘要:
经典水题....... 断环为链长度乘二,求前缀和区间DP。 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 #define int long long 5 const int N = 210; 6 7 int f[ 阅读全文
摘要:
这个大毒瘤题....居然反向卡精度.... 别的题eps要开小,这个毒瘤要开大... 我一开始是1e-12,挂的奇惨无比,50分...... 然后改成1e-7,就70分了... 1e-5 90分 1e-4 AC 做法就是用高斯消元的变式,消出一个上三角形,然后把代价加起来就行了。 每次选择花费最小的 阅读全文
摘要:
题意: 给你一个序列,长度为n。你需要进行n - 1次操作,每次合并两个相邻的数,代价是max,合并后成为max,求最小代价。 n <= 1e6 解: 有个显然的做法是nlogn的,显然不行... 要搞个O(n)的算法,显然是贪心。 然而想不出来... 主要有两种思路。 ①合并成一颗树。从根向下考虑 阅读全文
摘要:
题意: 你一开始有INF元,已知某股票n天的价格,你每天可以买1支股票,卖一支股票,不操作。问n天后你最多盈利多少。 解: 搞一个小根堆。 每天的股价都往里面扔两次,然后取当天价格 - 堆顶即为当天盈利。 堆中的数值意味着可能购买这个价的股票。 出堆意味着买 + 卖。 可以把不操作看成买1卖1,把买 阅读全文