自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

MY专栏

前方未知,但宁静致远

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

原创 hihoCoder1232 Couple Trees LCA倍增算法+二分

题意:给你两颗树,节点编号都是1-n。根节点都为1,且父节点编号必大于子节点。有m次询问,每次给出两个坐标x,y,通过换算(与上一次询问结果有关),得到了两个节X,Y,问这两个节点的在这两颗树中的最近公共祖先。方法:求出每个点的倍增父节点,然后每次X,Y朝着倍增父节点尽量移动(尽量保证移的位置的节点大于另一个节点),如果不能保证,至少也得往前移一位。#include #inclu

2015-10-09 23:37:30 754

原创 hdu 5117 Fluorescent dp

题意: 有n个灯,m个开关,每个开关控制着一些灯。求E(x^3)*(2^m) mod(1e9+7)的值。其中,x为亮着灯的数目。 数据范围: n,m<=50,, 方法:x=(x1+x2+..+xn),,x^3=(x1+x2+..+xn)(x1+x2+..+xn)(x1+x2+..+xn); 展开之后,则对x^3的值有贡献的是xi*xj*xk==1,当且仅当三者为都为1满足要求。 所以可考虑状

2015-10-23 16:26:22 457

原创 HDU 5113 Black And White dfs+剪枝

题意:给你一个n*m的矩阵,现有K种颜料,要涂满整个矩阵。每种颜料可以涂的矩阵个数为c[i],涂矩阵时要求相邻矩阵颜色不同。现求一种合法的涂法。方法:dfs+剪枝剪枝技巧,对未填方块进行黑白染色,则需当前颜料的个数大于(left+1)/2个,才能使满足要求。#include#include#include#include#include#includeusing names

2015-10-23 14:33:47 407

原创 hihoCoder 1233 Boxes 哈希+最短路

题意:给你n(n<8)个盒子,每个盒子上有一个方块,每个方块都有其独特的重量。现有一种合法操作,每次操作选择一个盒子上的最上面的方块,可左右移动,并且使得移动后方块位于盒子最上方,且其重量是盒子上所有方块中质量最小的。问:如果通过最少次合法操作,使得方块上的盒子质量有序。 方法:注意到n很少,可采取哈希的方法,来确定此状态到终状态的最少步数。 哈希方法:可以用n进制的数来表示每个方块位于第几个盒

2015-10-09 16:36:32 395

原创 hdu 4421 Bit Magic 2-sat

题意:a[i]数组可通过一定方式生成b[i][i]矩阵,问:给定b[i][i]矩阵,有没有满足要求的a[i]矩阵… 方法:枚举每一位数字上的数,建图,跑2-sat#include<cstdio>#include<algorithm>#include<cstring>#include<vector>#include<queue>#include<set>using namespace s

2015-10-08 23:40:22 341

原创 hdu 5490 Simple Matrix 排序组合

题意:给你一个(n+1)*(m+1)的矩阵,已知:1.c[0][0]=0;2.c[0][1]——c[0][m]为等比数列3.c[1][0]——c[n][0]为等差数列4. c[n][m]=c[n-1][m]+c[n][m-1];给你等比数列的首项b与公比q,等差数列的首项a与公差d,求c[n][m]方法:注意到c[n][m]=c[n-1][m]+c[n][m-1]很

2015-10-08 19:18:31 415

原创 hdu 5487 Difference of Languages BFS

题意:给你两个DFA,每个状态在另一个字母的作用下变成另一个状态。其字典序最小的一个字符串,使得其中一个变成可接受的状态,另一个不是。 方法:bfs枚举最后的状态,并记录第一个状态。#include<iostream>#include<stdio.h>#include<string.h>#include<algorithm>#include<queue>#pragma comment(l

2015-10-07 15:22:48 299

原创 HDU4280 Island Transport 网络流模版题

模版题#include #include #include #include #include #include #include using namespace std;const int N=10000;const int MAXN = 100010;//点数的最大值const int MAXM = 400010;//边数的最大值const int INF = 0x3

2015-10-06 19:44:11 308

原创 hdu5493 Queue 线段树

题意: 给你n个人,并且知道每个人的高(具有唯一性)与其在队列中前或者后的人数,求出字典序最小的一个排列。 方法: 1.利用线段树,表示每一段还有多少个空位未填。 2.对于队列中第i高的人,至少需要满足k[i]<=n-i;即他看到的比他高的人不可能多于实际比他高的人的人数。 3.按身高从小到大依次插入,若当前插入的人看到了k[i]个人比他高,则说明他插入时还有他前面刚好有k[i](或n-i

2015-10-03 15:08:48 361

原创 hdu5489 Removed Interval LIS

题意:移掉长度为L的区间后剩余数组的LIS#include#include#include#include#include#include#include#include#include#includeusing namespace std;typedef unsigned long long ll;const int N=1e5+10;const int INF=0

2015-10-03 11:24:37 351

原创 Hdu 5445 Food Problem 多重背包

题意:给出n,m,p,分别表示有n种点心,m种卡车,能量p. 然后给出每种点心所能获得的能量,所占卡车的体积,以及每种点心的数量。 再给出每种卡车所能装下的空间,租这种卡车的费用,以及每种卡车的数量。 现要求至少得到能量p所花费的最少费用。 方法:利用多重背包求出得到能量p所占的最小体积。再利用多重背包求出各种花费下所能装下的最大体积。然后找到最小的花费满足其所装下的最大体积大于或等于得到能

2015-09-14 17:21:13 418

原创 HDU 5439 Aggregated Counting 找规律+二分

题意:The sequence is generated by the following scheme.1. First, write down 1, 2 on a paper.2. The 2nd number is 2, write down 2 2’s (including the one originally on the paper). The paper thus has

2015-09-13 18:59:40 947

原创 HDU 5442 Favorite Donut 后缀数组

题意:给你一个字符串(环形),求字典序最大的起始位置。按字典序、起始位置、方向的优先级顺序依次判断。方法:倍长字符串长度,构建后缀数组。注意:顺时针时在字符串末尾补0(无穷小);逆时针时在字符串末尾补#include #include #include #include #include #include using namespace std;typedef long

2015-09-13 18:48:30 838 1

原创 HDU 4998 Rotate 简单几何旋转问题

题意:给出n次旋转(包括旋转中心与旋转角度),求与这n次等价的旋转中心与旋转角度 方法:引入任意两点,利用向量旋转公式,求得最终的点,然后利用直线相交求圆心,圆心出来了,角度也就出来了。  #include #include #include #include using namespace std;const int N=505;const doubl

2015-09-07 20:34:38 336

原创 POJ 2318 TOYS 几何题 基础

题意:给你一个矩形,并给你一些线分割这个矩形。有一些玩具,给出玩具坐标。求每个区域有多少个玩具。方法:利用叉积判断玩具的位置。#include #include #include #include #include using namespace std;const int N=5005;struct node{ int x,y; node(int _x=0,

2015-09-05 22:28:09 282

原创 VS2005 无法调试的一个解决方案

调试的时候,可能会出现这句话:“无法找到“XXX.exe”的调试信息,或者调试信息不匹配。未使用调试信息生成二进制文件。”这时,只要按以下操作即可:打开菜单 项目->项目属性页 1.选择 配置属性->链接器->调试->生成调试信息 改为 是 2.选择 配置属性->C/C++ ->常规->调试信息格式 改为 用于“编辑并继续”的程序数据库(/ZI) 3.选择 配置属性->C/

2015-09-04 19:33:33 1592

原创 hihoCoder 1225 向日葵

题意:给定n对点对(a[i][0],a[i][1]),从每对点对中取一个点,问构成凸包的面积期望值。方法:时限较长,可以采用暴力的方法。若一条边在凸包上,则需要所有的点都在它的左右。考虑剩于n-2对点对:若两个点都在右边,则概率为0;若只有一个点在左边,则概率乘以0.5;若两个点都在左边,则概率为1;根据乘法原理,可以算出该边在凸包上的概率。

2015-08-31 09:59:43 534

原创 HDU2243 考研路茫茫――单词情结 AC自动机

题意:求不包含给定的串且长度不大于m的串的个数思路:这题是POJ2778的加强版,方法是求出包含给定的串的个数,再用总的方法数去减这个数字,就是得到不包含给定的串的个数。#include #include #include #include #include using namespace std;const int N=40;const int CHAR=26;typed

2015-08-24 09:56:24 376

原创 POJ2778 DNA Sequence AC自动机+快速幂+DP

题意:给你n个序列,求长度为m且不包含这n串的序列的个数方法:利用AC自动机可以构建状态转移方程。同时构建AC自动机时要注意若转移到危险结点,则当前结点也是一个危险结点。#include #include #include #include #include using namespace std;const int N=1000;const int CHAR=4;typede

2015-08-24 08:39:13 290

原创 SPOJ - NSUBSTR Substrings 后缀自动机

题意:令F(x)为长度为x的子串出现的最多次数,求所有F(x)方法:构建后缀自动机,并对每个节点len做计数排序,然后从大到小进行拓补更新。注意到小的子串为大的子串所包含。所以有dp[i]=max(dp[i],dp[i+1])。PS:一个节点的深度所代表的串为root到该节点最远路程所经过的点串,即s(pos-len+1,pos)这一串。pos代表其在字符串中对应的相应位置。也就是说,我们可以

2015-08-22 23:22:59 365

原创 SPOJ lcs2 Longest Common Substring II 后缀自动机

题意:求n个串的最长公共子串(连续的)方法:用其中一串构建后缀自动机,其它串来跑,并更新其len(step)即答案。PS:本来是另一开一个数组来记录时间的,但状态转移时要用到SAM_node的标号,增加了时间复杂度常数,被卡了时间#include #include #include #include #include #include #include using nam

2015-08-22 23:01:09 284

原创 SPOJ1811 Longest Common Substring后缀自动机

题意:求两字符中的最长公共子串思路:其中一串建立后缀自动机,另一串来跑自动机,并记录当前节点的深度#include #include #include #include #include #include #include using namespace std;typedef long long ll;const int Mod=1e9+7;const int N=250

2015-08-21 16:23:28 217

原创 POJ1509Glass Beads 后缀自动机

题意:求环形字符串中长度为n的最小字典序子串。可用后缀数组做。但这次采用的方法是后缀自动机。思路:建好自动机,然后跑n步即可找到字典序最小的字符串。#include #include #include #include #include #include using namespace std;typedef long long ll;const i

2015-08-21 15:33:44 318

原创 uva 10237 Bishops 黑白染色处理

题意:在n*n行棋盘里放置k个棋子,要保证这些棋不在同一斜行,问有多少种放置方式。方法:黑白染色,黑白格子之间相互不影响。用dp[i][j]表示第i斜行放置j个棋子,c[i]表示第i斜行有多少棋子。#include#include#include#include#include#include#include#includeusing namespace std;#p

2015-07-29 09:41:21 309

原创 hdu 1114 Piggy-Bank 完全背包

用滚动数组写好像写法很简洁,但这次我试着用二维数组写Orz...还真出了好多问题..所幸最后还是AC了...#include#include#include#define maxn 505int p[maxn],w[maxn];int n,m;int dp[maxn][10005];int min(int a,int b){ return a<b?a:b;}void out

2015-01-26 15:47:07 281

原创 HDU5037 frog贪心

这题虽说不是很难,但在推理时实在把自己x

2014-09-22 21:07:22 334

原创 HDU5017 Ellipsoid 模拟退火

这是第一次接触模拟退火,感觉挺棒的

2014-09-18 20:09:51 403

原创 HDU5012 Dice dfs

#include#include#includeusing namespace std;int a[4][2],b[4][2];int vis[700000];int ans;int zhong;void d1(){ int x=a[2][0]; a[2][0]=a[1][0];a[1][0]=a[2][1]; a[2][1]=a[1][1];a[1][1]=x;

2014-09-14 21:11:00 314

原创 POJ1151 Atlantis扫描线求矩形面积

关于线段树扫描线的题目放了很久了,一直都没碰它。今天偶然想起这个来,

2014-09-11 21:49:11 315

原创 HDU4035 Maze 概率DP+图

思路:列出状态转移方程,并设出其一般能

2014-09-10 21:32:41 368

原创 HDU4599 Dice概率期望DP

这题有三个函数,F(N)表示有数字连续向上

2014-09-10 16:25:11 422

原创 POJ3358 Period of an Infinite Binary Expansion

该题要处理好一些细节。#include#includeint gcd(int a,int b){return b==0?a:gcd(b,a%b);}int phi(int a){ int l=sqrt((double)a),ans=a; for(int i=2;i<=l;i++) if(a%i==0){ ans=ans/i*(i-1); do { a=

2014-09-01 16:57:29 303

原创 POJ1811 Prime Test大素数判定与因式分解

说实在的,这题当初完全不懂。上m

2014-08-29 22:22:00 498

原创 POJ2515 Birthday Cake构建差分表

本题题意是求1到n的m方和。思路:构建差分表,

2014-08-27 11:05:07 483

原创 POJ1150 The Last Non-zero Digit

#include#include#define maxn 20000000int get(int n,int x){ int s=0; while(n) { s+=n/x; n/=x; } return s;}int g(int n,int x){ if(n==0)return 0; return n/10+(n%10>=x)+g(n/5,x);}int g

2014-08-26 11:08:48 373

原创 POJ1850 Code组合数学

#include#include#define maxn 27int c[maxn][maxn];int main(){ int ans,i,j,k; for(i=1;i<=maxn;i++) c[i][0]=1; for(i=1;i<=maxn;i++) for(j=1;j<=i;j++) c[i][j]=c[i-1][j-1]+c[i-1][j]; char s

2014-08-25 16:34:23 284

原创 POJ3370 Halloween treats 抽屉原理

题目是求有没有方案,使得取出的糕点数总和为c的倍数

2014-08-25 11:38:50 363

原创 PO3641 Pseudoprime numbers判伪素数与快速幂

#include#include#define maxn 100001int prime[maxn],save[maxn],tot;bool pan(int a,int p){ if(p<maxn) { if(!prime[p]) return false; } else { int ok=1; for(int i=1;save[i]*save[i]<=p;i

2014-08-17 17:32:55 756

原创 POJ2739 Sum of Consecutive Prime Numbers素数打表

思路比较简单,就是运用了一公式s

2014-08-17 16:17:53 300

原创 POJ2034 Anti-prime Sequences初等数论

题目是求从n到m字典序最小的且连续2,3,,d

2014-08-16 23:31:06 278

空空如也

空空如也

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

TA关注的人

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