自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吧唧吧唧

遇 见 最 美 的 自 己 。

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

原创 UVA 548 —— 二叉树的递归遍历

已知二叉树的中序遍历和后序遍历,构建二叉树,求叶子到根的最小路径权值和;后序遍历的最后一个字符即为二叉树的根结点,然后在中序遍历中找到这个根结点的位置,根结点的左边序列即为该根的左子树,右边序列即为右子树,然后再在后序遍历中找左右子树的根结点,以此类推,用递归遍历。#include#define INF 0x3f3f3f3fusing namespace std;const

2017-03-07 10:10:16 402

原创 UVA 122 树的层次遍历

紫书P150#includeusing namespace std;const int maxn = 300;bool failed;struct Node{ bool have_value; //是否被赋值过 int v;

2017-03-05 14:29:31 343

原创 Codeforces Beta Round #17 D. Notepad

原题:http://codeforces.com/contest/17/problem/D题意:求[ ( b - 1 ) * b^( n - 1 ) ] % c,如果ans = 0, 则ans = c;思路:指数循环节 —— ,(其中Φ 为欧拉函数);#include#define ll __int64using namespace std;const int max

2016-11-23 22:15:48 447

原创 Codeforces Beta Round #13 D —— Triangles 计算几何

原题:http://codeforces.com/contest/13/problem/D题意:有n个红点,m个蓝点,在所有红点中选择三个点组成三角形,使得任意蓝点都不在该三角形内,问这样的三角形有多少个;思路:首先,如何判断一个点是否在该三角形内 —— 我们假定三角形ABC以及所要判断的点P,如果P在ABC内,那么对边AB来说,点P和点C在边AB的同侧;对边BC来说,点P和点A在边BC的

2016-10-31 22:04:31 401

原创 HDU 1058 —— Humble Numbers

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1058思路:每次保留最小的数,注意输出格式;#include#include#include#define Min(a, b, c, d) min(min(a, b), min(c, d))using namespace std;const int maxn = 6000;int

2016-10-17 21:50:38 277

原创 HDU 2152 —— Fruit

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2152修改一下左右的边界范围#include #include #include using namespace std;const int maxn = 110;int a[110][2];int dp[maxn*maxn], tmp[maxn*maxn];int n, m;

2016-10-15 20:24:31 307

原创 HDU 2069 —— Coin Change

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2069思路:需要注意一个条件,组合的硬币数不能超过100。把数组开成二维的,dp[i][j] 表示用 j 个硬币组成 i 的方式有多少种。#include #include #include const int maxn = 300;using namespace std;int

2016-10-15 16:50:03 293

原创 HDU 1171 —— Big Event in HDU

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1171#include#include#includeusing namespace std;const int maxn = 100;const int maxm = 5e5;int dp[maxm], tmp[maxm];int val[maxn], num[maxn];in

2016-10-15 13:56:27 208

原创 HDU 1085 —— Holding Bin-Laden Captive!

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1085#include#include#includeusing namespace std;const int maxn = 1e4;int dp[maxn], tmp[maxn];int a, b, c;int main(){ while(cin>>a>>b>>c){

2016-10-15 13:55:05 223

原创 HDU 1398 —— Square Coins

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1398#includeusing namespace std;const int maxn = 1000;int arr[maxn], tmp[maxn];int n;int main(){ while(cin>>n){ if(n == 0) break;

2016-10-15 13:53:31 308

原创 HDU 1028 —— Ignatius and the Princess III

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1028#includeusing namespace std;const int maxn = 250;int arr[maxn], tmp[maxn];int n;int main(){ while(cin>>n){ for(int i = 0;i<=n;i+

2016-10-15 13:51:31 268

转载 母函数讲解篇

在数学中,某个序列的母函数(Generating function,又称生成函数)是一种形式幂级数,其每一项的系数可以提供关于这个序列的信息。使用母函数解决问题的方法称为母函数方法。母函数可分为很多种,包括普通母函数、指数母函数、L级数、贝尔级数和狄利克雷级数。对每个序列都可以写出以上每个类型的一个母函数。构造母函数的目的一般是为了解决某个特定的问题,因此选用何种母函数视乎序列本身的特性和

2016-10-15 13:49:27 285

原创 HDU 1005 —— Number Sequence

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1005思路:找循环节;f[n] = (f[n-1]*A+f[n-2]*B)%7,所以f[n-1]和f[n-2]都只有7种可能:0、1、2、3、4、5、6,且A和B都是固定的,所以循环节最大就是7*7=49;#includeint res[100];int main(){ int a,

2016-09-12 15:28:09 261

原创 HDU 2222 — Keywords Search

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2222题意:给出n个模板以及文本,问文本中出现了多少个模板;思路:要注意有重复的模板,也是要算数的;用val数组来计算每种模板的个数;用vis数组来表示单词的节点;#include#include#include#includeusing names

2015-08-25 20:53:42 428

原创 HDU 2594 — Simpsons’ Hidden Talents

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2594题意:给出两个字符串S1, S2,找出S1中最长的可以和S2的后缀匹配的前缀;思路:将S1作为模式串,S2作为目标串,用KMP就好,看到S2的最后一个字符时能匹配S1中的第几个字符;#include #include const int max

2015-08-19 16:29:20 495

原创 HDU 1867 — A + B for you again

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1867题意:给你两个字符串T和P,将他们相连(T在P前面,P在T前面均可),首先要求尽可能多的覆盖住重复部分,其次满足按字典序输出;思路:用KMP分别求出两种情况下的匹配数,选取匹配数多的那一种;当两者的匹配数相等时,选取字典序小的字符串在前面;#include#i

2015-08-17 21:40:26 476

转载 KMP讲解

【KMP算法简介】          KMP算法是一种改进后的字符串匹配算法,由D.E.Knuth与V.R.Pratt和J.H.Morris同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。通过一个辅助函数实现跳过扫描不必要的目标串字符,以达到优化效果。   【传统字符串匹配算法的缺憾】          Bi

2015-08-17 15:43:40 442

原创 HDU 2203 — 亲和串

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2203思路:将T串扩增成TT串,就相当于循环移位了一周;#include#includeconst int maxn = 100005;char T[maxn*2], P[maxn];int f[maxn], n, m;bool find(){ int

2015-08-17 15:39:11 591

原创 HDU 1711 — Number Sequence简单题

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1711题意:给出两个数字串,问b串在a串中第一次出现的位置;KMP模板题#include#includeconst int maxn = 1e6+5;int a[maxn], b[maxn], f[maxn];int n, m;void getFail()

2015-08-17 14:40:16 440

原创 HDU 1671 — Phone List

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1671题意:给出一些号码,如果其中一个号码是另一个的前缀,则输出NO;思路:插入每个号码时,内部数字val = 0,最后一个数字val = 1;#include#include#define MAX 26const int maxnode = 4000*100

2015-08-16 10:31:51 411

原创 HDU 1251 — 统计难题

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1251题意:给出一些单词;下面给出一些字符串,计算以该字符串为前缀的单词个数;思路:字典树模板题,只要在插入单词的时候每个字母所路过的节点的val都+1;#include#include#define MAX 26const int maxnode=4000*

2015-08-15 19:45:13 403

原创 HDU 2448 — Mining Station on the Sea 最优匹配+Floyd

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2448题意:第一行给出n、m、k、p;n表示有n个港口和n艘船;m表示有m个油田;k表示油田之间的k条无向边;p表示港口到油田的p条有向边;第二行给出n艘船所在油田的位置;下面k行给出k条边的信息;接下去p行给出p条边的信息;问将这n艘船开回港口(一个港口最多容纳一艘船)的最短路程;

2015-08-13 12:10:52 457

转载 KM算法

一般对KM算法的描述,基本上可以概括成以下几个步骤: (1) 初始化可行标杆 (2) 用匈牙利算法寻找完备匹配 (3) 若未找到完备匹配则修改可行标杆 (4) 重复(2)(3)直到找到相等子图的完备匹配 关于该算法的流程及实施,网上有很多介绍,基本上都是围绕可行标杆如何修改而进行的讨论,至于原理并没有给出深入的探讨。 KM算法是用于寻找带权二分图最佳匹配的算法。 

2015-08-12 21:43:13 1099

原创 HDU 2255 — 奔小康赚大钱 KM入门题

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2255#include#include#include#define inf 1e9using namespace std;const int maxn = 310;int nx, ny; //nx、ny分别表示X集和Y集的顶点数; int match[maxn];int l

2015-08-02 16:38:26 496

原创 HDU 3829 — Cat VS Dog 最大独立集

原题:http://acm.hdu.edu.cn/showproblem.php?pid=3829题意:每个小盆友都有自己喜欢的动物和不喜欢的动物,对于每一个小盆友来说,如果动物园里有自己喜欢的动物且没有不喜欢的动物,那他就是幸福的;现在要在动物园里去掉一些动物,问最多可以让几个小盆友幸福;第一行给出n、m、p,分别表示猫的数量,狗的数量,小盆友的人数;下面p行,给出每个人喜欢

2015-07-31 21:21:20 693

原创 HDU 4185 — Oil Skimming 二分匹配

原题:http://acm.hdu.edu.cn/showproblem.php?pid=4185题意:问“##”相邻的两个#,最多有几对;思路:把每个#按顺序标号,二分图的X、Y集就是#的标号数;如果有相邻的#,就将其相连;最后求最大匹配数,因为相邻的#有重复,所以最后的答案是sum/2;#include#include#include#

2015-07-31 17:01:31 395

原创 HDU 4751 — Divide Groups 交叉染色判二分图

原题:http://acm.hdu.edu.cn/showproblem.php?pid=4751题意:有n个人;下面n行,表示第i个人所认识的人,以0结束;问能否分成两个集合,使得每个集合均为完全图;思路:也就是说不认识的人一定不在一个集合里;用交叉染色法来判断即可;#include#include#include#includeusin

2015-07-31 16:35:01 444

原创 HDU 2458 — Kindergarten 最大团

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2458题意:给出女孩人数、男孩人数,以及m条关系;下面m行,u — v,表示女孩u和男孩v相互认识;并且,男孩们之间相互认识,女孩们之间也相互认识;问最多有多少个人,他们相互之间都认识;思路:显然是求最大团;最大团 = 补图的最大独立集;最大独立集 = 顶点数 -

2015-07-29 21:06:02 464

原创 HDU 4160 — Dolls 最小路径覆盖

原题:http://acm.hdu.edu.cn/showproblem.php?pid=4160题意:有n个箱子,下面n行给出每个箱子的长、宽、高;大箱子可以嵌套小箱子(要求长宽高均小于外面的箱子,且长宽高一一对应,即长对应长);问露在外面箱子有几个;思路:1的体积小于2,2的体积小于3,那么3套2、2套1,就只有一个箱子3露在外面,可以想到是最小路径覆盖;最

2015-07-29 20:50:38 440

原创 POJ 2594 — Treasure Exploration 最小路径覆盖

原题:http://poj.org/problem?id=2594题意:有n个点,m条有向边;问最少用多少条路径可以覆盖所有的点;路径可以合并,即如果有很多的点在一条单向的路径上,那么就可以用这一条路径覆盖这些点;另外,一个单独的点也算作一条路径;思路:用floyd合并路径;再求最大匹配数;最小路径覆盖 = 顶点数-最大匹配数;#incl

2015-07-27 22:50:54 464

原创 POJ 3020 — Antenna Placement 最小边覆盖

原题:http://poj.org/problem?id=3020题意:给出一个n*m的矩阵, ‘ o ’ 表示空地,' * ' 表示城市;现要这些城市都覆盖无线网,在一些城市建基站,一个基站可以至多覆盖相邻的两个城市(这里的两个城市指建了基站的城市和相邻的一个城市);问最少需要建立几个基站;思路:可以想到是最小路径覆盖;此处构建二分图并不是简单的把坐标分为X集

2015-07-27 21:34:25 491

原创 HDU 2819 — Swap 二分匹配

原题:http://acm.hdu.edu.cn/showproblem.php?pid=2819题意:给定一个n*n的01矩阵;通过行或列的变换使得主对角线上都为1;问变换次数,以及具体的变换操作;#include#include#include#includeusing namespace std;const int maxn = 110;in

2015-07-27 17:08:54 369

原创 HDU 1281 — 棋盘游戏 最大匹配

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1281题意:求的三个数 — — 1、cas数;2、特殊边的数量(所谓特殊边即不连该条边会使得最大匹配数减少);3、最大匹配数;#include#includeconst int maxn = 110;int n, m, k;int cas = 0;bool link[m

2015-07-26 19:32:51 330

原创 POJ 2955 — Brackets 区间DP

原题:http://poj.org/problem?id=2955题意:括号匹配,一对( )或者一对[ ],个数为2;问一共有多少个匹配的括号;思路:dp[i][j]表示第i个字符到第j个字符的最大匹配数;如果第i个字符没有可与之匹配的括号则 dp[i][j] = dp[i+1][j];如果str[i] 和 str[k]匹配,则dp[i][j] = dp[i+1

2015-07-25 16:15:10 357

原创 NYOJ 737 — 石子合并(一) 区间dp

原题:http://acm.nyist.net/JudgeOnline/problem.php?pid=737思路:dp[i][j]表示合并第i堆到第j堆的最小代价;在i到j之间寻找分割点k,其合并的代价为dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1];(其中sum[i]表示前i堆石子的数量和)#include#include#define

2015-07-25 13:48:08 441

原创 CSU 1531 — Jewelry Exhibition

原题:http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1531题意:给定一个n*m的矩阵;矩阵里面有k个点,下面k行给出坐标;有一把刷子,每次可以刷单位长度的一行或者一列;问至少刷几次可以刷完所有的点;思路:将所有的点映射到格子的左下角,即只取坐标的整数部分;再用最大匹配做;#include#i

2015-07-24 14:37:48 511

原创 Codeforces Round #303 (Div. 2)

A.Toy Cars原题:http://codeforces.com/contest/545/problem/A题意:有n辆车,给出n*n的矩阵;a[i][j] = 1表示第i辆车坏, = 2表示第j辆车坏,  = 3表示第i, j辆车都坏;问好的车有几辆;#include#includeint n;int arr[110][110], ans[110];b

2015-07-21 20:35:50 388

原创 CodeForces 552D — Vanya and Triangles 暴力枚举

原题:http://codeforces.com/problemset/problem/552/D题意:给出n个点,问一共可以形成多少个三角形;思路:直接暴力枚举,判断三个点是否共线;当同个x的点有多个时,任意选择两个点都可以和其余的点构成三角形;#include#include#includeusing namespace std;int n;

2015-07-19 16:35:42 855 1

原创 HDU 1113 — Word Amalgamation

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1113题意:给出一部字典,然后输入一些字符串,从字典中查找是否有相对应地单词,若没有则输出NOT A VALID WORD;#include#include#include#include#includeusing namespace std;string str;map

2015-07-12 11:33:18 429

原创 HDU 1088 — Write a simple HTML Browser

原题:http://acm.hdu.edu.cn/showproblem.php?pid=1088题意:1、遇到换行;2、遇到输出“--------------------------------------------------------------------------------”3、每行长度不得超过80,单词间有空格;#include#inc

2015-07-12 10:29:56 463

空空如也

空空如也

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

TA关注的人

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