自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 收藏
  • 关注

原创 边数限制最短路

从0到t,经过边数不超过10的最短路.sp[i][k]代表从0到i经过k条边的最短路长度。#include#include#include#include#includeusing namespace std;#define INF 1<<20#define MAXN 1010#define MAXH 10long d[MAXN][MAXN];long sp[MAX

2017-06-29 19:44:43 647

原创 字符串合并

给出一些字符串,合并成一个字典序最小的串。#include#include#include#include#includeusing namespace std;int T,n;string s[10];bool cmp(string x,string y){ return x+y<y+x;}int main(){ int i; cin>>T; while

2017-06-29 18:23:33 244

原创 通配符

*能匹配0个或多个字母,?能匹配任意一个字符。#include#include#include#include#includeusing namespace std;char w[100];char s[100];bool m[51][51];int n;bool match(char *w,char *s){ int i,j; for(i=0;i<=strlen

2017-06-29 18:08:50 281

原创 构造01串满足要求

构造长度为N的01串,满足某个位置到某个位置至少有M个1,问所需1总数最少是多少。以每个命令的终点从小到大排序。#include#include#include#define MAXN 5010#define MAXM 3010using namespace std;int n,m;struct node{ int b,e,t;};int arr[MAXN];no

2017-06-29 16:00:43 1181

原创 poj 3253

贪心。#include#include#include#define MAXN 20010using namespace std;typedef long long LL;int n,l[MAXN];void solve(){ LL ans=0; priority_queue,greater >que; while(que.size()>0) que.pop(); fo

2017-06-28 22:26:51 142

原创 poj 3069 给定半径求覆盖所有点需要的标记的点

#include#include#define MAXN 1010using namespace std;int N,R;int x[MAXN];void solve(){ sort(x,x+N); int i=0,ans=0; while(i<N) { int s=x[i++]; while(i<N&&x[i]<=s+R)i++; int p=x[i-1];

2017-06-28 22:12:38 387

原创 poj3617 生成字典序最小字符串

#include#define MAX_N 2010using namespace std;int N;char S[MAX_N+1];void solve(){ int a=0,b=N-1; int ans=0; while(a<=b) { bool left=false; for(int i=0;a+i<=b;i++) { if(S[a+i]<S[b-i

2017-06-28 21:16:48 302

原创 数据维护

给定一个一维数组,每次可以将一个区间内的元素都加上同一个增量,查询某个区间内的最大元素,查询的同时删除这个最大元素,若有不止一个,删除序号小的。RMQ适用静态数据的查询。线段树适用动态。增加一个懒惰标记,代表节点所代表的区间被覆盖的次数,该区间被覆盖的总次数,需要将该节点向上至根节点的所有覆盖次数加起来。#include#include#include#include#incl

2017-06-27 18:01:56 246

原创 求两个数之间的约数和个数

#include#includeusing namespace std;int ans1,ans2,n,m;int main(){ cin>>n>>m; for(int i=1;i<=n-1;i++) ans1+=(n-1)/i; for(int i=1;i<=m;i++) ans2+=m/i; cout<<ans2-ans1<<endl; return 0;}

2017-06-26 11:51:02 471

原创 POJ 2800

#include#includeusing namespace std;int main(){ long long N,K; while(cin>>N>>K) { long long S,T,i,s,e,ans=0; S=sqrt((double)K); T=K/S; for(i=1,ans=0;i<=N&&i<=T;i++) ans+=K%i; if(N>

2017-06-26 11:46:30 269

原创 树上取数

在树上取n个点,使得权值和最大,并且要满足条件:如果某棵子树两棵或以上的子树有点选中,那么该子树的根也必须选中。树形动态规划。max[i][j][k]代表以i为根的子树选或不选i,最多能选k个点最大收益。#include#include#include#include#include#includeusing namespace std;int map[110][11

2017-06-26 05:44:36 205

原创 飞行

从起点到终点,又不能踩在上面的点,只能飞越过去,飞越的距离有一个最大值,求最少时间。广度优先搜索。#include#includeint queue[1000010][3],mark[110][110][110];char map[110][110];int m,n,d;const int dir[4][2]={-1,0,1,0,0,-1,0,1};void init(){

2017-06-26 00:13:20 214

原创 岩浆地牢

两个人在地牢中移动,问他们相遇的最少步数。一个人移动时另一个人也会移动,不能移动到岩浆上,碰到岩石则不动。广度优先搜索。#include#includeconst int dir[4][2]={-1,0,1,0,0,-1,0,1};int n,m,ans;struct point{ int x,y;};point paris,helen;point queue[1600

2017-06-25 23:08:46 318

原创 直线距离

给定平面N个点,求出与X轴成一定角度的一条直线使得直线距离旋转,坐标变换。#include#include#include#include#include#include#include#include#define pi acos(-1.0)using namespace std;struct point{ double x,y;}p[10010];int

2017-06-25 14:50:52 302

原创 图的收缩

一个图在连通情况下,每个点都有一个包含它的圈。一种图去掉任意一条边,都能成为前面那种图,则符合要求,求这种图的最小边权值之和。#include#include#include#include#include#include#includeusing namespace std;const int maxn=13;const int inf=100000000;stru

2017-06-25 01:15:53 2125

原创 圆环取数

每次任意去除相邻两个数,去掉较小的那个,并把它们差的绝对值加起来,重复这一过程,直到剩最后一个数为止。f[i][j]代表i开始到j的最优解,max[i][j]表示i开始到j的最大值。#include#include#include#include#include#include#includeusing namespace std;const long maxn=210;

2017-06-24 21:52:26 1038

原创 前序遍历层次遍历

已知前序遍历的序号求层次遍历的序号,反之亦然。#include#include#include#include#include#include#includeusing namespace std;int n,q,k;int childnum(int r){ int x=r; while(x*2<n)x*=2; int t=x/r; return t+((x

2017-06-24 21:33:56 990

原创 删除字符串中的非26字母字符

#include#includevoid fun(char *str){ int i,j; for(i=0,j=0;*(str+i)!='\0';i++) if((*(str+i)>='A'&&*(str+i)='a'&&*(str+i)<='z')) *(str+j)=*(str+i),j++; *(str+j)='\0';}void main(){ char

2017-06-24 17:00:28 3260

转载 机器人树上寻宝

给出一棵树,树上的每个节点都有权值。可以从树上任选一点,放出k个机器人,每个机器人最多走过m-1条边。要求停留的点权值和最大。动态规划算法。归并思想,归并的同时排好序。枚举步数从1到k.访问每个点的相邻节点。这里的f[i][j]代表从j点出发最多走i步的最大值。这里要注意的是归并过程中两个点相同只取一个,防止重复;若权值相同,选标号小的,这和点的遍历顺序有关,防止在标号大的点进行归

2017-06-23 19:20:23 432

转载 无向图变成二分图

给出一个无向图G,图上的点有权值。要求将G组织成一个二分图,使得同侧的点之间没有边相连,并且两侧点权总和之差最小。转化为0-1背包问题。#include#include#include#include#include#include#include#includeusing namespace std;const int offset=2010;const int m

2017-06-22 22:12:22 874

转载 生成字符串

从空串出发,每次在字符串中间插入一个或多个相同的字母,插入的字母可以在头部和尾部。求出最少的次数。动态规划,逆向进行,考虑首尾。#include#include#include#include#include#include#include#includeusing namespace std;const int maxn=210;char s[maxn];int

2017-06-22 16:02:14 276

转载 非单调队列

维护一个队列。1、将一个整数插入到队尾;2、从队头删除一个数,如果队列为空则忽略;3、将队列中所有的数字变成其相反数;

2017-06-22 14:59:48 197

转载 打架

给出打败关系图,输出打败人数最多的编号。#include#include#include#include#include#include#includeusing namespace std;int main(){ int n,i,j,k; char buf[1005]; while(scanf("%d",&n)!=EOF) { memset(d,0,sizeo

2017-06-22 01:58:56 207

转载 九数码

操作,对一个2*2的方格顺时针旋转问达到目标状态的最小步数,用BFS逆时针旋转。预处理,查表。#include#include#include#include#include#include#includeusing namespace std;const int MAXNODE=362880;struct State{ char d[9]; short f;

2017-06-22 01:54:46 226

转载 球员

给出很多球员的能力值、年份、名字,有很多个查询,给出某一个年份范围,求出范围内能力值从高到低排列的11个球员,如果能力值相同则按年份从低到高排,如果年份仍相同,则按名字的字典序排。先sort年份,名字;再转化为求区间最大值。#include#include#include#include#include#include#includeusing namespace std;

2017-06-21 19:09:01 234

转载 二部图匹配

给定一个二部图,从X出发向Y连边,X中的点总会被匹配到,求当最大匹配时,Y中总会被匹配到的点。对于每一个y,去掉(x,y)并删除y后求一次增广路。

2017-06-21 02:20:03 413

转载 蚁人

两只蚁队要占领一个山丘,给出两个蚁队占领山丘中每个洞穴所用的时间,若两洞穴相邻,占领其中一个后另一个的时间变成原来的一半,求最少所用时间。树状动态规划。#include#include#include#include#include#include#includeusing namespace std;vectorg[101];int t[101][2];int f

2017-06-21 02:14:09 301

转载 在线倍增算法求LCA

给定一棵树,询问两个节点的中点。A[x,i]代表与x深度相差2的i次方的祖先。A满足性质A[x,i+1]=A[A[x,i],i]令j是使2的j次方小于等于H的最大非负整数Ancestor(x,H)=Ancestor(A[x,j],H-2的j次方)则LCA(x,y)=LCA(Ancestor(x,deep(y)-deep(x)),y)#include

2017-06-20 16:04:25 228

转载 数谜

每行每列1到9的数字只能出现至多一次,且每行每列的和指定,求方案。#include#include#include#include#include#includeusing namespace std;int sumRow[11],sumCol[11];int a[11][11],mark[11][11];int n,m;int curSumRow[11],curSumC

2017-06-20 00:57:00 297

转载 太空船

给出若干个圆,用弧度给出起点和终点,问是否能够在太空船的范围内找到一条路径,从起点到终点。判断两圆相交,建图,分成两个区间。

2017-06-19 19:34:19 356

原创 hdu2478 Slides

预处理。#include#include#include#include#includeusing namespace std;const int inf=0x7fffffff;const int maxn=100005;int x1[maxn],x2[maxn],y1[maxn],y2[maxn];void insertmin(int a[2],int x){ if(

2017-06-19 07:28:13 251

原创 hdu2476 String painter

动态规划。#include#include#include#include#define maxn 101#define maxc 26using namespace std;char src[maxn];char dst[maxn];int f[maxn][maxn][maxc+1];int main(){ while(scanf("%s%s",src,dst

2017-06-19 04:01:25 187

原创 hdu2474 进程调度

银行家算法,预处理。#include#include#include#include#define maxn 50010#define maxm 5using namespace std;int alloc[maxm][maxn];int request[maxm][maxn];int avail[maxm];int n,m;int order[maxm][maxn

2017-06-19 02:51:04 280

原创 Reading books

求无向图的向连通分量+贪心。#include#include#include#define maxn 105#define INF 1<<20using namespace std;int map[maxn][maxn];int quan[maxn],vis[maxn];int n,m;int ans;int sum;int minv;void dfs(int x)

2017-06-19 00:53:11 272

原创 hdu2431 Counting problem

动态规划,最小表示法。等价于整数n的划分方案数,每个数都要大于等于2。#include#include#includeusing namespace std;const int maxn=505;const int m=1e6+7;int a[maxn];void init(){ memset(a,0,sizeof(a)); a[0]=1; for(int i=

2017-06-19 00:41:38 290

原创 hdu2428 Stars

StarsTime Limit: 5000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total Submission(s): 1764    Accepted Submission(s): 612Problem Description    Lucy loves stars very

2017-06-19 00:01:55 345

原创 Problem D: qwb与神奇的序列

Descriptionqwb又遇到了一道题目:有一个序列,初始时只有两个数x和y,之后每次操作时,在原序列的任意两个相邻数之间插入这两个数的和,得到新序列。举例说明:初始:1 2操作1次:1 3 2操作2次:1 4 3 5 2……请问在操作n次之后,得到的序列的所有数之和是多少?Input多组测试数据,处理到文件结束(测试例数量输入为

2017-06-02 22:15:33 269

原创 Problem G: qwb去面试

Description某一天,qwb去WCfun面试,面试官问了他一个问题:把一个正整数n拆分成若干个正整数的和,请求出这些数乘积的最大值。qwb比较猥琐,借故上厕所偷偷上网求助,聪明的你能帮助他吗?Input第一行为一个正整数T.(T接下来T行,每行一个正整数n(nOutput每一行输出一个整数,表示乘积的最大值,由于答案可能很大,请将答案对109+7取模后输

2017-06-01 23:45:00 273

原创 Problem B: qwb与矩阵

直接贴代码,NOIP真题的改遍,但一直TLE,我用的是DP,没想到还可以记忆化搜索。#include#include#include#include#include#include#include#include#includeusing namespace std;const int inf=(1<<30)-1;const int maxn=10010;const i

2017-06-01 23:24:32 361

原创 Problem A: qwb与支教

Descriptionqwb同时也是是之江学院的志愿者,暑期要前往周边地区支教,为了提高小学生的数学水平。她把小学生排成一排,从左至右从1开始依次往上报数。玩完一轮后,他发现这个游戏太简单了。于是他选了3个不同的数x,y,z;从1依次往上开始报数,遇到x的倍数、y的倍数或z的倍数就跳过。如果x=2,y=3,z=5;第一名小学生报1,第2名得跳过2、3、4、5、6,报7;第3名得跳过

2017-06-01 22:26:52 377

空空如也

空空如也

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

TA关注的人

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