- 博客(8)
- 收藏
- 关注
原创 BZOJ3039-玉蟾宫
权限题。 题意: 给一个n*m的01矩阵,求一个最大的全1矩阵,输出答案*3。(n,m≤1000) Solution: 非常经典的一个模型,有两种方法,一种是贪心一种是dp, 这里介绍一种dp方法——悬线法(安利王知昆dalao论文《浅谈用极大化思想解决最大子矩形问题》) 悬线法的本质是dp:用h[i][j]h[i][j]h[i][j]表示第i行第j个数往上数,最早遇到的0的位置,l[...
2017-11-29 19:14:36 291
原创 ASC1 E-Nice Patterns Strike Back
传送门(codeforces GYM) 题意: 给你一个n*m的矩形,对其进行上色,要求每个2*2的小正方形中的颜色不能相同,求方案数模p。(n<=10100,m<=5,p<=10000) Solution: 看到计数题,首先考虑组合数或者dp,组合数发现行不通,考虑dp,发现m非常小,说明可以状压,又发现n非常大,说明一定是可以用矩阵乘法的,我们很快可...
2017-11-25 23:09:30 449
原创 大整数类-高精度模板
在大部分oier看来,只要有高精度的题就是毒瘤题(雾),之前的我遇到高精度的题就直接弃疗了,但是如果考试考到,这些分就白丢了,所以说抽出时间整理了一下高精度模板,主要包括:高精加,高精减,高精乘,高精除单精先说说如何定义:struct bigint{ int s[10100]; int len; bool zf; bigint() { mems
2017-11-25 22:51:07 609
原创 Codechef MARCH14 GERALD07-莫队+并查集
传送门 这道题也是bzoj3514离线版 题意: 给你n个点,m条边,询问k个区间[L,R],求只保留[L,R]间的边,有多少个联通块。n,m,k<=200000Solution: 既然是离线那么显然可以搞事[滑稽],询问区间有什么暴力方法呢?莫队!因为在图上所以每次操作不是O(1)O(1),感觉似乎可以用并查集的样子呢,算一下复杂度为O(nn√α)O(n\sqrt n α)也是可以
2017-11-23 15:32:31 513
原创 BZOJ1226-学校食堂Dining
传送门 题意:中文题,非权限题。 Solution: 显然不能贪心,那么考虑dp,注意到b[i]≤7,所以说可以考虑状压怎么做,再结合n&lt;=1000,想到了一个状态:f[i][j][k]表示前i-1个人都吃过饭了,j后面7人和j的吃饭状态,上一个吃过饭的人是k。 转移: f[i+1][j≫1][k]=f[i][j][k]f[i+1][j≫1][k]=f[i][j][k]f[i+1]...
2017-11-21 20:37:41 325
原创 bzoj2427-tarjan+树形dp+背包
传送门 一道练习综合代码能力的好题 先把被依赖的点连向依赖这个点的点,再tarjan缩点,缩点后会形成多棵树,对每棵树进行dp,最后进行一次背包即可,注意要倒着枚举。 代码: #include<cstdio> #include<iostream> #include<cstring> using namespace std; struct wp{ ...
2017-11-17 16:13:20 280
原创 Codeforces 313D- Ilya and Roads
传送门 题意: 给一个区间[1,n],再给出m个区间[li,ri][li,ri][l_i,r_i]以及每个区间的维修成本viviv_i,问修好k个不同的整点所需的最小成本。 (n≤300,m≤1e5) Solution: 这道题首先想到了朴素的n2mn2mn^2m的dp(按照右端点排序,f[i][j][k]表示前i个区间,选了j个点,上一个选的右端点为k的最小代价),但是显然会T,转移时...
2017-11-07 12:52:44 296
原创 AtCoder Code festival 2017qualC-D-dp+优化
传送门 题意: 给你一个字符串s,问s最少分成几块,使得每一块在经过组合后都能成为一个回文串。(|s|≤2e5) Solution: 我们可以转化一下“回文串”这个定义,对于每个字母我们可以把它分别转化到二进制的0-25位,然后如果一段字符串是回文串,那么这段字符串每个字符的异或一定是0或者2的幂,那么这道题就可以用dp做了:f[i]表示前i个字符的被分成的最小段数,转移即为 f[i]=...
2017-11-07 11:49:48 401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人