自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

A Cube Master

一个Cuber的ACM历程

  • 博客(10)
  • 收藏
  • 关注

原创 Codeforces Round #349 (Div. 1)

A. Reberland Linguistics  此题重在理解”in a row”的含义。意思是不能有连续相同的两截。正确理解了题意以后,随便dp一下,答案塞到set里面即可。#include <bits/stdc++.h>#include <unordered_map>using namespace std;bool start[4][11111];int main(){ string

2016-04-30 18:39:26 411

原创 模板-KM算法

#include <bits/stdc++.h>using namespace std;const int maxn = 66;const int maxN = 410;int lx[maxN];int ly[maxN];int sx[maxN];int sy[maxN];int match[maxN];int weight[maxN][maxN];int sz;bool path(i

2016-04-29 23:41:36 476

原创 zoj 2342 Roads

在最优策略中,我们只会减少石头路的费用,增加烂泥路的费用,设这个改变量为l(x)l(x)。由于前n−1n-1条边是生成树,对第nn~mm条边中的每一条,它的加入会形成一个圈。在最优解的情况下,圈中的任意一条石头路费用不大于烂泥路的费用。把石头路看作二分图的X部,烂泥路看作Y部,可以得到关于改变量l(x)l(x)的不等式。这个模型直接套二分图最优匹配就行,求出的可行顶标就是改变量。   KM算法还是

2016-04-29 23:39:04 371

原创 Codeforces Round #348 (VK Cup 2016 Round 2, Div. 1 Edition)

A. Little Artem and Matrix  没什么好说的,逆向模拟一下。#include <bits/stdc++.h>#include <unordered_map>using namespace std;#define ll long longint a[10010][5];int ans[111][111];int main(){ int n,m,q; cin>

2016-04-25 21:29:32 380

原创 TopCoder SRM 688

250  这个对子串的操作,可以理解为,把被操作的子串写在纸条上,然后翻转纸条。。仔细分析可以发现,串中匹配的部分,翻转后还是匹配的,所以我们可以把已经匹配的部分去除。去除匹配部分后,剩下的部分肯定是这样的,前面是’)’,后面是’(‘,不可能交替出现两种括号(出现肯定被去掉了)。于是肯定存在只翻转前面一段和后面一段的解。   了解了以上信息,就很容易做了。。具体实现的时候,可以暴力,也可以用栈稍微

2016-04-19 22:50:48 461

原创 zoj 2338 The Towers of Hanoi Revisited

还是太naive了,在知道经典汉诺塔的情况下,居然很久没想出来。其实多根棍子和三根是一个原理。n个盘子,m根棍子的最优解,一定是把一部分盘子(假设为x)先移到某个中间棍子上,也就是先解决子问题(x,m),然后把剩下的n-x个盘子通过剩下的m-1根棍子用最优方案转移,即子问题(n-x,m-1),最后把中间棍子上的那x个盘子移过去,即子问题(x,m)。这样可以用dp来求解。#include <iostr

2016-04-19 22:18:37 373

原创 Google Code Jam 2016 Round 1A

Problem A. The Last Word  贪心。每次加入新的字符时,比较当前字符与生成的串的首字符的大小关系,如果当前字符不小于首字符,加在开头,否则加在结尾。#include <bits/stdc++.h>using namespace std;#define ll long long string str;int main(){ freopen("A-large.in","r

2016-04-16 13:49:35 728

原创 TopCoder SRM687 div1 500

题意是已知一个无向图所有点对间的最小割,构造一个合法的原图。   看了题解得知有个叫Gomory-Hu tree的东西,即最小割树。解题要点是,你要知道一个图的所有点对最小割,一定能用一棵树做到。于是我们的目标变为构造这样一棵树。   我们可以用分治法,不断把当前点集划分为两个点集,其中两个点集的点之间流量是当前最小,不断分治直到集合只剩一个点。#include <bits/stdc++.h>

2016-04-13 21:59:30 607

原创 hnuoj 13103 Easy Delete

题目链接  先不管不能删的文件,我们可以把出现文件的行看作二分图的X部,列看作二分图的Y部,文件则是边。删除所有文件,其实就是求图的最小点覆盖,也就是最大匹配。于是解法就是先处理与不能删文件处在同一行、列的情况,然后跑最大匹配。#include<vector>#include<set>#include<map>#include<algorithm>#include<iostream>#in

2016-04-09 06:46:10 462

原创 Codeforces VK Cup 2016 - Round 1 (Div. 2 Edition)

A. Bear and Reverse Radewoosh  按要求计算一下即可。#include <bits/stdc++.h>#define ll long longusing namespace std;int p[111];int t[111];int main(){ int n,c; cin>>n>>c; for(int i=1;i<=n;i++){

2016-04-01 13:24:39 24327

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除