自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

moyan_min的专栏

知我者,为我心忧;不知我者,谓我何求。向编程努力……永不放弃,永不言败!!!

  • 博客(319)
  • 问答 (5)
  • 收藏
  • 关注

转载 ORA-28000: the account is locked-的解决办法

ORA-28000: the account is locked 第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba; 第二步:选择myjob,查看users; 第三步:选择system,右击点击“编辑”; 第四步:修改密码,把“帐户被锁住”的勾去掉; 第五步:点击“应用”再点击“关闭”; 第六步:重新登录就可以通过验证了; 第二种

2014-06-18 10:35:19 1245 2

原创 uva 11732 - strcmp() Anyone?

一直SubmissionErr,先放在这吧//#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffff

2013-12-10 08:34:22 758

原创 uva 1513 - Movie collection

树状数组://#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #define inf -

2013-12-09 12:40:56 1253

原创 uva 12086 - Potentiometers

线段树or树状数组均可以做此题,不过树状数组的代码量要小://#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF

2013-12-08 14:14:08 965

原创 uva 1401 - Remember the Word

字符串前缀树:单纯的暴力会超时,所以采用前缀树。先用单词构造前缀树,然后用母串遍历查询,每次查询不会超过一百,所以时间复杂度不会超过3 * 10 ^ 7;至于怎么查询可以从前往后递推,也可以从后往前递推,从前往后递推公式: d[j] += d[i - 1];//#pragma comment(linker, "/STACK:1024000000,1024000000") #include #i

2013-12-07 14:21:41 1157

原创 uva 1428 - Ping pong

树状数组初级用法://#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #define i

2013-12-06 10:59:20 1252 1

原创 hdu 3016 Man Down

这题太坑人了,虽说是线段树+dp,可是这道题的题意确实不明确,你要知道,要想从高的木板下落到低的木板上面,假设高的木板的区间为[l, r],那么你只能从点 l和点r也就是这条木板的两个端点下去,而不是从l - 1和r + 1这两个点下去(就是坑在这,让我无数次的wa);唉……这该怎么说呢。 说一下自己的思路:按照高度进行排序,高度递减,首先查找区间[l, r]中的最大值,把这个最大值记录下来,把区

2013-11-01 18:08:46 1125

原创 hdu 1540 Tunnel Warfare

线段树的区间更新,求得区间内的最长序列: 所以可以寻找两个端点,也就是被炸毁的村庄作为端点,然后再把0和n+1这两个点置为1, 0在这里表示村庄没有没炸毁,1表示被炸毁,-1表示这个区间内既有被炸毁的村庄,也有没有被炸毁的村庄, 那么查询两次找出两个端点,其区间也就确定了 //#pragma comment(linker, "/STACK:1024000000,1024000000") #inc

2013-10-28 14:31:50 775

原创 hdu 2795 Billboard

线段树题目,不过不需要开10^9这样大的数组,也开不下,最多开的数组大小也就是200010 << 2这样大的数组就可以了 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include

2013-10-27 19:53:12 789

原创 hdu 1394 Minimum Inversion Number

事实上就是求每个排列的逆序数,找出最小的那个,所以求逆序数算法需要得到优化。 由于数组的数各不相同,所以我们可以只需要求得初始 数组的逆序数就可以了,其他的可以递推出来: 10 1 3 6 9 0 8 5 7 4 2 开始的逆序数为22, 那么将1移到后面后得到的是: 3 6 9 0 8 5 7 4 2 1 对于这个新的排列,你会发现这个排列的逆序数很奇怪: 实际上1的逆序数置为0, 而大于1的每

2013-10-27 19:15:50 900

原创 hdu 1698 Just a Hook

线段树求整个区间的和 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #define

2013-10-27 11:43:46 860

原创 hdu 1754 I Hate It

线段树求区间最大值 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #define

2013-10-27 11:11:51 778

原创 hdu 1166 敌兵布阵

线段树区间求和 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #define N

2013-10-27 11:02:14 792

原创 随笔

浇 水   【题目描述】   瓜农王大爷去年种西瓜赚了不少钱。看到收入不错,今年他又重新开辟了n个西瓜地。   为了能给他的n个西瓜地顺利的浇上水,对于每个西瓜地他可以选择在本地打井,也可以修管道从另一个瓜地(这个瓜地可能打了井;也可能没打井,他的水也是从其他瓜地引来的)将水引过来。   当然打井和修管道的费用有差别。已知在第i个西瓜地打井需要耗费wi元,在第i、j个西瓜地之间修管道需要耗费pi,

2013-10-26 17:11:06 1600 3

原创 1455 - Kingdom

线段树 + 并查集:因为需要查找y值,所以x值不需要存储,然后就是给出的查询C,这个要注意,有可能超出y的范围; 自己的思路是把y值翻倍,所以c值就可以变为整数进行查询。并查集是用来连接两棵子树的, 而线段树是把连接成的子树的y值区间进行更新, 就是把以前的两棵子树的区间删除掉,把新的子树的区间加到线段树里面,然后就可以了 //#pragma comment(linker, "/STACK:102

2013-10-25 12:18:33 925

原创 11525 - Permutation

训练指南P248: 不过刚开始这题理解错了,不是找大于val的没有使用过的值,而是找从1开始没有使用过的第val+1个数,并把这个数输出才对 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #

2013-10-23 12:56:02 769

原创 1232 - SKYLINE

算法竞赛训练指南P247 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #def

2013-10-21 22:38:48 898

原创 12299 - RMQ with Shifts

没什么特别的地方,比较水的题 //#pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #de

2013-10-20 21:37:16 951

原创 hdu 3844 Mining Your Own Business

见刘汝佳训练指南P318 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #include #include #include #include #include #include #include #include #define INF 0x3fffffff #define

2013-10-18 11:42:32 1303

原创 hdu 3847 Trash Removal

凸包题目: 先把凸包求出来,那么要计算的点必然在凸包所构成的多边形边界上,在边界上枚举每条边,求得其所有点相对于这条边的最大距离, 然后取这些最大距离的最小的一个就可以了,对了,这题目要求向上取整 #include #include #include #include #include #include #include #include #include #include

2013-10-17 17:39:44 976

原创 hdu 1695 GCD

就自己知道的做法有两种: 一种是用欧拉函数预处理[1, 100000]区间内所有数的phi, 然后再求出[n / k, m / k]区间中每一个数与区间[1, n / k]互质的素数,将这些素数采用容斥原理进行组合和排除, 就会得到[1, n / k]之间的与区间[n / k, m / k]互质且公约数为1的所有对数。这种做法比较耗时。 另一种方法采用了莫比乌斯反演中的求mu函数,然后进行区间划分

2013-10-17 14:14:23 1051

原创 11235 - Frequent values

《算法竞赛入门经典-训练指南》P198 记录一下区间的左右边界就可以了 #include #include #include #include #include #include #include #include #include #include #define INF 0x7fffffff #define N 100010 #define M 1000010 #defi

2013-10-12 21:13:53 1463

原创 11992 - Fast Matrix Operations

要wa死了,书上的代码没太看懂,就按照自己的想法写的,其中掺杂了书上的一些代码居然不对,唉…… #include #include #include #include #include #include #include #include #include #include #define INF 0x7fffffff #define N 10010 #define M 1

2013-10-10 23:24:34 1073 2

原创 hdu 3646 Fate Stay Night

状态转移:对于j == 0 时,就是没有翻倍的情况,对于j == i 时,全都翻倍,对于j > i 时, dp[i][j] = dp[i][j - 1],剩下的情况就是dp[i][j] = max(dp[i - 1][j - 1] + fb[i] * 2, dp[i - 1][j] + fb[i]);当然,dp是存放的结构体,结构体包含两个数:剩余血量和第几次生命值 #include #incl

2013-10-08 23:55:08 1055

原创 1400 - "Ray, Pass me the dishes!"

第一次做线段树题目,确实一点也不会,想了很久,首先是线段树怎么作用,每一步会产生什么影响。 首先,线段树的每次更新都更新了什么,为什么要这么更新,尤其是更新的区间,虽说原理很简单,就是要么在左子树, 要么在右子树,要么兼顾左右子树,所以如果是在左子树,那就查找左子树,否则右子树,或者左右子树都查找,再合并左右子树, 这仅是对于查找而言的。那么建树是怎么回事呢,首先建树必然会包括所有情况,每种情况事

2013-10-07 20:37:31 1414

原创 hdu 4767 Bell

从维基百科查到两个公式: 维基百科网址:http://en.wikipedia.org/wiki/Bell_number 通过这两个公式可以把Bn分别对于mod拆分成的五个素数取余,然后通过中国剩余定理把这五个素数得到的结果组合起来 对于取余的算法是采用递推的方式 #include #include #include #include #include #

2013-09-30 13:43:33 1249

原创 hdu 4768 Flyer

不能暴,会超时,要用LL,否则结果不对,采用二分,既然是找奇数,那么可以计算出所有的社团所发放传单的数目和,如果为偶数,那么必然不存在任何一个人为奇数;如果存在,那么可以不断二分学生的下标从而找到是在哪个位置 #include #include #include #include #include #include #include #include #include #i

2013-09-28 19:41:46 1677

原创 hdu 4612 Warm up

将双连通分量浓缩成点,形成一颗树,找最长路 #include #include #include #include #include #define N 200010 #define M 1000010 #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; bool iscut[2

2013-09-27 10:35:53 1212

原创 hdu 4616 Game

应该用树形dp的,数据太水,直接水过也行 #include #include #include #include #include #define LL long long #define N 50010 using namespace std; vector G[N]; int v[N]; LL s[N]; bool iscut[N]; int n,m; LL p; void

2013-09-27 10:27:39 1258 1

原创 hdu 4619 Warm up 2

其实就是一个数学问题,给你一个圆柱的底面的圆心以及底面圆心的两个点,然后求出这个圆的的法向量和这个圆的半径,这样的话就会得到n个圆半径以及n条直线(包括方向向量和直线上一点),再求这些直线的距离看是否小于等于两条直线所在的两个圆的半径之和,如果存在任何一组小于等于的话,就输出Lucky,否则输出最小差距;知道两条直线的法向量后,距离dis=|两条直线上两点的方向向量*(两条直线的方向向量的叉乘)|

2013-09-27 10:24:47 1174 1

原创 hdu 4628 Pieces

采用集合的方式进行判断,判断所有的子字符串情况,看是否符合回文 #include #include #include using namespace std; int len; int f[(1<<16)+2]; char s[18]; void solve (int n) { char str[18]; for(int i=1; i<len; ++i) {

2013-09-27 10:12:00 824

原创 hdu 4565 So Easy!

公式推导: ( a + b ^ 0.5 ) ^ n + ( a - b ^ 0.5 ) ^ n = Ck, Ck * ( ( a + b ^ 0.5 ) + ( a - b ^ 0.5 ) ) = ( ( a + b ^ 0.5 ) + ( a - b ^ 0.5 ) ) * ( a + b ^ 0.5 ) ^ n + ( a - b ^ 0.5 ) ^ n => 2 * a * Ck

2013-09-27 10:09:36 895

原创 hdu 4630 No Pain No Game

树状数组+离线处理,输入结束后按照L从到小排序,然后在计算约数的时候,把约束出现次数大于1的存入树状数组,然后根据R进行查询,最后全部输出 #include #include #include #define N 50005 struct node { int l,r,pos; }; node v[N]; int n,m; int num[N],arr[N],p[N],q[

2013-09-26 11:52:39 571

原创 hdu 4631 Sad Love Story

在已有的点集中按X坐标从小到大排序,每增加一个点,找到大于等于它的位置p,分为两部分,然后从右递增计算要增加的点与点集中的点的距离,若>=Min,则退出,然后再从p-1处从右往左递减计算要增加的点与点集中所有点的距离的最小值。 #include #include #include using namespace std; #define LL long long #define N 5

2013-09-26 11:51:41 720

原创 hdu 4632 Palindrome subsequence

都不会做了,以前做过的题目都忘了,唉……递归dp真是耗时啊…… #include #include #define N 10007 char s[1010]; int dp[1010][1010]; int main() { //freopen("in.txt","r",stdin); int t,k=1; scanf("%d",&t); while(t-

2013-09-26 11:50:48 668

原创 hdu 4635 Strongly connected

先根据trajan算法找出连通分量缩点,然后得出一个新的不存在连通分量的有向图,然后查找有向图中出度或者入度为零的点,然后根据这个点的点数(如果是连通图缩成的点就不是一个点了)x,以及剩下的点数y=n-x,那么 sum = max( (x-1)*x+y*(y-1)+x*y-m ,sum )就是所能加的最大边数 #include #include #include #include

2013-09-26 11:49:38 1045

原创 hdu 4622 Reincarnation

后缀自动机题目,第一次接触,一点也不会,查资料也不是很清楚,只能算是拷贝的代码了 #include #include struct node { int l,r,pos; }; struct Str { Str *par,*next[26]; int Sum; void clear() { Sum=0,par=NULL;

2013-09-26 11:48:21 1062 1

原创 hdu 4648 Magic Pen 6

采用一种新的方式来处理数据连续的数目和能被m整除,时间复杂度为n #include #include int max(int x,int y) { return x>y?x:y; } #define LL long long LL num[100010]; int p[100010]; int main() { //freopen("in.txt","r",stdin);

2013-09-26 11:46:55 708

原创 hdu 4647 Another Graph Game

采用将两点之间的边上的权值平分到两点的方法来处理此题,由于平分时会产生误差,所以我没有平分,而是所有的点的权值加倍,然后两点各加一条边的权值,最后结果输出时减倍就可以了 #include #include #define LL long long using namespace std; LL num[100010]; int main() { //freopen("in.txt

2013-09-26 11:45:29 706

原创 hdu 4643 GSM

纪念一下此题,虽然不难,但是写起来比较麻烦,很多人直接套了许多模板过的,标程是采用二分的方法,我是采用一般方式进行递推,不断寻找中垂线。顺便把标程贴上 #include #include #include #include using namespace std; struct Line { double b,k; int f; }; double city[55][

2013-09-26 11:44:29 993

空空如也

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

TA关注的人

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