自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 收藏
  • 关注

原创 二部图最大匹配

题意:一个矩阵,元素除了1就是0,问将所有的在同行或者同列的1连接起来,最少需要多少条线。输入:24 400100101001000005 410010010110011100101输出:Case #1: 2Case #2: 4分析:看到题目的第一眼以为是将统计每一行每一列中1的个数,之后从

2016-08-24 20:42:44 800

原创 二部图最大匹配--匈牙利算法

二分图的最大匹配、完美匹配和匈牙利算法这篇文章讲无权二分图(unweighted bipartite graph)的最大匹配(maximum matching)和完美匹配(perfect matching),以及用于求解匹配的匈牙利算法(Hungarian Algorithm);不讲带权二分图的最佳匹配。二分图:简单来说,如果图中点可以被分为两组,并且使得所有边都跨越组的边界,则这就是

2016-08-24 20:32:58 870

原创 枚举集合--二进制法

二进制枚举子集:1.从最右边开始,代表的数字都是从0开始,1代表该数字在集合中,0代表该数字不在集合中。2.二进制运算:二进制中的按位与,或,异或对应集合运算的交,并,对称差。3.一般将全集定义为ALL_BITS=(1枚举集合(1,2,.......n-1)#include#include#include#includeusing namespace std

2016-08-22 12:48:59 2728

原创 poj题目分类

初期:一.基本算法:     (1)枚举. (poj1753,poj2965)     (2)贪心(poj1328,poj2109,poj2586)     (3)递归和分治法.     (4)递推.     (5)构造法.(poj3295)     (6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)二.图算法:  

2016-08-22 12:45:19 281

原创 hdu oj 题目分类

基础题:1000、1001、1004、1005、1008、1012、1013、1014、1017、1019、1021、1028、1029、1032、1037、1040、1048、1056、1058、1061、1070、1076、1089、1090、1091、1092、1093、1094、1095、1096、1097、1098、1106、1108、1157、1163、1164、1170、11

2016-08-22 12:42:12 311

原创 ACM几何题目大全

计算几何题的特点与做题要领:1.大部分不会很难,少部分题目思路很巧妙2.做计算几何题目,模板很重要,模板必须高度可靠。3.要注意代码的组织,因为计算几何的题目很容易上两百行代码,里面大部分是模板。如果代码一片混乱,那么会严重影响做题正确率。4.注意精度控制。5.能用整数的地方尽量用整数,要想到扩大数据的方法(扩大一倍,或扩大sqrt2)。因为整数不用考虑浮点误差,而且运算比浮点

2016-08-19 21:49:33 661

原创 POJ 3311--佛洛依德枚举

题意:有 n 个地点,之后告诉你n个地点的之间的距离,问从起点出发,经过所有的点后再回到起点,求最短路。输入:30 1 10 101 0 1 210 1 0 1010 2 10 00输出:8分析:可以先求出任意两点之间的最短路,直接三重循环的floyed就可以,之后将n个点全排列,找出全排列后的所有点构成的回路的最小值即可。小技

2016-08-19 21:08:14 337

原创 POJ 3310--图

题意:一个无向图,如果这个无向图上有一条路径能将所有的度数大于等于2的节点串联起来,而且这个无向图没有环而且是连通的,就输出Graph 2 is a caterpillar否则输出Graph 1 is not a caterpillar。输入:22211 2 2 3 2 4 2 5 2 6 6 7 6 10 10 8 9 10 10 12 11 12 12 13 1

2016-08-19 20:36:46 409

原创 UVALive 7370--字符串排序

题目来源:UVALive 7370题意:给 n 个名字,每个名字后面都带着来自哪个班级,班级的优先级是: upper>middle>lower,根据班级的优先级将名字进行排序,优先级高的班级名字在前面,若班级的优先级相同,则根据名字的字典序从小到大进行排列。注意:班级的优先级是从后面往前比较,如果优先级说明不够长,则省下的在优先级前面补Middle。分析:

2016-08-19 20:17:27 281

原创 UVALive 6859--凸包

题意:在一个直角坐标系内给n个点的坐标 ,要求画一个多边形,条件:1、将所有的点都要包含进去(保障所有的点在多边形的内部,不在多边形的边上);2、保证多边形的顶点坐标是整数;3、多边形顶点之间的连线要么是一条水平竖直的直线,要么是一条45度的斜线;在保证以上三种条件的情况下,保证多边形的周长最小,输出多边形的周长。输入:10 021 11

2016-08-17 20:58:51 334

原创 动态规划总结

动态规划总结:动态规划算法,在T大某位老师的书中说就是递推+重复子问题。动态规划算法的效率主要与重复子问题的处理有关。 典型的题目有 陪审团,最大公共子串问题 1,最大公共子串问题 这个是动态规划的基础题目。动态规划就是递推和重复子结构。确定了递推关系后。找到一个能极大地减少重复运算的子结构至关重要。选的好了,时间效率会很

2016-08-11 21:37:29 506

原创 HDU 4463--最小生成树+并查集标记

题意:有n家店,要你把他们连在一起(即建成一颗最小生成树),耐克和苹果是要求必须有边直接连的,然后就给你n个店的坐标。输出你建好的生成树的权值。输入:42 30 01 00 -1 1 -10输出:3.41分析:最小生成树,首先将各个商店连接起来,将边进行排序,找出最小的边的权值,为了排序我们建立一个结构体,用来储存坐标,和边权

2016-08-08 20:27:47 290

原创 最小生成树算法

最小生成树算法:kruskal算法(克鲁斯卡尔算法)--贪婪算法求加权连通图的最小生成树的算法。kruskal算法总共选择n- 1条边,(共n个点)所使用的贪婪准则是:从剩下的边中选择一条不会产生环路的具有最小耗费的边加入已选择的边的集合中。注意到所选取的边若产生环路则不可能形成一棵生成树。kruskal算法分e 步,其中e 是网络中边的数目。按耗费递增的顺序来考虑这e 条边,每次

2016-08-08 19:58:27 447

原创 HDU 4461--水题

题意:2个人拥有一些棋子,每个棋子都有自己的战力,当某人没有马或者没有炮或者两个都没有的时候,他的总战力要减一。问两个人谁的总战力高,平局输出tie.输入:32 A B2 A B7 A A B C D D F 7 A A B B C C F5 A A B B F3 A B F输出:tieblackred代码:#in

2016-08-08 19:46:49 210

原创 HDU 4460-BFS

题意:给N个人,之后给出M组人与人之间的关系,如果两个人是直接朋友关系,那么他们的亲密值是1,如果两个人是间接朋友关系,那么他们的亲密度是他们之间的人的个数加1,输出任意两个人之间的最小亲密关系。如果无法确定最小亲密关系则输出-1。输入:3XXXYYYZZZ2XXX YYYYYY ZZZ0输出:2分析:可以先建立关系,组成一

2016-08-08 19:39:08 372

原创 KMP算法详解

KMP算法,是由Knuth,Morris,Pratt共同提出的模式匹配算法,其对于任何模式和目标序列,都可以在线性时间内完成匹配查找,而不会发生退化,是一个非常优秀的模式匹配算法。但是相较于其他模式匹配算法,该算法晦涩难懂,第一次接触该算法的读者往往会看得一头雾水,主要原因是KMP算法在构造跳转表next过程中进行了多个层面的优化和抽象,使得KMP算法进行模式匹配的原理显得不那么直白。本文希望能够

2016-08-06 10:16:22 282

原创 AC自动机算法概述

AC自动机简介: 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有字典树Trie和KMP模式匹配算法的基础知识。KMP算法是单模式串的字符匹配算法,AC自动机是多模式串的字符匹配算

2016-08-06 10:12:07 193

原创 HDU 4493--水题+控制精度

题意:给出12个月工资,算每月工资多少,最多输出2位小数,如果结果是1位小数输出1位,整数则不输出小数位。输入:2 100.00 489.12 12454.12 1234.10 823.05 109.20 5.27 1542.25 839.18 83.99 1295.01 1.75100.00 100.00 100.00 100.00 10

2016-08-05 21:28:02 341

原创 HDU 3683--模拟+搜索

题意:一个五子棋残局,三步之内确定赢家。黑子先下,如果黑子数量多于白子输出Invalid,如果三步之内分不出胜负,或者三步之内可以判断谁赢,按照规定输出。输入:313 3 13 4 03 5 03 6 04 4 14 5 14 7 05 3 05 4 05 5 15 6 15 7 15 9 16 4 16 5 16 6 06 7

2016-08-05 21:16:18 228

原创 coderforces-701A-水题

题意:给出n个数,n是偶数,将n个数分成n/2组,每组的数的和相等。输入:61 5 7 4 4 3输出:1 36 24 5分析:结构体,按照数值排序,输出两端的数的id即可。代码:#include #include #include using namespace std;struct node{

2016-08-04 23:01:41 196

原创 coderforces-701B--数学去重stl

题意:给一个n*n 的棋盘,之后给出m个坐标点,在这些坐标点上放炸弹,炸弹能消除该炸弹所在行和列的方格都受到伤害,每一次M操作后都要输出没有被伤害的方格的数量。输入:3 31 13 12 25 21 55 1100000 1300 400输出:4 2 0 16 9 9999800001 分析:将输入的坐标行

2016-08-04 22:58:33 223

原创 HDU 3697--贪心+暴力

题意:选课问题,给出可以选择的课程的开始时间和结束时间,他每隔5分钟会选一次课,问他最多能够选多少节课。输入:21 104 50输出:2分析:贪心,将所有课程的结束时间从小到大排序,如果课程的结束时间相同,就按照开始时间从小到大排序,这样的顺序一定是最解。由题意可以看出来,选课的时间只可能是0~4,第一次选课时间定出来之后,以后

2016-08-04 21:26:38 275

原创 HDU 3699--DFS+模拟

题意:给三个字符串s1,s2,s3,三个字符串的每一个字符都代表着一个数字(0~9),问s1 经过和s2进行加减乘除得到s3,问一共有多少种这样的情况。输入:2A A ABCD BCD B输出:572分析:直接暴力搜索,将字符串转换成数字,(做法:每次乘10加位数)当然要用 long long 才能存的下,然后枚举加减乘除四种运

2016-08-04 20:28:06 259

原创 HDU 3682--模拟&去重

题意:给一个n*n*n的立方体,之后的m行给出两个坐标,要删除该线上的小立方体,问经过m次操作后,一共删除了多少个立方体块。输入:23 2Y=1,Z=3X=3,Y=110 2X=3,Y=3Y=3,Z=3输出:519分析:标记去重,将m次操作用数组来标记,每次操作都用数组visxy[]或者visxz[]或者visyz[]来进行

2016-08-04 10:07:29 390

原创 HDU 3687--暴力

题意:给一个n*m的方格,给出n*n个点,这些点只能左右移动,问将这些离散的点组成一个n*n 的正方形最小需要走几步?输入:2 1682 1011 1271 1052 900 0输出:41分析:暴力题,死活没暴出来。卡死位置:思路有了,主要卡在没能将各行的纵坐标排序。之后看了题解,发现是自己的比较函数写错了,还有一种做法是设

2016-08-03 20:18:37 351

原创 HDU-5675

题意:给 N 个数,如果这个数可以有两个数的平方差求得,那么输出True,否则输出False。输入:462581105输出:FalseTrueTrueTrue分析:所有的除1以外的奇数都可以,所有的除4外的可以整除4的都可以,其余的不行。代码:#include #include #inclu

2016-08-03 19:35:59 221

原创 HDU 5441--并查集

题意:给定N个顶点,M条边的一个无向图,Q个询问。对于每个询问x,从a,b的路径上各边的最大权值小于x,可以记为有序对, 求这个图里面有多少个这样的有序对。输入:15 5 32 3 63341 5 157243 5 57054 3 123821 3 2172660001000013000输出:2612分析:在N和

2016-08-02 21:35:29 198

转载 并查集

并查集并查集(Union-find Sets)是一种非常精巧而实用的数据结构,它主要用于处理一些不相交集合的合并问题。一些常见的用途有求连通子图、求最小生成树的 Kruskal 算法和求最近公共祖先(Least Common Ancestors, LCA)等。使用并查集时,首先会存在一组不相交的动态集合 S={S1,S2,⋯,Sk}S={S1,S2,⋯,Sk},一般都会使用

2016-08-02 20:32:43 212

原创 HDU 5443-找区间最大值

题意:暴力找区间最大值输入:3110011 151 2 3 4 551 21 32 43 43 531 999999 141 11 22 33 3输出:1002344519999999999991代码:#include #include #include #include u

2016-08-02 10:36:43 246

原创 HDU 5438--连通图

题意:几个无向图,将各无向图删除子节点,将无向图变成连通图,并求出点数是奇数的连通图的节点的值的和。输入:17 71 2 3 4 5 6 71 41 54 52 32 63 62 7输出:21分析:代码:小结:

2016-08-02 10:29:54 395

原创 HDU 5437--优先队列模拟

题意:

2016-08-02 09:47:54 246

原创 UVALive 7503--模拟

题意:你有A元,你需要通过买东西凑出B元,A, B ∈ {0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50, 100} 且 A > B,注意:可以先买一个东西,之后拿找零的钱继续买东西。输入:20.05 0.022 1输出:0.010.01分析:只要读懂题意,并不难模拟出来,由于可以拿找

2016-08-01 21:09:55 611

原创 HDU 5444-二叉树的遍历+建树

题意:一颗二叉树,有 n 个节点,给出n个节点的先序遍历,即左边小,右边大。之后给出数字m,然后给出m个节点,写出从根节点到m个节点的路径,往右遍历即往西输出W,往左遍历即往东输出E。输入:242 1 4 331 2 366 5 4 3 2 111输出:EWEEEEEE分析:首先设立节点的属

2016-08-01 21:02:51 538

空空如也

空空如也

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

TA关注的人

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