- 博客(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 1294 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 805
原创 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 1309
原创 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 1011
原创 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 1178
原创 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 1301 1
原创 hdu 3016 Man Down
这题太坑人了,虽说是线段树+dp,可是这道题的题意确实不明确,你要知道,要想从高的木板下落到低的木板上面,假设高的木板的区间为[l, r],那么你只能从点 l和点r也就是这条木板的两个端点下去,而不是从l - 1和r + 1这两个点下去(就是坑在这,让我无数次的wa);唉……这该怎么说呢。 说一下自己的思路:按照高度进行排序,高度递减,首先查找区间[l, r]中的最大值,把这个最大值记录下来,把区
2013-11-01 18:08:46 1145
原创 hdu 1540 Tunnel Warfare
线段树的区间更新,求得区间内的最长序列: 所以可以寻找两个端点,也就是被炸毁的村庄作为端点,然后再把0和n+1这两个点置为1, 0在这里表示村庄没有没炸毁,1表示被炸毁,-1表示这个区间内既有被炸毁的村庄,也有没有被炸毁的村庄, 那么查询两次找出两个端点,其区间也就确定了 //#pragma comment(linker, "/STACK:1024000000,1024000000") #inc
2013-10-28 14:31:50 813
原创 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 837
原创 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 935
原创 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 903
原创 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 818
原创 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 833
原创 随笔
浇 水 【题目描述】 瓜农王大爷去年种西瓜赚了不少钱。看到收入不错,今年他又重新开辟了n个西瓜地。 为了能给他的n个西瓜地顺利的浇上水,对于每个西瓜地他可以选择在本地打井,也可以修管道从另一个瓜地(这个瓜地可能打了井;也可能没打井,他的水也是从其他瓜地引来的)将水引过来。 当然打井和修管道的费用有差别。已知在第i个西瓜地打井需要耗费wi元,在第i、j个西瓜地之间修管道需要耗费pi,
2013-10-26 17:11:06 1627 3
原创 1455 - Kingdom
线段树 + 并查集:因为需要查找y值,所以x值不需要存储,然后就是给出的查询C,这个要注意,有可能超出y的范围; 自己的思路是把y值翻倍,所以c值就可以变为整数进行查询。并查集是用来连接两棵子树的, 而线段树是把连接成的子树的y值区间进行更新, 就是把以前的两棵子树的区间删除掉,把新的子树的区间加到线段树里面,然后就可以了 //#pragma comment(linker, "/STACK:102
2013-10-25 12:18:33 962
原创 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 800
原创 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 918
原创 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 972
原创 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 1335
原创 hdu 3847 Trash Removal
凸包题目: 先把凸包求出来,那么要计算的点必然在凸包所构成的多边形边界上,在边界上枚举每条边,求得其所有点相对于这条边的最大距离, 然后取这些最大距离的最小的一个就可以了,对了,这题目要求向上取整 #include #include #include #include #include #include #include #include #include #include
2013-10-17 17:39:44 1001
原创 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 1074
原创 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 1502
原创 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 1095 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 1093
原创 1400 - "Ray, Pass me the dishes!"
第一次做线段树题目,确实一点也不会,想了很久,首先是线段树怎么作用,每一步会产生什么影响。 首先,线段树的每次更新都更新了什么,为什么要这么更新,尤其是更新的区间,虽说原理很简单,就是要么在左子树, 要么在右子树,要么兼顾左右子树,所以如果是在左子树,那就查找左子树,否则右子树,或者左右子树都查找,再合并左右子树, 这仅是对于查找而言的。那么建树是怎么回事呢,首先建树必然会包括所有情况,每种情况事
2013-10-07 20:37:31 1439
原创 hdu 4767 Bell
从维基百科查到两个公式: 维基百科网址:http://en.wikipedia.org/wiki/Bell_number 通过这两个公式可以把Bn分别对于mod拆分成的五个素数取余,然后通过中国剩余定理把这五个素数得到的结果组合起来 对于取余的算法是采用递推的方式 #include #include #include #include #include #
2013-09-30 13:43:33 1271
原创 hdu 4768 Flyer
不能暴,会超时,要用LL,否则结果不对,采用二分,既然是找奇数,那么可以计算出所有的社团所发放传单的数目和,如果为偶数,那么必然不存在任何一个人为奇数;如果存在,那么可以不断二分学生的下标从而找到是在哪个位置 #include #include #include #include #include #include #include #include #include #i
2013-09-28 19:41:46 1707
原创 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 1250
原创 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 1323 1
原创 hdu 4619 Warm up 2
其实就是一个数学问题,给你一个圆柱的底面的圆心以及底面圆心的两个点,然后求出这个圆的的法向量和这个圆的半径,这样的话就会得到n个圆半径以及n条直线(包括方向向量和直线上一点),再求这些直线的距离看是否小于等于两条直线所在的两个圆的半径之和,如果存在任何一组小于等于的话,就输出Lucky,否则输出最小差距;知道两条直线的法向量后,距离dis=|两条直线上两点的方向向量*(两条直线的方向向量的叉乘)|
2013-09-27 10:24:47 1209 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 864
原创 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 917
原创 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 599
原创 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 744
原创 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 706
原创 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 1069
原创 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 1105 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 733
原创 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 724
原创 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 1032
空空如也
C++11奇妙的未定义行为??
2014-09-21
C# 窗口移动,文字显示
2014-05-22
侯捷stl源码剖析红黑树代码问题
2014-04-07
python创建sql server 数据库问题求助
2013-12-25
sublime text3代码中自动对齐问题
2013-09-16
TA创建的收藏夹 TA关注的收藏夹
TA关注的人