自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

(๑•̀ㅂ•́)و✧

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

原创 HDU 5328 Problem Killer

分析:给你n个数字,判断最长的连续等差数列的数或等比数列的数的个数有多少个。等差:a[n]+a[n-2]=2*a[n-1],等比:a[n]*a[n-2]=a[n-1]*a[n-1],要注意的是判断时要分开判断,否则会WA,比如1 2 4 6,要是一起判断的话就错了。# include __int64 a[1000010]; int main() { int i,j,n

2015-07-31 15:03:04 391

原创 HDU 5326 Work

分析:一个公司有n个人,给你n-1对关系a b,代表a管理b,问你有多少人管理k个人。遍历每个人管理的人的数量count,如果count==k,ans++;遍历的思想就是BFS。# include # include # include typedef struct node { int num; struct node *next; }Node;

2015-07-28 20:05:06 623

原创 HDU 5319 Painter

分析:给你一个空白的图,你可以随意选几个连续的斜格子画线,\ 都是红色的,/ 都是蓝色的,每个格子只能被红线和蓝线涂一次,如何一个格子既有红色又有蓝色,就变成了绿色,给定你一个图,问至少画几条线。我们可以再拿一张"纸"g[60][60]来照着原图map[60][60]划线,每次都画能画的最长的长度。# include # include int main() { int

2015-07-28 19:58:11 514

原创 HDU 5317 RGCDQ

分析:F(x)就是x有几个不同的质因数,比如210=2*3*5*7,所以F(210)=4,让你求区间[l,r]内最大的GCD(F(i),F(j)),(l1000000,所以F(x)# include # include int count,prime[1000]; int f[1000010],a[1000010]; int F(int n) { int i,a

2015-07-28 19:50:20 415

原创 HDU 2138 How many prime numbers

分析:题目就是让你求给定的n个数中有多少个是素数,用一般的方法要么超时要么超内存,可以用 miller_rabin 算术来快速的判断一个数是不是素数。# include # include __int64 ModMul(__int64 a,__int64 b,__int64 n) { __int64 ans=0; while(b) {

2015-07-25 20:51:21 381

原创 POJ 3090 Visible Lattice Points

分析:问你从原点(0,0)向区间0# include int Euler(int n) { int i,ans=1; for(i=2;i*i<=n;i++) { if(n%i==0) { n/=i; ans*=i-1; }

2015-07-25 20:47:15 464

原创 HDU 5301 Buildings

分析:给你一个n*m的矩形,和一个黑点(x,y),注意这个黑点不能当做空地来建窗户的,能用来建窗户的只有大矩形的4条边,这个黑点可以看做是一个1*1的实心石柱。让你最小化小矩形的面积使小矩形覆盖除黑点的n*m的大矩形,问这小矩形中面积最大的矩形。如果大矩形是边长为奇数的正方形,黑点又在正中间,那么答案就是n/2,可以画个图一下就看出来了,否则先将矩形转成n如果没有黑点的话,答案是(n+1)/2,但

2015-07-25 20:20:37 326

原创 HDU 1010 Tempter of the Bone

分析:迷宫问题,要求从S恰好走t步到达D,如果从S到D的最短距离大于t或者S到D的距离和t一奇一偶都不可能到达,直接输入NO,否则Dfs搜索所有可能的路如果存在满足条件的就标记flag=1。# include # include # define abs(x) (x>0?x:-(x)) int dx[4]={0,1,0,-1}; int dy[4]={1,0,-1,0}; in

2015-07-24 21:23:41 323

原创 HDU 5305 Friends

分析:给你n个人,和m个朋友关系,让你求满足每个人的线上和线下的朋友数相等的方案有多少种。如果有一个人的朋友数为奇数,不存在可行解,输出0,否则令每个人未确认的线上朋友on[i]和线下朋友off[i]的个数相等都为du[i]/2,然后从第一条边开始Dfs搜索,如果第num条的连的两个点都有未确认的线上朋友,则确认顶点u,v为线上朋友,所以未确认的on[u]--,on[v]--然后继续搜索下一条边,

2015-07-24 21:14:09 361

原创 HDU 5289 Assignment

分析:给你n个数字,求有多少个连续的区间,满足区间内的最大值和最小值的差小于k。假如已知前n-1个数满足第n-1个数的最大区间为[i,n-1],区间内的最大值的下标为max,最小值为min,如果第n个数的值介于区间[i,n-1]的最大值和最小值之前,那么区间[x,n](i# include int a[100005]; int Max(int i,int j) { i

2015-07-24 20:42:47 398

原创 HDU 5288 OO’s Sequence

分析:题意是给你n个数字,全部区间[i,j](1# include # include # define mod 1000000007# define MAX(x,y) ((x)>(y))?(x):(y)# define MIN(x,y) ((x)<(y))?(x):(y) int a[100005],l[100005],r[100005],mark[100005]; int

2015-07-24 20:12:56 455

原创 简单快速的算法

1.最大公约数与最小公倍数 int Gcd(int a,int b)//快速求a,b的最大公约数 { int r; while(b) { r=a%b; a=b; b=r; } return a; } int lcm(int a,int b)//快速求a,b的最小

2015-07-17 20:58:05 1480

原创 POJ 1166 The Clocks

分析:已知9种操作,每种操作都会影响几个时钟,现给你9个时钟的初始状态,让你求出最少的操作方案使这9个时钟都调整为12点。根据已知的9种操作写出一个二维矩阵a[9][9],第j列表示第(j+1)种操作,第i行表示影响第(i+1)个时钟,如果第j种操作对第i个时钟有影响,a[j-1][i-1]=1,否则为0。设最小的调整方案为第1个时钟到第9个时钟分别调整ans[0]到ans[8]次,那么(9*9)

2015-07-16 20:29:54 547

原创 POJ 2663 Tri Tiling

分析:当n为奇数时,肯定是不能铺满的,当n为偶数时,可以用递推得出,过程很有意思,可以自己想想。# include int main() { int i,n,a[35],s[35]; a[0]=1;s[0]=1; for(i=1;i<=15;i++) { a[i]=2*s[i-1]+a[i-1];

2015-07-14 20:34:35 703

原创 POJ 2887 Big String

分析:给你一串字符,让你进行一系列插入和查询操作,查询时输出第p个字符,数组插入慢,链表查找快,于是我们用块状链表。# include # include # include typedef struct node { int len; char a[1005]; struct node *next; }Node; int max;

2015-07-13 20:49:26 573

原创 POJ 2492 A Bug's Life

分析:给你多只虫子的关系,判断有没有gay,一开始初始化他们都没有对象relative[i]=0;如果a,b都没有对象,那么a的对象是b,b的对象是a;如果a有,b没有,b的对象就是a,把b加入到a的对象的集合中;b有,a没有同理;如果a,b都有对象,就把他们加入到各自的对象集中,一只虫子的第一个对象为老大,后来加进来的都要归他管。# include int flag,root[2005

2015-07-13 20:42:58 524

原创 POJ 2481 Cows

分析:每一头牛都一片领域[s,e]如果一头牛的[s,e]包含另一头牛的[s,e],那么就比另一头牛强,于是我们先把牛排序,e大的排在前,相等的话就s小的排在前,这样排在前面的牛一定不会比排在后面的牛弱,如果两头牛的s和e都相等的话,那么比他们强壮的牛的数量也相等,不然的话求比一头牛强的数量只要求出s# include # include # include using namespa

2015-07-13 20:23:28 382

原创 POJ 2352 Stars

分析:给你n颗星星,让你输入星星等级分别为0~n-1的星星数,一颗星星等级就是这个星星左下角的星星数,不包含这颗星星本身,包含在同一水平线或同一竖直线上的点。因为星星的y是递增的,y相同则x递增,所以一颗星星的等级就是除这颗星星外的其他星星的横坐标小于等于这颗星星的星星数。可以用树状数组很快的解出来。# include # include int c[32005],level[3200

2015-07-13 20:07:04 457

原创 POJ 1056 IMMEDIATE DECODABILITY

分析:题意很简单,就是判断有没有一串编码是另一串的前缀,这让我想到了赫夫曼编码(比如对于一串字符串含有ABCDEFG,用二进制字符来代表字母,先构造一颗赫夫曼树,从根节点开始走,往左走是0,往右走就1,一直走到叶节点,从根节点到叶节点经过的路径就是一个叶节点字母的二进制字符,因为每个字母都是叶节点,所以不存在一个字符的编码是另一个的前缀)。于是我们用数组来表示满二叉树,如果从根节点到一个节点的路径

2015-07-13 19:33:27 472

原创 HDU 2082 找单词

分析:举个例子:比如第10个字母有5个,要你找前10个字母组合值为40的,只需找前9个字母值分别为40-0*10,40-1*10,40-2*10,40-3*10,40-4*10相加就可以了,所以前i个字母,值为j的组合数s[i][j]=s[i-1][j-k*i],k为第i个字母的个数 ,且值j-k*i>=0.# include # include int main() {

2015-07-12 14:18:30 1748

原创 POJ 2155 Matrix

题意:给你一个N*N的矩阵,一开始矩阵内的数字全为0,再给你一个矩形坐标,左上角为(x1,y1),右下角为(x2,y2),要你改变这个矩形中的数字,如果是1的话,改为0,如果是0改为1,查询时给你矩阵中的一个点的坐标(x,y),要你输出这个点的值。分析:改变矩形中的点,可以看做是4次变化:分别以(x1,y1),(x2+1,y1),(x1,y2+1),(x2+1,y2+1)为左上角,(n,n)为

2015-07-10 22:30:53 454

空空如也

空空如也

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

TA关注的人

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