自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 搜索 ( 八数码问题详解:BFS,A*,IDA* )——Eight ( POJ 1077 )

DBFS,A*,IDA*,转自链接 (侵删)题目链接: http://poj.org/problem?id=2449分析: 又称为九宫格问题,给出一个状态的九宫格,判断是否有解,如果有则输出解。八数码问题有无解的结论:一个状态表示成一维的形式,求出除0之外所有数字的逆序数之和(每个数字前面比它大的数字的个数的和,称为这个状态的逆序)。若两个状态的逆序数奇偶性相同,则可相互到达,否则不可相

2016-07-31 17:43:11 888

原创 搜索 ( BFS )——Maximum Cut Order ( UVA 7460 )

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5482分析: 给出一颗二叉树,每一条边的值为|i-j|%m,然后从给定节点出发,每次存入边值最大的节点。题解: 用优先队列保存点,BFS搜索即可AC 代码:#inclu

2016-07-31 16:08:12 628

原创 数学 ( 解高次同余方程 )——Discrete Logarithm Problem ( UVA 7457 )

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5479分析题目就是让我们解高次同余方程 ax≡b(modP)a^x ≡ b ( mod P) , 不过p最大为2的13次方,所以可以直接模拟做。但是解高次同余方程还是由模板的。

2016-07-31 15:07:30 1740

原创 AC自动机 ( 静态建树模板 )——Substring ( UVA 11468 )

题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2463分析: 给出 k 个模式串,再给出N个字符以及每个字符被选中的概率 pi,求选出N个字符组成长度为L的字符串且不含任何模式串的概率。 (出现的字符为 a-z, A-Z, 0-9)题

2016-07-30 13:32:21 416

原创 AC自动机 ( 模板题啊 )——Dominating Patterns ( UVA 4670 )

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2671分析: 给出N个字符串建树,然后给出一个母串,求出再母串中出现次数最多的子串,如果有多个,就全输出。题解:模板题!!因为要计算出现次数,可以考虑先用map存储一些所有的

2016-07-29 22:01:05 353

转载 OJ中的语言选项里G++ 与 C++的区别

概念上:C++是一门计算机编程语言,而G++则是C++的编译器。GCC和G++都是GUN的编译器,cc是Unix系统的C Compiler,而gcc则是GNU Compiler Collection,GNU编译器套装。gcc原名为Gun C语言编译器,因为它原本只能处理C语言,但gcc很快地扩展,包含很多编译器(C、C++、Objective-C、Ada、Fortran、Java)。 提交上的区

2016-07-29 20:24:09 6204

原创 AC自动机 ( 模板题啊 )——病毒侵袭持续中 ( HDU 3065 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3065分析&&题解: 这持续侵袭的病毒还不如第一次病毒难,直接模板改改就好:AC代码:#include <cstdio>#include <iostream>#include <cstdlib>#include <cstring>#include <algorithm>#includ

2016-07-29 19:02:35 440

原创 AC自动机——病毒侵袭 ( HDU 2896 )

题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=2896分析: 给出N个子串建树,再给出M个母串来查询每个母串含有哪几个子串。还是一只自动AC机~题解: 直接套用AC自动机模板,不过需要修改几个地方:建树: 2.void insert(char *s){Node * t = root;for(;*s;s++){ int x

2016-07-29 16:57:21 422

原创 AC自动机 ( 动态建树模板 )——Keywords Search ( HDU 2222 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2222分析: 给出n个单词建树,然后给出一个字符串,搜索字符串里出现了多少个单词。直接套用AC自动机模板就可以。AC自动机模板(含解析):const int k = 26;const int MAXN = 500100;struct Node{ Node* ch[k], *fai

2016-07-29 14:42:29 598

原创 CRT+容斥定理——Luck7 ( HDU 5768 ) ( 2016 Multi-University Training Contest 4 1005 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5768分析: 给出区间 [x,y][x, y] 和 数字n,再给出n行,每行为ai 与 pi,求出区间内 7 的倍数且模ai余数不为pi的数的个数。我们可以用CRT求出所有模ai余pi的数。题解: 利用CRT和二进制状态压缩计算不满足条件的数,然后用容斥定理计算答案参考代码:#include

2016-07-29 13:32:16 408

原创 最长递增子序列 ( LIS )——The All-purpose Zero ( HDU 5773 ) ( 2016 Multi-University Training Contest 4 1010 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5773分析: 给出N个数,其中0可以被替换成 0 ~ 9 的任何数字,问替换后这N个数的最长递增子序列的长度为多少?题解: 为了保证严格递增,我们把每一个数都减去这个数之前的0的个数,然后去掉0,做一次LIS求出长度,然后加上0的个数就是原来数列的LIS长度了。LIS模板:int DP[M

2016-07-28 22:09:57 466

原创 DP+KMP——Another Meaning ( HDU 5763 ) ( 2016 Multi-University Training Contest 4 1001 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5763分析: 每次给出两个字符串A和B,B可以被替换成*,在A中查找B,每一个B都可以进行替换,求一共能把A替换成多少种字符串。题解: 因为A字符串的长度为100000,所以答案最多会有2的100000这么多种,直接KMP会Bomb,ShaKaLaKa,因此需要用DP来做:DP[i]表示到第i

2016-07-28 21:02:23 350

原创 树状数组+离散化——求大范围,大数数组的逆序数

模板转自网络(侵删)#include <iostream>#include <string.h>#include <algorithm>#include <stdio.h>using namespace std;const int N = 500005;struct Node{ int v,order;//v为数字原来的值,order为数字原来的序号};int n;int c

2016-07-28 20:12:19 425

原创 树状数组 ( 求逆序数 )——Bubble Sort ( HDU 5775 ) ( 2016 Multi-University Training Contest 4 1012 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5775分析: 给出N个数,将这几个数进行题中所述的“冒泡排序”,求每个数在排序过程中(包括始末状态)所达到的坐标的最大差值。题解: ①我们可以先求出每个数在排序过程中所能达到最靠后的位置 loc ,然后 loc - min ( 起始点,终止点 ) 就是要求的最大差值。②而每个点能移动到的最靠后

2016-07-28 20:05:45 459

原创 扩展KMP ( Next数组 )——Simpson's Hidden Talents ( HDU 2594 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2594分析: 给出两个字符串S1,S2,求出一个最长子串(既是S1 的前缀又是S2的后缀),一开始是打算用完整的扩展KMP去做,但是结果迷之WA,后来改成合并字符串,把S2接S1后面,然后获取整个字符串的Next数组来做。题解:从strlen(s1)的地方开始遍历Next数组,这个时候找S[str

2016-07-28 11:08:26 568

转载 扩展KMP学习

模板转自: http://blog.csdn.net/dyx404514/article/details/41831947 (侵删)(扩展KMP的详细介绍也在里面)next数组计算const int maxn=100010; //字符串长度最大值 int next[maxn],ex[maxn]; //ex数组即为extend数组 void GETNEXT(char *str)

2016-07-28 09:51:06 538

原创 网络流 ( 最小费用最大流 )——Going Home ( HDU 1533 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1533分析: 给出一个网格图,H代表房子,m代表人,两者数量相等,人每移动一格花费1$,求所有人走到房子里所需要的最小花费。利用最小费用最大流来做。题解:建图: ①从S点到每个人建边,容量为1,费用为0; ②从每个人到每个房子建边,容量为1,费用为曼哈顿距离; ③从每个房子到T建边,容量为

2016-07-27 21:33:57 773

原创 网络流 ( ISAP+建图 )——A Plug for UNIX ( POJ 1087 )

题目链接: http://poj.org/problem?id=1087分析:给出k个设备,每个设备对应一种插头,再给出n种插板(每种一个)和m种适配器(每种数量无限),只有插头插板相同编号才能插入,适配器可以转换插头编号,求最少由几个设备插不上。题解: 因为输入的设备名称和插头插板都是字符串所以,需要用到map转换乘数字。从S建立到k个设备的边,容量为1; 从k个设备建立到其对应插头的边

2016-07-27 17:20:58 373

原创 网络流( ISAP + 拆点 )——Dining ( POJ 3281 )

题目链接: http://poj.org/problem?id=3281分析: 一头牛只吃指定的几种食物或饮料,但是每一种食物和饮料都只有一个,给出N头牛及其要求,F种食物和D种饮料,问最多可以满足多少头牛的需要(饮料和食物都满足需求)。题解: 1.建图:需要将每头牛拆成牛1和牛2,然后建立一个源点S,从S出发作边连接每一个食物,容量为1。然后从食物出发向和其对应的牛做边,容量为1。再连接

2016-07-27 14:02:39 549

原创 网络流 (基础学习)

网络流流网络G(V,E)是一个有向图,其中每条边( u, v )∈E 均有一非负容量 c( u, v ) ≥ 0,规定:若 u , v ∉E,则 c( u, v ) = 0。网络中由两个特殊点: 源点S和汇点T网络中的边相当于是粗细不同的水管,c( u, v ) 相当于是水管的直径。流网络G的流是一个实值函数 f : V×V -> R,且满足下列三个性质: (1)容量限制:对于∀

2016-07-27 13:59:29 958

转载 博弈论——Life Winner Bo ( HDU 5754 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5754分析: 给出国际象棋中四种棋子:王,后,车,马;按照国际象棋中的走法,从(1, 1)走到(N, M)点,B先走,G后走,谁赢输出谁的名字,平局输出D。题解: 直接画图分析每种棋子的必胜策略: ①王。首先注意一个3*3的棋盘,开始在(1,1),问走到(3,3)谁有必胜策略。穷举所有情况

2016-07-26 21:12:05 334

原创 数学 ( 微分方程+物理问题:狐狸追兔 )——Rower BO ( HDU 5761 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5761分析: 小船从(a, 0)出发,要抵达正下方的原点(0, 0)处,小船静水速度为V1且方向始终指向原点,水流速度为V2,求抵达时间t。据竞赛同学告知,这是一道高中物理竞赛中的狐狸追兔问题,然并卵,并不会 T^T解析: 列出极坐标方程: r = -v1 + v2cosα α = -v2

2016-07-26 20:07:51 3215

转载 计算几何 ( 平面欧拉定理+大数运算 )——UVA 10213

模板及内容转载自 http://blog.csdn.net/metaphysis/article/details/6457966#comments(侵删)题目: 分析:一个圆被圆上 n 个点的连线所划分,能得到的最大区域数是 1 + C(n, 2) + C(n, 4)。具体可参见 维基网页 http://en.wikipedia.org/wiki/Dividing_a_circle_into

2016-07-25 21:38:19 621

原创 计算几何 ( 凸包 )——Wall ( HDU 1248 )

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1348分析: 给出N个点,求距离这N个点围成的多边形距离为L的围墙的周长。可以得出,这个周长就是多边形周长加上一个圆的周长。多半形周长可以先求出凸包点集,然后依次累加距离即可。然后这个题需要注意输出格式!最后一个输出数据不用加两个换行!!!题解: 1.求凸包:int cmp(point a,

2016-07-25 20:15:05 402

原创 RMQ+二分——GCD ( HDU 5726 ) ( 2016 Multi-University Training Contest 1 1004 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5726分析: 给出一串数,然后进行区间查询,每次查询一个区间的gcd,并且要求同时输出和这个区间gcd值相等的其它区间的个数。题解: 1.RMQ快速区间查询:(此处查询的是GCD)int dp[Maxn][21];//dp[i][j]表示从 number[i]开始,长度为2^j次的区间的最值

2016-07-25 17:28:09 466

原创 计算几何 ( 求凸包,计算三角形面积 )——最大三角形 ( HDU 2202 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2202分析: 给出平面上的N个点,在其中找出三个点,使得其构成的三角形的面积最大。题解: 先用找出凸包上的所有点,然后一次枚举遍历即可。1.求凸包:int cmp(point a, point b) //水平排序{ if(a.x==b.x)return a.y<b.y;

2016-07-25 14:25:21 2694

原创 计算几何 ( 求两圆相交面积 )——Open-air shopping malls ( HDU 3264 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3264分析: 给出N个圆的圆心坐标和圆半径,然后以其中一个圆心做一个大圆要求覆盖所以圆并使得覆盖面积大于被覆盖圆的1/2,求该大圆的最小半径。 因为N最多为20个,我们可以直接搜索每一个圆心,然后二分查半径范围,直到确定半径小于误差。题解:1.建立圆:const double eps = 1

2016-07-25 11:30:16 907

原创 计算几何 ( 求多边形面积 )——改革春风吹满地 ( HDU 2036 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=2036分析&&题解: 给出一个多边形的顶点数N和这N个顶点的坐标(坐标为整数,所以注意要将 点结构体里的类型换成int,否则用C读取不进去!!!),然后直接套模板计算即可。计算多边形面积://vcount 为定点数,p[]存储定点,从0开始double Area(int vcount, po

2016-07-24 17:29:40 414

原创 计算几何 ( 判断线段相交 )——土地划分( FZU 1015 )

题目链接: http://acm.fzu.edu.cn/problem.php?pid=1015分析&&题解: 需要注意不少细节,首先需要判断两条线段是否重合,然后考虑起点和终点重合的情况(结果需要减1),然后还是继续套模板。判断线段相交 (包括端点)AC代码:#include <iostream>#include <cstring>#include <cstdio>#includ

2016-07-24 17:06:00 401

原创 计算几何 ( 判断线段相交 )——You can... ( HDU 1086 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1086分析&&题解: 给出N条线段,每条线段告诉你起始点和结束点,判断这N条线段构成多少条交点,不同线段交于一点可以被重复计算。这就非常简单了,直接模板过去。判断线段相交(包括端点):double multiply(point sp, point ep, point op) //得到线段(sp

2016-07-24 15:49:07 764

原创 递归搜索 ( 水题 )——A Rational Sequence ( UVA 7363 )

题目链接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5385分析&&题解: 给出一个数,计算它在这颗树中的序号,因为,这颗树的子节点都是由根节点推出的,那么我们可以从这个数反推其父节点,知道推到根节点,然后递归回去的时候开始计算树

2016-07-24 15:41:47 679

原创 线段树(区间更新与区间查询)——Just a Hook ( HDU 1698 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1698分析&题解:不多说,这类水题都放模板1.线段树标准预处理:#define lc (d<<1)#define rc (d<<1|1)#define mid ( l+r >>1)//l,r表示整个区间范围2.建树:#define Max 100005int a[Max];struct Tr

2016-07-23 14:57:27 380

原创 线段树(区间最大值查询和点修改)——I Hate It ( HDU 1754 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1754分析&&题解:直接套模板即可,需要注意的是得用C输入。(T^T,C++输入直接T超3000,C输入瞬间800+,非人哉)1.线段树标准预处理:#define lc (d<<1)#define rc (d<<1|1)#define mid ( l+r >>1)2.建树:const int

2016-07-23 14:23:08 404

原创 树状数组 ( 基础篇 )——敌兵布阵 ( HDU 1166 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1166分析: 输入一堆数,范围小于50000,要求对其进行修改具体元素,区间求和两种操作。一看就是树状数组。题解:先来一发树状数组的基本模板:int TreeArray[40005],N;int lowbit(int i)//lowB操作!!!{ return i & (-i);

2016-07-22 21:00:21 455

原创 欧拉定理——PowMod ( HDU 5728 )(2016 Multi-University Training Contest 1 1006)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5728分析: 题中有 k = ∑(m,i=1) φ(i∗n) mod 1000000007,即求和函数 sum(n, m) = ∑(m,i=1) φ(i∗n) mod 1000000007. 那么考虑将质因子p的贡献单独处理,可以得到 sum(n, m) = φ(p) × sum(n/p,

2016-07-22 20:01:13 491

原创 计算几何(组合计数+向量排序)——Eureka ( HDU 5738 ) ( 2016 Multi-University Training Contest 2 1005 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5738分析: best set 意为全部共线的一个点集,所以题目转换为给出一堆点,求出里面全部共线的点集的数量。题解:1.判断是否共线,采用记录向量的方式:struct node{ int dx, dy, num;//num为数量 node(){} node(int

2016-07-22 16:51:20 555

原创 暴力交叉匹配——La Vie en rose ( HDU 5745 )(2016 Multi-University Training Contest 2 1012)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5745分析: 给两串字符,一串目标字符,一串匹配字符,匹配字符可以前后交换,然后输出匹配位置。过的人很多,所以应该就是暴力搜索。题解: 由两种匹配方式,直接匹配,如果不行,可以和后一个位置匹配(因为匹配字符串可以前后交换,但每一个字符只能交换一次)。所以这里加一个判断直接暴力搜索AC代码:

2016-07-22 15:06:35 450

原创 数学——Acperience ( HDU 5734) ( 2016 Multi-University Training Contest 2 1001 )

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5734分析: 给出一个已知向量W = ( w1, w2, …, wn ),和一个不确定向量B = ( b2, b2, …, bn )(bi ∈{+1, -1}),还有一个缩放因子α≥0。求||W-αB||^2的最小值 Note: ||X|| = √x1^2+⋯+xn^2 (X= x1, x2,

2016-07-22 12:08:28 318

原创 树形DP——Rebuilding Roads ( POJ 1947 )

题目链接: http://poj.org/problem?id=1947分析: 求最少删除多少边才能得到一颗含有P节点的子树。从根节点开始往下推能得出dp数组(见问题三)。题解:1.用vector建树,存储:for(int i=0;i<=n;i++) vec[i].clear(); //每次先清空vectorfor(int i=1;i<n;i++){ int a,b

2016-07-22 11:10:17 343

原创 树形DP总结

状态转移方程:题型一Q:给出一颗树,每个节点有其价值,如果父节点在,子节点就不能存在,然后求选哪些点能得到最大价值。A:从问题入手,先得出dp[i][j] 表示第i个节点,状态为j (0:不选,1:选)的情况下的价值。 然后再推导除出状态转移方程:dp[i][0] = max ( dp[i-1][1], dp[i-1][0] ) dp[i][1] = dp[i-1][0]题型二Q:给出一颗

2016-07-21 21:45:51 916

二分图判断【染色法】

怎么判定一个图是否为二分图 ? 从其中一个定点开始,将跟它邻接的点染成与其不同的颜色,最后如果邻接的点有相同颜色,则说明不是二分图,每次用bfs遍历即可。

2019-03-25

空空如也

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

TA关注的人

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