随笔分类 - hdu
摘要:唯一难点应该在于怎么转点吧,直接看代码呗。 //#pragma GCC optimize("-Ofast","-funroll-all-loops") //#pragma GCC optimize(2) //freopen("C://std/a.in","r",stdin); //freopen("
阅读全文
摘要:首先,明显的网络流。那么如何建边,对于每个二次函数在[1,m]里挑n个函数值最小的点, 这样子一共n^2个点,注意还要去重。这n^2个点其实就能使得n个二次函数(a, b, c)完全匹配。 那么流量全部设为1,费用是对应的函数值。超级源点和终点费用为0;但是,跑n次费用流时间不允许,但是你仔细想每次
阅读全文
摘要:不难发现答案即为a[l, r]的长度加上b的长度减去2倍的a[l,r]与b的LCS。 那么难点就在于如何处理出每次询问的lcs了,这里仍然采用dp的思想。对于dp[i][j]代表b串前i个字符串与a[l,r]形成了长度为j的公共子序列时在a串中的最小下标位置。 那么不难得出转移方程1 :dp[i][
阅读全文
摘要:考虑朴素思想,每次把一个最大连通图所有的点减去最小值,然后分裂成若干子图继续下去。但是又不好写又容易t, 那么考虑反着来如何在保证正确的情况通过加点的方式来找答案。 首先,最后删的一定都是原先最大的那些点,那么考虑从大到小排序。每次进来一个点,判断他的相邻点是否已经进来,如果有就合并(dsu)。每次
阅读全文
摘要:考虑分块,大于块数的动态开点权值线段树,小于的话暴力修改。 #pragma GCC optimize("-Ofast","-funroll-all-loops") #include<bits/stdc++.h> #define ll long long #define PB push_back #d
阅读全文
摘要:与此题几乎一样。(https://blog.csdn.net/acdreamers/article/details/23039571) 不过注意,好像出题人赛后加强数据了,在枚举0-k的时候,里面最多只能有一个快速幂,其他的都尽量用变量迭代代替。要不然t飞。 #include<bits/stdc++
阅读全文
摘要:首先,考虑一辆车能追上另一辆车的前提是前者加速度大于后者并且初始位置小于后者。那么按照加速度从大到小排序,加速度相同则按照初始位置从大到小排序。然后顺序遍历,按照初始位置递增的方式取出若干车子。我们现在保证了后面的车子一定能追上前面的车子,即车b一定能追上车a,而这时候如果进来一辆车c,如果车c追上
阅读全文

浙公网安备 33010602011771号