
ACM c++
LXY_XYL
这个作者很懒,什么都没留下…
展开
-
AC自动机部分讲解
首先结构体的建立struct node{ node *fail;// fail 指针 node *nex[26];//字典树标配,26个字母 int cnt;//是否为该单词的最后一个节点 node()//构建函数 { fail = NULL; for(register int i=0;i<26;i++)nex[...原创 2019-02-24 21:33:02 · 117 阅读 · 0 评论 -
POJ 1185
这道题和之前的一个牛放牧的题目几乎一样。。就是个升级版。。这次打起来更加顺手了。。。还是输入 n*m 地图 H不可放 P 就可以放,同时保证每个炮兵上下左右两格不会有别的炮兵,中文题。。。不翻译了。 之后还是很明显。。。先确保每行可行的状态,记录下来。然后先把上两行的和地图对比,再相互之间对比确保不会冲突,最后同归递推 dp [ i ] [ k ] [ t ] = max ( dp [...原创 2018-11-18 22:37:38 · 513 阅读 · 0 评论 -
hdu 2689
kmp..暂时先放一下 开始做一些树状数组水题这道题是树上的例题吧很简单 给定 n 个数 数字范围从 1~n 然后输出 排成递增数列的排列次数其实就是求逆序数用树状数组解决以每个 sum 记录数 i 的出现次数,然后每次 总计数 sum += query(n) - query( a[i] - 1)意思就是 先统计一下总共出现了多少个数 减去 比当前数字小的数出现了几次 ...原创 2018-11-12 15:15:53 · 181 阅读 · 0 评论 -
hdu 1711
题目大意,给两个长度分别为n m数组 a b寻找一个k 使得 存在 a[k] == b[1],a[k+1] =b[2] ........ a[k+m-1] = b[m] 这就很简单了。。一个kmp泡一下,当 j 跑到结束的时候 i == k + m - 1直接输出就好 如果不行就返回 -1 以下为AC代码 ...原创 2018-11-12 14:18:11 · 118 阅读 · 0 评论 -
HDU 2087
一道kmp版子题提议很简单中文题目。。直接复制了剪花布条Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 30993 Accepted Submission(s): 18956 Problem Descriptio...原创 2018-11-12 13:12:33 · 114 阅读 · 0 评论 -
POJ 2001
可喜可贺。。poj 正常运转了。。这道题依旧是字典树的题目题干输入 多个单词,找到能代表这个单词的前缀,最后将他们一起输出来,所谓能代表这个单词的前缀,就是与别的单词不同,举个例子, 几个单词 cartoon car cart 那么 cartoon 的前缀 只能是 carto 因为如果在短一些就会出现前缀重复了。 首先说一下思路,因为字典树这东西,记录了在第几个位置 26...原创 2018-11-14 11:04:31 · 214 阅读 · 0 评论 -
2016ACM/ICPC亚洲区大连站-重现赛 d
首先这道题需要理解一个概念就是 若 i,j 互质 ,则 i+j 和 i*j 互质证明如下:(感谢队友的思路)如果 i j 互质, i+j 和 i*j 不互质,那么 i+j 和 i*j 存在公因数 T ,那么由题意可知 ,T必定为 i 或 j 的因数,同时 T 还为 i + j 的因数,那么假设 i % t == 0, ( i + j ) % t == 0, j 必定为 t 的一个倍数...原创 2018-11-15 22:05:43 · 300 阅读 · 1 评论 -
2016ACM/ICPC亚洲区大连站-重现赛 A
题目大意:已知有n个人,他们进行了m场比赛,已知其中有X个好人,Y个坏人。比赛一定是在好人和坏人之间进行的。问是否能够把n个人划分成好人和坏人两个部分好人和中立人打 中立人变成坏人,坏人和中立人打 中立人变成好人 做的时候开始发现就是一个二分图,开始不知道这种方法叫做染色法现在明白了我们需要进行一下dfs 每次对一个好人搜索后 也需要对他的对手进行搜索,如果对手是不同阵营 继续...原创 2018-11-15 20:02:34 · 162 阅读 · 0 评论 -
计算几何基础知识学习整理
今天终于开始接触了一下计算几何。。这里很多基础题都有板子。。先简单介绍一下计算几何基础概念和知识:矢量加减法:设二维矢量P = ( x1, y1 ),Q = ( x2 , y2 ),则矢量加法定义为: P + Q = ( x1 + x2 , y1 + y2 ),同样的,矢量减法定义为: P - Q = ( x1 - x2 , y1 - y2 )。显然有性质 P + Q = Q + P,...转载 2018-11-08 23:52:34 · 567 阅读 · 0 评论 -
HDU 1251
接触到的一道字典树水题。。真的很水。。摸板题,汉字题直接复制题干了统计难题Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submission(s): 59162 Accepted Submission(s): 20630 Problem Des...原创 2018-11-13 23:56:45 · 450 阅读 · 0 评论 -
hdu 1686
说一下题目大意吧:一共 T 组测试数据 先给出一个字符串 再给一个模板串,问题是模板串中出现了几个子串 典型的 kmp 水题我们在构造好 next 数组和 kmp 算法后需要做一个改动那就是 当 j 走到尽头后 不要跳出循环了。。调整一下然后继续跑,(注意这里 i j 都是跑到了 i+1 和 j+1 先回溯一下),然后计数一下,然后一直跑到 i 走到尽头,输出计数就好了。。...原创 2018-11-11 23:30:11 · 529 阅读 · 0 评论 -
HDU 4325
题目很简单一共 T 组数据 每次输入 n 个花的花期 S --- T 然后输入 m 次查询, 输入时间 t ,问 t 时间有几朵花是开着的 简单的树状数组解决,输入 开花时间时 我们把开花时间后边的全部向上更新 +1 一下,然后输入结束时间 再更新一次 -1.。这道题就出来了。。这道题。。很不错。。更好的了解了树状数组 add 函数 更新的特点。(注意输出格式) ...原创 2018-11-13 19:58:25 · 190 阅读 · 0 评论 -
KMP 学习 下篇
做了几道求循环节或者运用 next 数组的题,对于 next 数组理解更深了一些,然后开始正式去学习一下 kmp 算法首先 总结一下 next 数组next 数组 其实是对一个字符串自己进行检测扫描,对相应的重复部分进行一下标记,运用这个性质,我们可以用next 数组来判断字符串中是否存在某个循环节或者前缀是否在后边重复出现过,用途还是很多的,然后回归正题, kmp 算法的目的是让我们...转载 2018-11-11 18:24:29 · 134 阅读 · 0 评论 -
hdu 1541
题目大意:有 n 个星星, 每次输入星星的横纵坐标,而且星星的纵坐标按非递减排列,如果纵坐标相等,则横坐标按递增排列,任意两颗星星不会重合。如果有n颗星星的横坐标比某颗星星小而且纵坐标不大于那颗星星(即有n颗星星位于那颗星星的左下角或者左边)则此星星的等级为n,最后输出等级为0至n-1的星星的数量。 这道题输入就很有意思了 按照一定次序输入,而且我们要统计的是当先星星的等级,也就是说...原创 2018-11-13 16:42:15 · 291 阅读 · 0 评论 -
hdu 3336
题目还是kmp做法 由于北大可能最近在比赛。。。先做了几道HDU的题目题干大意:给 t 组数据,每个数据前先输入 字符串 S 的长度 l 之后输入 S求字符串内 前缀数 + 和前缀匹配的子串数举例abab 前缀有 a ab aba abab 匹配数 为 2故输出 6 对于这个问题。。更加考验对于 next 数组的理解了。首先我们看一下 任意一个子串 以 aba...原创 2018-11-11 12:46:51 · 244 阅读 · 0 评论 -
POJ 3630
这道题目依旧是 字典树题目大意:目前有 t 组数据, n 个电话号码,如果拨打号码的时候 先拨通了某个号码,那么这一串号码就无法全部拨通,举个例子 911 和 9112016652 相比 后者就无法被拨通,因为 911 会先被拨通。如果都可拨通 输出 YES 不然输出 NO 这道题意思很明确,给你 n 个字符串,每个字符串都不能是另外一个的前缀,这里我们只需要每个字符串...原创 2018-11-14 20:03:31 · 373 阅读 · 0 评论 -
POJ 2513
一道有关 字典树的题,,我感觉图论用的更多一些,题意:给你 多根棍子,每根棍子前后各有一种颜色,只有颜色相同才能拼在一起,问能不能结成一根棍子 首先 ,这道题我们需要两点注意,一是能不能把这些节点连在一起,二是能不能形成一个 欧拉回路(如果能围成一个圈自然能连成一条线)但是对于如何实现记录 就依靠字典树的根节点来实现,设立一个拜访数组记录最后一个点是第几个节点,再...原创 2018-11-14 22:28:42 · 203 阅读 · 0 评论 -
约数个数定理和约数和定理
约数个数定理对于如何快速求一个数内有多少个数是他的约数,有一种公式假设对于 X 他的素数约数为 p1,p2,p3...pnX = (p1^a1) * (p2^a2)*.......(pn^an)因为 p1,p2,p3...pn都是素数因数,我们可以认为他们是组成 X 最下的一个因子部分,那么我们通过多次选择这些素数相乘不就可以得出全部的约数了吗。那么根据排列组合思想 p1 选 ...原创 2019-01-17 16:15:06 · 2910 阅读 · 0 评论 -
欧拉函数思路
欧拉函数phi( i ) = i * ( 1 - p1 ) * ( 1 - p2 ) ...... * (1 - pn )这是欧拉公式直接表示,其中 p1,p2,p3...pn 代表 i 的素数因子那么 我们这么想 欧拉函数表示的 是 某个数小于等于他的全部互质数字个数假设一个数有一个 素因子 p,我们可以知道 对于这 i 个数字里p的倍数约占 1/p ,那么这个信息是怎么推测出来...转载 2019-01-17 14:32:44 · 307 阅读 · 1 评论 -
2016ACM青岛区域赛-重现赛(部分题解)
好多题都是数学题。。。看的头晕眼花。。。。连一个网络流都得用数学方法改变一下去计算。。。各种概率。。期望。。只能硬着头皮去写。。看来要早点学数论了。。。。A Relic Discovery水题。。。看代码就能懂这题是啥意思了。。。#include<iostream>#include<cstdio>#include<cstring>usin...原创 2018-12-08 17:57:21 · 379 阅读 · 0 评论 -
校oj 题目
问题 H: 吃西瓜时间限制: 1 Sec 内存限制: 256 MB提交: 9 解决: 7[提交][状态][讨论版][命题人:外部导入]题目描述 【问题描述】老胡买了是长方体形的西瓜来犒劳大家....这块西瓜长m厘米,宽n厘米,高h厘米.他发现如果把这块西瓜平均地分成m*n*h块1立方厘米的小正方体,那么每一小块都会有一个营养值(可能为负,因为西瓜是有可能坏掉的,但是...原创 2018-12-04 22:05:46 · 280 阅读 · 0 评论 -
洛谷 P3386
二分图匹配摸板题。。。。主要是用了匈牙利算法,,主要思想还是 dfs。匈牙利算法主要如下bool dfs(int k){ for(int i=1;i<=r;i++) { if(ed[k][i]&&!vis[i])//判断此点是否使用过和是否联通 { vis[i]=true;//标记访问...原创 2018-11-20 14:19:40 · 216 阅读 · 0 评论 -
POJ 2663
这道题是一个 DP 题目。。涉及到了一部分的铺砖类型题的思路。。。首先给你一个 3*n 的地面,用 2*1 的地砖铺满,问有多少种铺砖方式。。这道题其实是 2*n 地面的升级版,所以会有一些特别。首先如果 n 为 奇数 那么就肯定会出现铺不满的情况了。n 为偶数时候。。我们通过简单的去算一下,发现存在一定规律当 n > 4 时候n为偶数,那么我们那首先可以拆分一下...原创 2018-11-18 13:37:04 · 277 阅读 · 0 评论 -
POJ 3420
这道题非常综合,和上一道题很类似,这道题,也是铺地砖问题,只不过 地面变成了 4*n 同时需要输入 mod ,结果对 mod 取模。。那么有了上一题的经验。我们开始整理一下 b [ n ] 代表 4*n 的不可分割矩阵种类个数。。。首先 b[ 1 ] = 1 ,b [ 2 ] = 4 ,之后我们发现了一个类似的规律,我们所谓之不可分割矩阵,要求的就是每一行之间都存在一个连接的木...原创 2018-11-18 16:10:31 · 379 阅读 · 0 评论 -
洛谷 P 1343
题目描述汶川地震发生时,四川**中学正在上课,一看地震发生,老师们立刻带领x名学生逃跑,整个学校可以抽象地看成一个有向图,图中有n个点,m条边。1号点为教室,n号点为安全地带,每条边都只能容纳一定量的学生,超过楼就要倒塌,由于人数太多,校长决定让同学们分成几批逃生,只有第一批学生全部逃生完毕后,第二批学生才能从1号点出发逃生,现在请你帮校长算算,每批最多能运出多少个学生,x名学生分几批才能运完...原创 2018-11-20 09:21:28 · 120 阅读 · 0 评论 -
2016ACM/ICPC亚洲区大连站-重现赛 B
题目如下给你一个长度为 n 的字串,之后 n 行每行输入 a 然后输入 a 个 ai 代表 字串的第 i 位可以为 a0-----aa。最后输入主串,问主串中包含了多少个可行的字串,输出字串。 字符串判断题。。开始想用 kmp 但是发现 没有重复性的话就会超时。。所以这道题用了一个 bitset 来优化一种 shift_and 算法。。 首先我们了解一下 bitset ...原创 2018-11-17 16:45:40 · 235 阅读 · 0 评论 -
2016ACM/ICPC亚洲区大连站-重现赛 E
读题真的费了点时间,但是读懂后就发现并不是那么困难。这道题很简单明了。。题干里说的什么集合看起来很高端。。但是你仔细拆解一下就会发现。。这个就是树状数组。。问题就是 n m ,代表 n 个元素,m个询问。每次询问有两种1.询问区间 a b 之间 lowbit( i ) 之和2.询问 把 x 加入树状数组需要循环几次 add。。。总之。。询问 2 是最好搞的。。不会超时。。暴力求...原创 2018-11-17 14:16:04 · 151 阅读 · 0 评论 -
HDU 3549
题目简单明了,给 n 个点 m 条边 输入整个有向图,输出最大流。 这里用的还是EK算法,用bfs 进行优化,原本的bfs 是设置图的层来避免反向走,而这里看了一下大牛们的新方法,用了一下父节点,用了这种方法,对每一个bfs到的点设置一下父节点,这样在寻找增广路的时候,从 end 开始反向寻找到起点,再记录下最大流。。很巧妙。。。 以下是AC 代码 ...原创 2018-11-19 19:31:24 · 204 阅读 · 0 评论 -
洛谷 P4001
这道题 就是求最小割,看着比较简单明了,那么我们根据 最大流 = 最小割原理,求出最大流 就好了。。。但是这道题 有一个问题数据还是很玄学的,需要 dinic 先 bfs 对图进行一下分层,而且还需要一定的剪枝,如果 dinic 的时候有一条路找不到终点,很显然这条路已经没意义了,我们就给这条路堵上。。开始 最后几个点似乎就卡在这里了。。 这道题可以当 dinic 模板 ...原创 2018-11-21 21:55:26 · 143 阅读 · 0 评论 -
2016年ACM/ICPC大连赛区重现赛 F题
本题简单明了给你 T 组数据,然后输入 n ,把n拆解成不同的数字,使这些数字相乘最大。。。。这种简单题往往最恶心。。首先我们想一下,如果把一个数拆分成任意的数字相乘,最大的肯定是 2*2*2*2*2*。。。。到最后剩下奇数就*3,但是这道题是不同的数字,就往尽可能 小数多乘。这种思路走。。 那么这道题就显而易见了拆解成 2+3+4+5+......+x , 假设 设此...原创 2018-11-16 23:48:25 · 163 阅读 · 0 评论 -
洛谷 P3381
一道最大流最小费用摸板题。。此处开始学习了最小费用,首先还是以最短路的思路去搞(此处用的 spfa)来判断给定起点终点后能否到达最终目标点当然首先是熟悉的建连通图环节:struct edge{ int to,next; int flow,dis;}ed[maxn];int head[maxn],num;num = -1;void inset(int from...原创 2018-11-20 22:56:18 · 156 阅读 · 0 评论 -
HDU 2743
本题题意输入 n , m , n个节点 m 个操作操作分两种 M 之后输入 a b 连接 a b ;操作 Q 之后输入 c 将 c 从其所属的所有集合中取出;最终输出 全场剩余集合数量; 本题还是并查集,但是有一个点 就是废除节点,但是我们还不能直接暴力去除掉,因为我们需要他来连接剩下的并查集,所以建立一个虚拟节点,之后再对虚拟节点进行连接,所谓去除 就是把他指向一...原创 2018-11-05 23:59:15 · 87 阅读 · 0 评论 -
状态压缩 学习
本题 我参照了网上大牛的博客:http://www.hankcs.com/program/algorithm/poj-2441-arrange-the-bulls.html下边这段讲解我感觉对于状态压缩这里很有帮助(原博客是讲述POJ 2441的 可以参照一下) 记住最后一步操作 对于状态压缩来说很好用 ...转载 2018-11-05 21:48:28 · 128 阅读 · 0 评论 -
打击犯罪(black)
无意中发现的题目,比较有创意 中文题目直接复制粘贴原题目了【题目描述】某个地区有n(n≤1000)个犯罪团伙,当地警方按照他们的危险程度由高到低给他们编号为1-n,他们有些团伙之间有直接联系,但是任意两个团伙都可以通过直接或间接的方式联系,这样这里就形成了一个庞大的犯罪集团,犯罪集团的危险程度由集团内的犯罪团伙数量唯一确定,而与单个犯罪团伙的危险程度无关(该犯罪集团的危险程度为n)。现在当地...原创 2018-11-05 13:42:14 · 772 阅读 · 0 评论 -
并查集训练-搭配购买(buy)
中文题目 题目直接复制了:题目描述Joe觉得云朵很美,决定去山上的商店买一些云朵。商店里有n朵云,云朵被编号为1,2,…...,n,并且每朵云都有一个价值。但是商店老板跟他说,一些云朵要搭配来买才好,所以买一朵云则与这朵云有搭配的云都要买。但是Joe的钱有限,所以他希望买的价值越多越好。输入第1行n,m,w,表示n朵云,m个搭配,Joe有w的钱。第2~n+1行,每行ci,d...原创 2018-11-06 22:45:50 · 572 阅读 · 1 评论 -
POJ 3264
一道线段树水题,因为一小段代码错误 卡了半天。。实在不应该。。题意给你 N 头牛和 N 头牛的身高,再给你一个区间,求这个区间内部最高的牛和最矮的牛的身高差。 典型线段树,开两个线段树,然后一个求最大,一个求最小,然后相减就完事了。 #include <iostream>#include &l...原创 2018-11-01 23:15:28 · 105 阅读 · 0 评论 -
POJ 3685
题意 给你 n 阶一个矩阵 Aij = i*i + i*100000 - j*100000 +i*j求第 m 大的数字 先输入 T 之后 T 组数据, 每次输入 n ,m。首先看一下范围 发现超不了 LL,之后找一下规律,发现 i 和 Aij 是正相关的,i 大则 Aij 也会大,但是似乎并没有找到什么规律,这道题更多的是找到 一个数字对吧 找到第 K 大的数,代表有个 K-1个数字...原创 2018-11-01 21:10:25 · 373 阅读 · 1 评论 -
POJ 1990
这是接触的第一道树状数组题。。想了比较长的时间。。最后网上找的一下思路。。是道很好的题。。以后要复习一下。。题目大意: 有 N 头牛,每头牛位于 第 Xi 位 且只有叫它声音高于 Vi 他才听得见,而牛之间交流消耗的能量 譬如第 i 头和第 j 头交流 消耗能量为 max(vi,vj)*( | xi - xj | )首先 我们要优先去看那些失聪程度大的牛,比如当前为 第 ...原创 2018-11-01 19:40:19 · 229 阅读 · 0 评论 -
POJ 2253
其实想看一下 其他题。。但是莫名其妙点错了。。以为是一个线段树的题。。读完题意发现不对。。但是似乎不难就顺便做了题意如下:输入 n 个石头之后是n个石头坐标 X Y 青蛙A在1号 B在2号 A想要跳到B上,但是不是简单的直接跳过去,湖上有许多的石头最短路的定义是最少跳跃次数里 最长的那条边(先算最短路 松弛的时候别记录全长度,记录最长边就完事了) 代码如...原创 2018-11-01 16:21:50 · 429 阅读 · 0 评论 -
POJ 2566
这道题仍然是一个尺取法 尺取法 需要整个数列具有单调性 (开始我一直以为单调性是单调递增或递减,然而并不是)单调性就是 比如 区间取和 我在右边界向右延伸的过程中 整个区间和是不断增大的 不会变小 不然右侧就不会延伸 反而右边会向回收缩,这样的话就会造成一种很混乱的局面。那么我们来看题目本体题意:一共N个数 给你K个数字 每个数字大小为 T 求一个区间使其区间和最接近T 输入...原创 2018-10-30 20:43:58 · 505 阅读 · 0 评论