自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 POJ 1321 棋盘问题

#include#includeint check(int a,int m){ int b=0; while(a>0) { if(a&1) b++; a>>=1; } if(b==m) return 1; return 0;}int main(){ int n

2015-01-30 19:28:25 581

原创 hdu 3001 Travelling

/*题意:说一个人想游玩n个城市,每个城市最多走两次,问最短的距离*/#include#include#define MMax 2000000000#define Min(a,b) a>b?b:aint dp[59050][15],cs[59050][15],dis[15][15];//dp[i][j]定义的状态是在i状态时到达j的最短的,cs[i][j]表示在i状态下的经过j的

2015-01-30 11:05:23 755

原创 TSP+dp+状态压缩的本质

/*dis[1][2]=1;dis[1][3]=3;dis[1][4]=6;dis[2][3]=2;dis[2][4]=5;dis[3][4]=3;二进制从右往左依次代表的1-n,0代表没有经过1代表经过了,比如3化成二进制为11代表经过了1和2.dp[i][j]代表的状态为在状态i的时候从1出发最后到达j的值只经过一个点dp[1][1]=0//初始化,其他的都为无穷大

2015-01-29 17:11:36 675

原创 宏定义放在结构体里

#includestruct node{    #define Max(a,b) a>b?a:b//个人感觉宏定义放在结构体里和放在放在最上面是没有区别的,可能是为了读代码方便    int x,y;};struct node2{    int x,y;};int main(){    node a;    node b;    scanf(

2015-01-27 09:43:42 2619

原创 HDU 3681 Prison Break

/*给一个n*m的图,F代表起点,G代表充电池,一个充电池只能用一次,但可以用多个充电池,只能把电池充到最大(原始的电量),可以走过不用,D不能走,问的是把所有的Y走一遍的原始的电量是多少dp+状态压缩+二分+bfsdp[i][j]表示的状态是在i状态到达j的最大的电量*/#include#include#include#define Max(a,b) a>b?a:b#

2015-01-26 14:51:08 557

原创 HDU 4539 郑厂长系列故事――排兵布阵

/*曼哈顿距离的定义是:两个点的坐标为(x1,y1),(x2,y2),两点的曼哈顿距离为|x1-x2|+|y1-y2|题意:题上要求是两个士兵的距离不能是曼哈顿距离为2,意思就是这个点在同一行同一列不能相间,这个点的左上,左下,右上,右下角不能有士兵.思路:dp+状态压缩dp[i][j][k]定义的状态为i是当前行,j为当前行的状态,k为上一行的状态类似炮兵阵地*/#inclu

2015-01-24 09:45:57 2417

原创 曼哈顿距离

给定两个点坐标为(x1,y1),(x2,y2),|x1-x2|+|y1-y2|为两点的曼哈顿距离,Max(|x1-x2|+|y1-y2|)是切比雪夫距离对于原坐标系中两点间的 Chebyshev 距离,是将坐标轴顺时针旋转45度并将所有点的坐标值放大sqrt(2)倍所得到的新坐标系中的Manhattan距离的二分之一。

2015-01-24 08:28:55 2474 1

原创 hdu 2888 Check Corners

/*题意:给出m,n代表给出长为m宽为n的矩阵,然后给出一个q代表查询的次数,然后q行每行给出一个 r1, c1, r2, c2 且满足(1 <= r1 <= r2 <= m, 1 <= c1 <= c2 <= n)输出这个矩形范围内的最大值,如果最大值是四个顶点某一个的话就输出yes否则输出no*/#include#include#define Max(a,b) a>b?a:bin

2015-01-23 18:25:00 582

转载 poj 3311

//Floyd + 状态压缩DP//题意是有N个城市(1~N)和一个PIZZA店(0),要求一条回路,从0出发,又回到0,而且距离最短//也就是TSP(旅行商)问题,首先不难想到用FLOYD先求出任意2点的距离dis[i][j]//接着枚举所有状态,用11位二进制表示10个城市和pizza店,1表示经过,0表示没有经过//定义状态DP(S,i)表示在S状态下,从0开始到达城市I的最

2015-01-23 14:42:44 436

原创 HDU 1565 方格取数(1)

/*dp+状态压缩和炮兵阵地类似*/#include#include#define Max(a,b) a>b?a:bint dp[25][20000],s[20000],len,Map[25][25],n;int check(int m){ if(m&(m<<1)) return 0; return 1;}void Inint(){

2015-01-22 08:28:24 745

原创 大白书伸展树学习笔记

void splay(Node * &o,int k){    int d=o->cmp(k);//cmp函数比较的是k和o->ch[0]->s+1的大小    if(d==1) k-=o->ch[0]->s+1;    if(d!=-1)    {        Node *p=o->ch[d];        int d2=p->cmp(k);        i

2015-01-20 09:27:24 974

原创 指向指针的引用

#includeusing namespace std;int main(){    int a=1;    int *p=&a;    int * & t=p;//引用简单点说就是一个变量的别名,它的本质是一个指针,t和p都是指向同一个变量,当t的内容变了的时候,p也跟着变    cout     return 0;}

2015-01-17 11:36:55 656

原创 后缀数组之最长公共前缀

#include#define maxn 100int main(){    int rank[maxn],height[maxn],sa[maxn]= {0,3,1,4,2},s[maxn]= {1,2,3,2,3};//s串可以看成abcbc    int i,j,k=0;    for(i=0; i        rank[sa[i]]=i;    for(i

2015-01-15 20:53:31 1058

空空如也

空空如也

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

TA关注的人

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