摘要:
最小生成树会多样的情况是:两个或多个边等长且连通同样的两个并查集块。 所以可以跑一遍克鲁斯卡尔,每次把当前等长的边数出来,注意不要边找边并查,因为有一部分边是正常跑生成树我们也不会要他的,这种直接跳了;还有一些,是因为你选择了第一个边,然后并在一起了,这时扫到后面的边时他自然会被抛弃。而这种比较委屈 阅读全文
摘要:
提交传送门,密码:jwjtxdy(鸡尾酒天下第一) 官方题解 A.二分答案,里面用队列模拟。 1 #pragma comment(linker, "/STACK:1024000000,1024000000") 2 #include <cstdio> 3 #include <cstring> 4 #i 阅读全文
摘要:
洛谷1387的进阶版,但很像。 1387要求是“全为1的正方形”,取dp[i][j] = min(dp[i-1][j-1], min(dp[i-1][j], dp[i][j-1]))吧?这个有“只有对角线可以有1”的要求,取的是dp[i][j] = min(dp[i-1][j-1], min(s1[ 阅读全文
摘要:
一看很像背包,然而值却是会随时间递减的(a - t*b),不能满足无后效性,于是考虑常用手段,先按照优先级排序。 这个优先级怎么定呢?列式子模拟一下。 洛谷题解说得很好了: 说来惭愧,其实这种“组合式”排序我也是第一次见,虽然很好理解: 最后记得各种longlong。 阅读全文
摘要:
题目很简单,数据也很小,但是思路不妨借鉴:dp[i][j]代表以(i,j)为右下角的最长正方形边长。 类比一维里面设“以XX为结尾的最XXX(所求)”。 另外define不要乱用!尤其这种min套min,debug两行泪。 当然也可以无脑暴力乱搞了,二维前缀和+二分: 阅读全文
摘要:
一眼看过去就x排序扫描一下,y是1e9的离散化一下,每层用树状数组维护一下,然后像dp倒着循环似的树状数组就用y倒着插就可行了。 类似题目练习:BZOJ4653、BZOJ1218 阅读全文
摘要:
放上刘汝佳的模板: 阅读全文
摘要:
第一眼喜闻乐见的股票问题dp可以暴力,然鹅时间不允许。 于是考虑怎么贪。 这篇题解说得很生动了。 因为每支股票都有买入的潜力所以肯定都加在优先队列里。 然后考虑的是哪些需要加入两次。这是我第二次见到类似的手法。当它比优先队列队首要大,可以卖,但是因为后面的还没读所以不知道是不是最优。那就先卖着,钱拿 阅读全文