![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM
文章平均质量分 75
Muya77
这个作者很懒,什么都没留下…
展开
-
HDOJ 1045 Fire Net(DFS)
点击打开链接这道题由于数据量很小,所以直接DFS。注意程序标出来的地方,如果不加else,那么当1处理完以后,又会运行后面的。#include#include#include#include#include#include#define N 10using namespace std;int n, ans;int flag_x[N], flag_y[N];str原创 2016-03-06 13:54:20 · 170 阅读 · 0 评论 -
HDOJ 1914 The Stable Marriage Problem (稳定匹配)
点击打开链接这道题很明显就是稳定匹配,核心部分一点也不用改,但是细节处理上要注意一下。默认小写字母是男性,大写字母是女性。接下来要把每一个人都编一个号码,为了方便后面的处理。因为后面要求男性要按照字典序输出名字,所以先把男性的名字都按照字典序排序。至于给男性编号的顺序是无所谓的,但是编号只能从1~n。接下来需要数组记录,使得如果知道男性的名字,就可以知道他的编号。知道女性的名字,就原创 2016-02-27 23:17:22 · 309 阅读 · 0 评论 -
HDOJ 1150 Machine Schedule (二分图最小点覆盖)
点击打开链接题目大意:有两台机器A和B以及N个需要运行的任务。每台机器有M种不同的模式,而每个任务都恰好在一台机器上运行。如果它在机器A上运行,则机器A需要设置为模式xi,如果它在机器B上运行,则机器A需要设置为模式yi。每台机器上的任务可以按照任意顺序执行,但是每台机器每转换一次模式需要重启一次。请合理为每个任务安排一台机器并合理安排顺序,使得机器重启次数尽量少。关于原创 2016-03-03 12:50:58 · 274 阅读 · 0 评论 -
POJ 1129 Channel Allocation(DFS + 四色定理)
点击打开链接题意:一个有N个节点的无向图,要求对每个节点进行染色,使得有通路的两个节点颜色都不同,问最少需要多少种颜色?并且每两个可以相连的点之间的边都画出来,是有全部不交叉的画法的。四色定理是指,如果一个散点集,每两个可以相连的点之间的边都画出来,是有全部不交叉的画法的,那么要让相连的两个点上的颜色都不同,所需要的颜色至多四种。所以这道题目就可以用 dfs再加原创 2016-02-28 10:53:59 · 406 阅读 · 0 评论 -
HDOJ 3949 XOR (高斯消元 + XOR线性基)
点击打开链接题意:给出n个数,任选大于等于1个数进行异或,得到的结果加入一个集合,问这个集合中第k大的数是多少?异或类比加减,把n个数的二进制从上到下排成一个矩阵,化成行最简式(每一行的第一个1所在的列上只有这一个1)。那么非零的行所对应的数,是原来那n个数的极大无关组。极大无关组的定义是:线性无关和原来的数都可以由极大无关组中的数来表示。行最简式显然线性无关,并且原来这么原创 2016-02-17 20:21:58 · 806 阅读 · 0 评论 -
HDOJ 3853 LOOPS (概率DP)
点击打开链接题意:有一个R*C的图,从(1,1)走到(R,C)。每一格都给出了留在原地,向右走一格,向下走一格的概率。无论哪一种都会消耗能量2。求从起点到终点的消耗的期望能量。一般来说,概率DP都是倒着做的。本题中,dp[i][j]表示从(i,j)到终点所消耗的期望能量。容易得出,dp[i][j] = dp[i][j] * p[i][j][0] + dp[i][j+1] *原创 2016-02-11 19:44:02 · 336 阅读 · 0 评论 -
HDOJ 3339 In Action (Dijstra + 01 背包)
点击打开链接题意:给定 0点、n个能源站(编号从1 - n)和连接它们的m条无向路径,已知每个能源站含有的能源和每条路径的长度。你到达一个能源站便可以获得该站的所有能源,现在要求你从0点出发且获得的能源大于总能源的一半,问所需要走的最少距离。有足够多的坦克从0点出发,去往能源站,所有能源站的能源取走一次就没有了。总能源的一半不用分类讨论,s/2本来就是整除。这道原创 2016-02-06 14:15:10 · 249 阅读 · 0 评论 -
HDOJ 2680 Choose the best route (Dijstra 多个起点)
点击打开链接同样是乘公交车,这道题就变成了有向图- -。特点就是有多个起点,比较简单的处理方法是加一个点0,把它作为新的起点,与原来的起点之间路径为0。这么一改动以后要注意后面最外层循环要多循环一次了(看程序中的标注)。如果有多个终点也是同理处理。#include#includeconst int INF = 0x3f3f3f3f;const int VN =原创 2016-02-04 20:22:20 · 224 阅读 · 0 评论 -
ACM进阶计划
ACM队不是为了一场比赛而存在的,为的是队员的整体提高。大学期间,ACM队队员必须要学好的课程有: l C/C++两种语言l 高等数学l 线性代数l 数据结构l 离散数学l 数据库原理l 操作系统原理l 计算机组成原理l 人工智能l 编译原理l 算法设计与分析 除此之外,我希望你们能掌握一些其它的知识,因为知识都是相互联系,触类旁通的。转载 2016-02-04 11:50:03 · 239 阅读 · 0 评论 -
HDOJ 4418 Time travel (bfs + 高斯消元)
点击打开链接题意:有一根编号为0~n-1的数轴,起点编号为x,终点编号为y,从起点开始,每次可以走1~m步中的任意步数,如果走到头就返回。如果d为1,那么一开始的走的方向是逆着数轴的,如果d为0,那么一开始走的方向是顺着数轴的。特别的,如果起点是0或者n-1,那么方向一定是确定的,所以d=-1.问从起点到终点的期望步数。这道题有一个折返走的特殊现象,为了使得操作简便,可以把这根数轴原创 2016-02-18 11:40:50 · 372 阅读 · 0 评论 -
HDOJ 3585 maximum shortest distance (二分+最大团)
点击打开链接题意:从n个点中任取k个点,求这k个点两两之间最小距离的最大值。解析:先把n个点之间的不同距离保存下来,从小到大排序后二分距离,比该距离小的边当作不存在,然后把剩余的边求最大团。如果最大团顶点数大于等于k,就向上缩小区间,否则向下缩小区间。(首先可以肯定的是该问题一定有解,就是二分一定能得到一个最佳距离。等于k的时候还需要向上缩小区间是为了得到最大值。)原创 2016-02-26 17:56:08 · 697 阅读 · 0 评论 -
ZOJ 1023 University Entrace Examination(稳定匹配变形)
点击打开链接这道题和最标准的稳定匹配不同的,就是男和女不是一个配一个,学生可能一个学校都不能去,但一个学校却有可能录取多个学生。原来的模板,只需要改动woman数组,就是这个程序中的Woman数组。为了方便,把学生看成男,把学校看成女,那么Woman数组中对于每一个女性,都要保存目前所选的学生,不断更新。这道题只要满足稳定性,不会出现私奔的情况就可以了。原创 2016-02-29 21:40:37 · 639 阅读 · 0 评论 -
HDOJ 1068 Girls and Boys(二分图匹配 + 镜像构图)
点击打开链接题意:题目给出了n个男女,编号为0~n-1,其中有男生也有女生。然后给出n组关系,把每一个人和与他(她)有缘分的人输入。现在要挑几个人出来,他们两两之间都不能有缘分,那么最多可以挑几个人出来?这道题如果是男生女生混合起来,左边是0~n-1,右边也是,这样构图明显是错的,因为如果左边的一个男生1匹配了右边的一个女生2,那么左边那个女生2本应该是不能再继续匹配的。我原创 2016-03-06 10:24:36 · 939 阅读 · 0 评论 -
HDOJ 1507 Uncle Tom's Inherited Land*(二分图匹配+构图)
点击打开链接题意:给出一个n*m的表格,其中有k个格子是不能够铺木板的,现在要求最多能够铺多少1*2的木板。这道题在二分图的构图上要注意,二分图的两个点集在构建时,保证同一个点集之间的点是不可以连边的,只有两个不同点集之间的点才可以连边。那么这道题要保证相邻的格子处于不同的点集。可以根据横坐标+纵坐标的奇偶性分成两堆。从每个一个可以放置木板的偶点开始,把与它相邻的可原创 2016-03-05 13:58:02 · 232 阅读 · 0 评论 -
HDU 1498 50 years, 50 colors (二分图最小顶点覆盖)
点击打开链接题意:给出n*n的气球,有不同的颜色(最多有50种),每一次都可以选择把某一行或者某一列的某一种颜色的气球给弄破,问k次以后,有那几种颜色的气球是可以留下来的?这道题目的关键是想到,把每一种颜色的气球单独拿出来考虑。比如先考录颜色编号为1的气球,把所有这种颜色的气球的横坐标列坐标相连,然后求最小顶点覆盖数,就是最少需要几次可以将这种颜色的气球全部弄破。如果大原创 2016-03-05 11:15:35 · 261 阅读 · 0 评论 -
HDOJ 1528 Card Game Cheater(二分图最大匹配)
点击打开链接题意:相当于是一个田忌赛马的问题,每个人按照顺序出牌,先比数字,如果数字一样,再比花色,赢的人可以加一分。现在知道对手的牌(数字和花色),问怎么安排自己的出牌顺序,使得自己赢得更多。按照题目给出的顺序,依次枚举自己和对手的牌,如果自己的牌可以赢对手,那么就是一条通路。这就是一个求二分图最大匹配的问题。#include#include#in原创 2016-03-05 12:04:46 · 275 阅读 · 0 评论 -
HDOJ 1281 棋盘游戏(二分图最大匹配)
点击打开链接题意:给出一个棋盘,棋盘上有一些指定的格子可以放车。棋盘上放置一些车让它们不能互相攻击。车可以攻击和它同一行或者同一列的棋子。所以就是车与车之间不能是相同的行或者是相同的列。现在让这个棋盘上摆放尽可能多的车(假设是k个),但是有一些指定的格子就算去掉,还是可以摆放k个棋盘,那么这些格子就不是重要点。现在要求重要点的个数和k。二分图的一个点集就是所有格子的横坐原创 2016-03-05 10:57:15 · 324 阅读 · 0 评论 -
HDOJ 1151 Air Raid(二分图最小路径覆盖)
点击打开链接最小路径覆盖:用最少的边来覆盖二分图中的全部顶点。原创 2016-03-03 20:25:21 · 345 阅读 · 0 评论 -
POJ 1419 Graph Coloring(最大独立集)
点击打开链接题意是:给出n个点已经m组相邻点,给每个点上黑色或者白色,黑色点之间不能相邻,问最多可以给几个点上黑色。最大独立集就是求一个图中最多的顶点集,使得两两之间都不相邻。最大独立集中点的个数 = 补图中最大团中点的个数 (补图就是原来相邻的变成不相邻,不相邻的变成相邻,但是点和本身之间还是看成不相邻的)上黑色看成是放到一个集合中去,该集合中的点是互不相邻的原创 2016-02-28 15:48:12 · 272 阅读 · 0 评论 -
HDOJ 1435 Stable Match(稳定匹配)
点击打开链接(一)问题的引出:有N男N女,每个人都按照他对异性的喜欢程度排名。现在需要写出一个算法安排这N个男的、N个女的结婚,要求两个人的婚姻应该是稳定的。何为稳定?有两对夫妻M1 F2,M2 F1。M1心目中更喜欢F1,但是他和F2结婚了,M2心目中更喜欢F2,但是命运却让他和F1结婚了,显然这样的婚姻是不稳定的,随时都可能发生M1和F1私奔或者M2原创 2016-02-19 15:43:04 · 648 阅读 · 0 评论 -
HDOJ 1385 Minimum Transport Cost (Floyd + 打印字典序最小的路径)
点击打开链接此题最大bug就是一开始的时候INF = 0xfffffff(7个f) 这个数还不够大 INF = 0x3f3f3f3f够大 (0xffffffff(8个f)等于-1)这道题还有一个特点就是打印路径的时候输出的是字典序最小的那个。如果是cost相同的情况,保存下来的应该是当前字典序最小的那个点。这道题除了计算路径长度,还有收税,收的是经过的城市的税(起点和终点不收)原创 2016-02-02 22:22:35 · 256 阅读 · 0 评论 -
HDOJ 1217 Arbitrage (最短路 Floyd)
点击打开链接题意是有n种货币,现在给出m组从一种货币到另外一种货币的汇率,求经过几次兑换之后,是不是可以从中获利。仔细分析,可以发现,这就等同于从一个点经过多个点之后,又回到起点,计算路径长度的方式比较特殊,是乘法,由于汇率可能小于1,所以相当于是普通的加法最短路问题出现了负权,所以不能用dijkstra。注意此题是单向图,双向图也是可以用floyd处理的,只要在建立邻接矩阵的时候原创 2016-02-02 20:56:51 · 379 阅读 · 0 评论 -
HDOJ 1869 六度分离(Floyd)
点击打开链接题意就是著名的六度分离理论,n个编号为0~n-1的人之间有m组关系表示两个人之间互相认识(双向图),判断每两个人之间是不是能通过最多六个人而认识。这道题要注意的是两个人之间隔着六个人,所以就是相当于求两个人之间的最短路径是不是小于等于7。要注意初始化时,自己和自己的距离就是0,初始化一定要全面。由于大于7的都没有被保存,所以最后INF就代表两个人之间不能通过原创 2016-02-04 11:00:39 · 275 阅读 · 0 评论 -
HDOJ 1224 Free DIY Tour (Floyd + 打印路径)
点击打开链接本题关键是打印路径,加了一个path数组。path[i][j]存放的是从i到j的路径中,i的下一个点。在初始化path的时候,所有已知的通路都是从点x到点y,那么path[x][y]=x。注意看一下路径保存和打印的程序段。#include#includeconst int INF = 0xfffffff;int main(){ int t, cn原创 2016-02-02 22:06:45 · 534 阅读 · 0 评论 -
ZOJ 2853 Evolution (矩阵快速幂+数学)
点击打开链接题意就是有编号为0~n-1的物种,总共要经过m次的进化,再给出t组从i到j的概率为z的进化方式,以及原来这n种物种各有几个,问经过m次进化以后,编号为n-1的物种有几个?A为进化率的矩阵,A^m得到m次进化以后物种的变化。进化率矩阵的设计尤为重要,一开始假设所有物种都将进化为它本身,然后再根据输入的进化方式调整得到真正的进化率矩阵。#incl原创 2016-02-01 23:39:10 · 385 阅读 · 0 评论 -
HDOJ 2604 Queuing (递推+矩阵快速幂)
点击打开链接题意:给你一个长度为L的由m和f两种字母组成的字符串,定义存在fmf以及fff子串的都是不符合要求的串,问长度为L的符合要求的串有多少个? 解题思路:首先找出递推关系式,先给出递推关系式:( L )=( L - 1 ) + ( L - 3 ) + ( L - 4 ); (L>=5,因为L=0比较特殊,如果L=4也用递推式算,得不到正确答案) 考虑当L=原创 2016-02-01 22:56:25 · 332 阅读 · 0 评论 -
POJ 3233 Matrix Power Series (矩阵快速幂)
点击打开链接注意这里的A是一个矩阵 求T的次幂的时候图中是在做分块矩阵的乘法,但是计算机运算时要按照普通矩阵乘法来做,所以要先写出T。最后求A+A^2+……+A^K是先求出T^(k+1)然后分割成四个分块矩阵,右上角的那个减去单位矩阵就是答案#include#include#includeusing namespace std;struct matrix{int a[10原创 2016-02-01 22:46:00 · 224 阅读 · 0 评论 -
POJ Fibonacii (矩阵快速幂)
点击打开链接这道题矩阵base^n 所得新的矩阵的右上角的值就是斐波那契数列第n项的值,但由于数比较大,所以要一直取模。这道题的程序可以当作模板使用,其中矩阵是用结构体封装的,可以使代码更加简洁。#include#include#includeusing namespace std;struct matrix{int a[2][2];}ans,base;c原创 2016-02-01 22:29:41 · 233 阅读 · 0 评论 -
HDOJ 2112 HDU Today (Dijstra 此题略坑)
点击打开链接此题坑点:1、 无向图 公交车两个站点间可来回2、可能有起点终点不出现在后面的公交站点的情况 计算最短路时必须包括所有的提到的站点3、起点等于终点的情况输出的是0另外之前写的程序还有几个bug没有记录,顺便也提一下:1、EOF = -1 Ctrl + Z 读入 EOF2、min max最好不要当变量3、C++ 区分大小写,大小写不同就是原创 2016-02-04 14:36:19 · 245 阅读 · 0 评论 -
HDOJ 2923 Einbahnstrasse (Floyed)
点击打开链接题意:给定n个城市,c个目的地(由于n最大是100,c最大为1000,所以可能有重复),r条有向边。接下来是出发点,然后是c个目的地。接下来r行是路径的信息,箭头代表方向。求每次从出发点出发到达目的地,然后再回到起点。走c个来回的最短路之和。因为c个目的地可能有重复,所以在加到map中去的时候不能重复计数,要判重,但是最后算最短路的时候重复几原创 2016-02-05 19:55:23 · 369 阅读 · 0 评论 -
POJ 3682 King Arthur's Birthday Celebration (概率DP)
点击打开链接题意:亚瑟王掷一枚硬币,概率p正面向上,概率1-p反面朝上,现在亚瑟王要掷k次正面朝上,第i次掷硬币时花费2∗i−1。问:期望要掷多少枚硬币才能达到k次正面朝上,以及达到k次正面朝上时的花费。Ei表示掷出了i枚正面朝上的硬币的期望次数。Fi表示掷出了i枚正面朝上的硬币的期望费用。对于期望的理解,就是没有一个确切的值,可以看成是多种不同概率的结果的一个组合原创 2016-02-11 14:33:06 · 602 阅读 · 0 评论 -
HDOJ 1874 畅通工程续 (Dijstra + 重边判断)
点击打开链接这道题就是经典的Dijstra,只需知道一个点出发到其他点的最短路程,注意在初始化的时候要进行重边判断(所有的最短路问题都需要注意这个,除非题意很明显不可能出现重边)#include#includeconst int INF = 0x3f3f3f3f;const int VN = 205;int main(){ int n, m, v0, t0原创 2016-02-04 12:46:18 · 223 阅读 · 0 评论 -
HDOJ题目分类
转载地址: http://blog.sina.com.cn/s/blog_6189fc310100uodn.html1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1、2、3、4、5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007转载 2016-01-30 20:35:49 · 633 阅读 · 0 评论 -
HDOJ 2846 Repository (字典树变形)
点击打开链接这道题的题意就是计算输入的单词被包含在几个源字符串中。因为字典树是与前缀有关的,所以将每个源字符串的后缀都插入到字典树中去。这样在查找字典树是相当于从源字符串的中间位置开始查找。有一个关键的问题就是如何判断两个单词是不是来自与同一个源字符串呢?比如源字符串add d既包含于dd又包含于d。但只能算一次。这就要求我们在插入后缀单词的时候,带上一个身份标记表明来自哪原创 2016-01-30 12:40:42 · 387 阅读 · 0 评论 -
HDOJ 3460 Ancient Printer (字典树 + 深度遍历)
点击打开链接这道题在字典树建立的时候我不再是套用模板,而是更加自然地表达了自己的想法。另外我更深刻地理解了字典树。trie只是定义了字典树最小的一个单元的类型,tree[]是最小单元,即一个节点加上它从它延伸出来的箭头,也许还会包括val这样的附加值。但是一棵完整的字典树,必须是由这一些最小单元,以某种特殊方式结合起来而组成的。insert()就是定义了这样一种特殊方式,称为建树。原创 2016-01-29 14:46:05 · 604 阅读 · 0 评论 -
HDOJ 1251 统计难题(字典树)
点击打开链接刚开始学习字典树,网上都是指针实现,而我个人比较喜欢数组实现,代码简洁,而且占内存少。网上找到一个数组实现的模板,不过感觉有些问题,自己改了一下就用了。由于之前没有怎么接触过数据结构,所以虽然字典树比较好理解,但是实现上对于我还是有点困难。在做题中,慢慢理解了字典树的数据结构。之前只学习过C++的字符串处理,这道题输入的时候要用到strcmp函数,我就改成了用C原创 2016-01-27 14:57:04 · 353 阅读 · 0 评论 -
HDOJ 1075 What are you talking about (map + 字符串 )
点击打开链接C++中map的用法:1、头文件 #include2、定义要在函数内 mapdic; 表示dic[string类型] = int类型 3、用法(以上面的例子展开) 清空:dic.clear(); 放入数据:dic[string] = int 查找:dic.find(string) == dic.end() 没有原创 2016-01-28 22:13:58 · 230 阅读 · 0 评论 -
HDOJ 4089 Activation (概率DP + 迭代)
点击打开链接题意:y#include#include#include#include#include#include#define eps 1e-8const int N = 2005;int n, m, k;double p1, p2, p3, p4, p, s,原创 2016-02-15 21:28:15 · 259 阅读 · 0 评论 -
HDOJ 2262 Where is the canteen (高斯消元 + bfs)
先让我吐槽几句,这道题卡了我三天。主要是没有找到好的高斯消元的模板以及某些题解博客的误导。原来以为百度google到的资源是万能的,这次充分体现了团结就是力量,该抱大腿就抱大腿。情人节全献给了这道题,不过也不孤单,一直都是在讨论和头脑风暴啊中度过。希望能顺利地写完这篇题解,然后给感冒重症患者放个小假。^_^题意:@是起点,$是终点,#不能经过,.可以经过。求从起点到终点的期望步数。注意原创 2016-02-14 21:40:39 · 480 阅读 · 0 评论 -
POJ 3280 Cheapest Palindrome (区间DP)
http://poj.org/problem?id=3280题目大意是说一个字符串,每插入或者删除一个字符都需要一定的代价,问怎样可以使这个字符串变成一个回文串,且花费最小。题目略坑:cin >> ch >> add[ch-'a'] 下标中的ch是上一个ch,所以要分开写。状态转移方程可以看出算[i,j]之前要先算i+1,j-1,所以注意循环顺序。i,j哪个先无所谓。可以画一个表[原创 2016-04-11 22:31:49 · 249 阅读 · 0 评论