摘要: 题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大。 题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i行第j列,插头状态为k的最大满意度。然后又成了一道插头DP的板子题。注意左插头为左括号,上插头为右括号,其余位置无插头 阅读全文
posted @ 2019-04-27 22:13 hfctf0210 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 对插头DP的理解还不是很透彻。 先说一下肤浅的理解吧。 插头DP使用范围:指数级复杂度,且适用于解决网格图连通性问题,如哈密顿回路等问题。插头一般指每相邻2个网格的接口。 题目难度:一般不可做。 使用三进制状态,用0表示没有插头,1表示左括号插头,2表示右括号插头,而由于位运算常数特别小,可以采用四 阅读全文
posted @ 2019-04-25 22:45 hfctf0210 阅读(227) 评论(0) 推荐(1) 编辑
摘要: A 签到 #include<bits/stdc++.h> using namespace std; int n,m,s[2],t[2],ans; int main() { scanf("%d%d",&n,&m); for(int i=1,x;i<=n;i++)scanf("%d",&x),s[x&1 阅读全文
posted @ 2019-04-25 08:22 hfctf0210 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 题解:二分答案mid,然后将每个位置看成a-b*mid,然后由于是n个男生和n个女生匹配,每个人搭配一个cp,于是有点类似于https://www.lydsy.com/JudgeOnline/problem.php?id=1070(费用流模板题),加边(S,i,1,0),(i+n,T,1,0),(i 阅读全文
posted @ 2019-04-25 08:12 hfctf0210 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 题解:首先肯定要跑最短路,而n<=100,所以可以用floyd,然后根据比值,很容易想到二分答案,然后再SPFA跑一遍负环,就能求出解了。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int N=1 阅读全文
posted @ 2019-04-22 21:03 hfctf0210 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 或许近期有时间会模拟2019各省省选吧,然后订正 省选题目:没订正的划掉,做出/订正的放出题解链接 ZJOI2019: 麻将 线段树 Minimax搜索 开关 语言 浙江省选 十二省联考2019: 异或粽子 字符串问题 骗分过样例 皮配 春节十二响 希望 HNOI2019: 鱼 JOJO 多边形 校 阅读全文
posted @ 2019-04-22 18:45 hfctf0210 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 题解:很容易发现这样的一个规律:设i出现的次数为cnt[i],然后覆盖[i-cnt[i]+1,i]这段,空白的部分就是所求的答案。 但我开始根据这个规律写了个错误的O(n)做法,就是直接差分加减,考虑全部覆盖,这样显然是错的!为什么?原因很简单:只有i值在[1,n]内的cnt[i]才能覆盖答案!我的 阅读全文
posted @ 2019-04-22 18:32 hfctf0210 阅读(253) 评论(0) 推荐(0) 编辑
摘要: 题解:很显然可以对权值取对数,然后把几何平均值转为算术平均值,然后很显然是分数规划。先对每个模式串建立AC自动机,每个节点w[i],sz[i]分别表示以其为前缀的字符串,然后再二分最优解k,然后w[i]-=k*sz[i],然后枚举T,在AC自动机上DP一遍,求最大值是否大于0即可。 #include 阅读全文
posted @ 2019-04-21 23:06 hfctf0210 阅读(353) 评论(0) 推荐(0) 编辑
摘要: 题解:求环长比环边个数的最小值,即求min{Σw[i]/|S|},其中i∈S。这题一眼二分,然后可以把边的个数进行转化,假设存在Σw[i]/|S|<=k,则Σw[i]-k|S|<=0,即Σ(w[i]-k)<=0,然后就是表示图中存在负环,可以用spfa跑一下。不过图不保证连通,所以要从每个点分开跑S 阅读全文
posted @ 2019-04-21 22:12 hfctf0210 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 分数规划问题,指形如求函数Σf(i)/Σg(i)值最大/小值,而一般来说,直接解决是很困难的,必须要采用巧办法。那么怎么办?二分!假设我们求的是式子的最小值,可以二分一个值k,看是否满足Σf(i)/Σg(i)<=k,然后可以把Σg(i)乘到不等式右边并移项,就可以得到Σ(f(i)-kg(i))<=0 阅读全文
posted @ 2019-04-21 21:25 hfctf0210 阅读(197) 评论(0) 推荐(0) 编辑