自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

hahahaha

路漫漫其修远兮~

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

原创 URAL1297Palindrome(最长回文子串 、后缀数组最长公共前缀+RMQ)

题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1297题目大意:给一个字符串。求出其最长回文子串。思路:思路来自论文例题。首先将字符串倒转以后连接在原字符串的后面,中间添加上一个'$'字符。接下来我们只需要枚举i从0到n-1,对于字符i来说以其为中心的最长回文子串。当回文串为奇数的时候,我们只要比较i和2*n

2016-08-26 15:41:49 851

原创 poj 1743 Musical Theme(后缀数组、二分)

题目链接:http://poj.org/problem?id=1743题目大意:求不重叠的最长相同变化的子串,也就是最大长度的不重叠重复子串,输出其长度。思路:可以利用后缀数组中的height数组。height数组的性质:hegiht[i]表示后缀排名i和i-1的最长公共子序列。现在要求不重叠的重复子串,我们可以将height分组,对于hegiht[i]>=p来说,既然已经

2016-08-23 16:00:01 485

原创 hdu5862Counting Intersections(树状数组)

题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5862题目大意:给一些与坐标轴平行的线段,问有多少个交点。题目保证线段不会有重合的端点。范围:n思路:根据题目的要求,我们可以知道交点一定是横线和竖线产生的。我们可以假设有一条扫描线从左往右扫过去。所以我们对于横线来说,遇到一个横线的左端点,就将他的y进行++

2016-08-22 18:03:17 694

原创 poj 2826 An Easy Problem?!(线段相交、模拟)

题目链接:http://poj.org/problem?id=2826题目大意:给两条线段,然后有雨水落下来,问这两条线段组成的容器里面最多放置水的面积。思路:如果线段不相交,或者有一条线段是与x轴平行的,那么肯定不能容下水。能盛下水的情况就是两线段相交,然后有2个点在交点上方。但是有一种情况是,从y轴往下看的时候,有一条线段完全覆盖住了另一条,这个时候也是没有水进入的。

2016-08-21 15:55:55 433

原创 poj1266Cover an Arc.(三角形的外心)

题目链接:http://poj.org/problem?id=1266题目大意:给三个点,求出能够覆盖由这三个点组成的圆弧的最小矩形面积。思路:根据三个点可以组成一个三角形,那么就能算出这个三角形的外心。然后就能判断出是优弧还是劣弧,进行计算。注意他的矩形要求是整数,所以要用ceil和floor进行取整。可能会有精度误差,可以考虑ceil时减去eps,floor时加上e

2016-08-17 20:44:11 433

原创 poj 3304Segments(直线与线段的相交关系)

题目链接:http://poj.org/problem?id=3304题目大意:给你一些线段,问你能不能找出一条直线,使得这些线段投影到这条直线上至少有一个公共交点。思路:这题转化一下其实就是能不能有一条直线穿过所有的线段。由于N比较小(n代码:#include#include#include#include#define PI acos(-1.0)#de

2016-08-15 21:39:55 453

原创 poj3348Cows(凸包求多边形面积)

题目链接:http://poj.org/problem?id=3348思路:先对点进行排序,然后求出凸包。对凸包上的点进行面积计算,即将多边形面积分成多个三角形,利用叉积计算即可。代码:#include#include#include#include#define PI acos(-1.0)#define eps 0.00000001using namespac

2016-08-15 21:27:26 833

原创 hdu5794A Simple Chess(组合数学)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5794题目大意:给一个n*m的棋盘,要求从(1,1)走到(n,m),只能以日字的形式走过去,然后不能经过某些坏点,问有几种走法。范围:n,m思路:和上一题的模型很相似。具体见http://blog.csdn.net/aaaaacmer/article/details/52

2016-08-09 21:44:33 550

原创 codeforces560EGerald and Giant Chess(组合数学)

题目链接:http://codeforces.com/contest/560/problem/E题目大意:从(1,1)走到(h,w),要求不能经过题目中所给的坏点,问最后有几种走法。思路:如果从(1,1)走到(x,y),可以知道有C(x-1+y-1,x-1)种。然后考虑将走到坏点的情况减掉。定义一个f[i]为从出发点到坏点i且不经过其他坏点的路径走法。对于某个坏点i

2016-08-05 21:26:55 691

原创 hdu5795A Simple Nim(SG函数、打表找规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5795题目大意:给n堆石子,A和B两个人可以分别从任意一堆里面取任意石子。也可以选择将一堆石子分成新的三堆。谁最后拿不到石子谁输。思路:如果不分堆就是简单的Nim游戏。直接取异或和即可。现在分堆我们可以发现,如果一堆石子个数为7,那么分成1,2,4以后可以对局势不造成影响。所以我

2016-08-05 21:18:08 411

原创 poj3261Milk Patterns(后缀数组)

题目链接:http://poj.org/problem?id=3261题目大意:给一个字符串。问这个字符串中可重叠子串出现的次数超过K次的最大子串长度。思路:利用后缀数组height数组性质,我们可以知道相邻子串的公共前缀x,只要x的出现次数大于等于K就可以了。那么我们可以二分长度然后判断是否存在这种情况即可。代码:#include#include#include

2016-08-03 21:30:46 633

原创 hdu3465Life is a Line(树状数组)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3465题目大意:给一个开区间(l,r),给n个直线,问这些直线在这段区间里面有多少个交点。思路:对于两条直线来说,我们可以求出他们分别于y=l,y=r的交点a,b,c,d。如果ad或者a>c&&b注意要把与y轴平行的数量也算进去。代码:#include#includ

2016-07-31 20:55:01 501

原创 hdu5738Eureka

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5738题意:其实就是叫你求几个点共线的集合。当然要考虑重点。思路:主要就是要解决在一条线上,重点和非重点对答案的贡献。如果直接算的话,两者没有什么大差别。但是重点的情况会算重复。再减掉的话十分复杂。这里参考了一个思路:对所有点排序后,对每个点进行枚举。对于每个点来说,

2016-07-28 10:04:13 469

原创 hdu1251 统计难题(Trie树入门题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1075Trie树的入门题。代码:#include#includeconst int maxnode=1000005;const int sigma_size=26;struct Trie{ int ch[maxnode][sigma_size]; int sz; int

2016-07-25 20:59:07 1014

原创 poj2060Taxi Cab Scheme(最小路径覆盖)

题目链接:http://poj.org/problem?id=2060思路:要求最少派几辆车。那么我们就可以先把那些可以接上的车辆订单都建边,建成一个有向无环图,然后我们可以利用二分图最大匹配计算出最大匹配p,然后就可以算出需要的车辆为n-p。代码:#include#include#include#includeusing namespace std;const

2016-07-22 20:20:12 484

原创 poj2195 Going Home(最大费用最小流)

题目链接:http://poj.org/problem?id=2195求最大流最小费用。主要是加边,先从源点到各个人m,费用为0流量为1,。然后从m到H,费用为距离,流量为1.最后从H到汇点,费用为0,流量为1.代码:#include#include#include#include#include#define inf 0x3f3f3f3f#define

2016-07-22 20:12:35 345

原创 hdu3549Flow Problem(最大流 模板题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549网络流最大流模板题。#include#include#include#define rep(i,a,b) for(int i=a;i<=b;i++)#define inf 0x3f3f3f3f#define MM 10005using namespace std;//

2016-07-22 20:08:27 446

原创 hdu 5678 ztr loves trees(dfs序、主席树静态第k大)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5678题目大意:给出一颗根为1的树,有n个点,每个点都有一个value值。然后给出n-1条边,表示有两个点之间是相连的,最后形成一颗树。然后给出m个询问,每次询问节点x以下所有节点形成的序列的中位数。范围:n思路:主席树模板题。对于节点x以下的节点形成的序列求中位数,

2016-05-25 14:36:47 591

原创 组合数取模(卢卡斯定理、模板)

卢卡斯定理:用来求C(n,m)%p。p要求为素数,且不能太大。复杂度为O(logp(n)*p)。代码:#include #include #include #include #include #include #define C 240 #define TIME 10 #define LL __int64 using namespace s

2016-05-24 14:42:41 1605

原创 hdu 3944 DP? (预处理+卢卡斯定理)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3944题目大意:给一个杨辉三角。然后给出行n和列m,问从第n行第m列往上走到顶部,所得的值的取模p后最小的和。范围:n,m思路;很容易想到肯定是往边上走,然后一直往上走。因为边上都是1,而m>=n/2的时候,明显可以对称到左边来,所以只要算一边就好了。然后就是组合数的

2016-05-24 14:34:50 441

原创 hdu 5698瞬间移动(组合数取模、卢卡斯定理)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5698数据范围:2≤n,m≤100000,mod=1000000007。思路:打表可以发现这个方法数是一个杨辉三角。根据杨辉三角的性质,可以知道杨辉三角里面第n行,第m列的数值为C(n-1,m-1)。所以我们只要将题目所给的行列转化一下,然后计算组合数即可。

2016-05-23 21:47:37 949

原创 poj 2104 K-th Number(主席树,静态第k小)

题目链接:http://poj.org/problem?id=2104思路:主席树。根据定义,对于序列[1…n]的每一个前缀[1…i](i对于询问操作,因为我们我们求的是第k小,所以利用二分查找。如果在[1,n]的区间里面,可以先看左子树上的数字是否大于等于k,如果是就去左子树,否则就去右子树。那么到[l,r]的区间里面,其实就是T看[r]-T[l-1]的值,然后和k去比较

2016-04-26 20:55:52 439

原创 NJUST 谁才是最强战舰!(博弈论-Nim游戏)

题目链接:https://icpc.njust.edu.cn/Contest/749/H/思路:就是Nim游戏里面的一种情况,最后取的那个人输。这种情况下是需要考虑孤立堆的情况,就是全部都是1的时候。其他情况就是按照异或值是否为0判断。另一种情况是最后取的那个人赢,直接判断异或值即可。代码:#include#includeint main(){ int T,i,

2016-04-19 19:47:48 651

原创 zjnu1745 DOMINE(状压dp)

题目链接:http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1745题目大意:在n*3的矩阵里面放置K个1*2的砖块,问砖块覆盖的位置的最大的价值的和。范围:n思路:因为是只有3列,所以可以每一行上面只有最多8种状态。所以我们可以按照行来进行dp,设dp[i][j][k]表示前i行覆盖j个砖块,当前行

2016-03-28 16:04:32 372

原创 hdu5652 India and China Origins(并查集)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5652题目大意:在n*m的矩阵里面,放值为1的山峰。当山峰连起来能够封锁整个m列的时候,问最早是什么时候。范围:n,m思路:可以用并查集存下每个点能向左延伸的距离和向右延伸的距离。当有一个点为1的时候,看他8个方向是否有为1的山峰,如果有就将他们并入同一个集合,然后更新他

2016-03-28 13:38:10 589

原创 hdu5651 xiaoxin juju needs help(组合数学)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5651题目大意:改变所给字符串里面的字符的任意顺序,问组成回文串的方案数。范围:字符串长len思路:根据回文串的性质,我们可以只考虑前半部分的串的构成。所以最多只有一种字母的个数为奇数。所以剩下的情况就是组合数取几个的方案数的求和了。代码:#include#

2016-03-28 13:30:55 620

原创 poj 2411 Mondriaan's Dream 铺砖块(状压dp)

题目链接:http://poj.org/problem?id=2411题目大意:有n*m的矩形,现在要往上面铺1*2的小砖块。问能否被铺满,如果能输出铺满的方案数。范围:n,m思路:状压dp。令铺的地方为1,不铺的地方为0。那么要铺满就需要整个矩形都是1。砖块共有3种铺法:1、横着铺,这样的情况就是第j列和第j+1列都为1。2、竖着铺,这样的情况就是

2016-03-23 21:19:21 1562

原创 poj 1185 炮兵阵地(状压dp)

题目链接:http://poj.org/problem?id=1185题目大意:中文题。范围:N 思路:状压dp。还是将炮兵摆放的地方设1,不放的地方设0。因为他对炮兵的攻击范围做了要求,也就是相邻的炮兵位置不能小于2。那么我们就要先筛选出满足这个硬性条件的状态。然后我们可以发现,对于第i行的状态,与上一行以及上上一行有关。所以考虑设一个三维dp

2016-03-23 21:05:46 404

原创 poj3254 Corn Fields(状压dp)

题目链接:http://poj.org/problem?id=3254题目大意:给m*n的玉米地,里面可以放牧,1的位置可以放牧,0的位置不行。相邻的位置不能放牧。问一共有多少种放牧的方法。范围:n,m思路:状压dp。可以为每一个行记录一个状态dp[i][state],表示在第i行的状态state是否满足。所以在当前的第i行,我们可以通过判断各个状态是否与前

2016-03-23 15:18:43 512

原创 zjnu 1762 U(想法、线段树)

题目链接:http://acm.zjnu.edu.cn/CLanguage/showproblem?problem_id=1762题目大意:有n道菜,每道菜分别有两种价格A和B。如果要买k道菜,则除了第一道要花A的价格以外,其他的k-1道菜都以B的价格买下。现在要分别得到买1~n道菜要花的最少的钱。范围:n思路:钱要花最少,在买多道菜的时候我们自然是希望B的价格越小

2016-03-22 21:21:51 656

原创 POJ 2155 Matrix(二维树状数组)

题目链接:http://poj.org/problem?id=2155题目大意:给一个n*n的矩阵,有k个询问。询问分更新和询问操作。更新操作是对某个小的矩阵进行变换,里面的数(0变1,1变0)。#include#includeint c[1005][1005],n;int lowbit(int x){ return x&(-x);}void update(int

2016-03-04 21:48:41 389

原创 Light OJ 1188 Fast Queries(离线树状数组||莫队算法)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1188题目大意:给一串长为n的序列,然后有m个区间询问。要求得到询问区间范围内不同数的种类。范围:n思路:暴力肯定是行不通的了。对于这类问题,我们自然容易想到树状数组。在树状数组上存下不同数的种类实现在logn的复杂度内解决问题。但是要做一些处理,

2016-03-03 21:53:49 607

原创 Codeforces 633D Fibonacci-ish(暴力)

题目链接:http://codeforces.com/contest/633/problem/D题目大意:给一个长为n的序列,求出fn=fn-1+fn-2(满足斐波那契)成立的最长序列。范围:n思路:可以暴力。每次任选两个数,然后相加以后看他们的和是否存在,以此类推……。注意到0的个数其实不是那么重要(除非全部都是0),所以一般情况下只要有1个0即可。那么对于两

2016-03-01 21:53:24 590

原创 codeforces #343 div2 D. Babaei and Birthday Cake(DP+离散化+线段树优化)

题目链接:http://codeforces.com/contest/629/problem/D题目大意:给n个圆柱体蛋糕,现在要堆一个大蛋糕,要求体积大的放在上面同时编号大的不能放在编号小的下面。问最大的体积是多少。范围;n思路:很容易想到:dp[i]=dp[j]+a[i](i>j&&a[i]>a[j])。所以就有了O(n^2)的算法,但是范围太大,会超时。

2016-02-27 19:00:24 541

原创 Codeforces #341 div 2 E. Wet Shark and Blocks(矩阵快速幂)

题目链接:http://codeforces.com/contest/621/problem/E题目大意:给b个block,每个block有n个数,现在从每个block里面选一个数然后首尾串起来组成一个新的数,对这个数取模x以后,问结果等于k的种类数。范围:2 ≤ n ≤ 50 000, 1 ≤ b ≤ 109, 0 ≤ k x ≤ 100, x ≥ 2思路:首

2016-02-25 21:48:25 510

原创 Codeforces 622D Optimal Number Permutation(构造)

题目链接:http://codeforces.com/contest/622/problem/D题目大意:给出1~n的数字,每个数字出现2次。现在重新排列他们,使得能够最小。范围:n思路:对于n来说,有n-n=0,所以n的位置可以任意摆放。现在要使得s最小,我们就考虑构造一个序列,使得这边的每一项都是0。先对n进行分类:1.n为偶数的时候,对于1这类奇数来说

2016-02-16 20:33:46 488

原创 Codeforces 622C Not Equal on a Segment(线段树)

题目链接:http://codeforces.com/contest/622/problem/C题目大意:给一个长为n 的序列,m个询问。每次询问一个区间[l,r]和数x。问这个区间里面任意一个不是x的数的位置。范围:n,m思路:可以考虑线段树。利用线段树维护区间上的最大值和最小值。每次询问时看当前区间上的最大和最小值是否与x不同,如果不同,就先往左子树看,如果左子

2016-02-16 20:25:00 676

原创 nyoj301 递推求值(矩阵快速幂)

题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=301题目大意:计算递推式f(x)=a*f(x-2)+b*f(x-1)+c,求f(n)。范围:0思路:由于n很大,所以不能够直接采用递推的方法。由于是一个方程式,所以可以转化为矩阵乘法,又是一个递推式,就想到用矩阵快速幂解决。矩阵快速幂:就是矩阵的

2016-02-12 17:14:02 716

原创 Codeforces #340 div2 E. XOR and Favorite Number(莫队算法)

题目链接:http://codeforces.com/contest/617/problem/E题目大意:有n 个数,m个询问。每次询问在区间[l,r]里面,有多少种情况使得ai^ai+1^……^aj=k。范围:1 ≤ n, m ≤ 100 000, 0 ≤ k ≤ 1 000 000。思路:对于这类区间上的问题,我们可以获得数组的异或前缀和pre[i]=a1^a2....

2016-02-12 13:49:08 482

原创 Codeforces #341div2 B.Wet Shark and Bishops(暴力)

题目链接:http://codeforces.com/contest/621/problem/B题目大意:给n个点,如果两个点在同一条对角线上面,那么他们就会相互攻击,现在问总共会有多少次攻击产生。范围:n思路:根据组合原理,如果一条对角线上有t个点,那么就是任选2个点来发生一次攻击,所以次数就是C(2,t)=t*(t-1)/2。方法一:所以我可以记录一个点上面

2016-02-11 23:52:51 402

空空如也

空空如也

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

TA关注的人

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