- 博客(51)
- 收藏
- 关注
原创 《数据库系统实现》读书笔记 第九章总结
第九章 并行与分布式数据库9.1 关系的并行算法1、并行模型(1)共享内存机器(2)共享磁盘机器(3)无共享机器2、并行算法(1)一次一个元组的操作的并行类似于分块的思想,将关系R的元组平均的分组到P个处理器的磁盘上,并行选择,然后汇总。(2)整个关系操作的并行算法δ(R)是什么操作符?这部分没看懂(3)并行算法的性能计算磁盘I/O,这个需要根据具体...
2019-12-26 11:08:16 301
原创 华为云上安装宝塔面板
1、设置安全组,开放端口浏览器到华为云界面,在控制台–弹性云服务器–安全组–配置规则-入方向规则-快速添加规则自己选择常用的端口,或者不用快速添加规则,自己单独指定端口,下面开放8888;888;443;20;80;21端口。在此处我把一些数据库的端口也开了。2、进入华为云,远程连接输入命令yum install -y wget && wget -...
2019-11-07 21:11:28 2426 2
原创 珂朵莉的数列
树状数组题目描述:给你一串数字序列,求所有区间的逆序对。解题分析:对于每一个逆序对,计算它的贡献,也就是所有包含这个逆序对的区间。用树状数组来维护,不过得先离散化。数据太大,longlong无法表示,上的java代码如下:import java.math.BigInteger;import java.net.SocketPermission;import java.util.A
2017-12-02 15:27:05 662
原创 Coloring Brackets CodeForces - 149D
区间DP题目描述:输入一串保证合法的括号序列,要求给这个括号序列串染色,满足三个要求:(1·)染色要不为红,要么为蓝,要么不染色(2)每队匹配的括号,只能有一个染色(3)相邻的染色的括号不能染一个颜色。解题分析:定义dp[l][r][x][y]为左边界为l,染色为x,右边界为r,染色为y满足条件的染色方案数。状态转移方程分两类:第一类是l和r本身是匹配的,另一类是不匹配的,此时就需要找到匹
2017-11-24 17:03:54 419
原创 The Morning after Halloween UVA - 1601
状态空间搜索题目描述:把图中的小写字母,移动到对应的大写字母处,这些小写字母可以同时移动,而且只能通过空白处移动,两个字母之间不可以互换位置,也不可以在同一个位置。解题分析:直接暴力bfs的话,状态数目是256*256*256,状态数目不是很多,但是每一个状态的转移需要5*5*5的次数,这样的话时间复杂度就大了去了。注意到,题目中并不全是空白处,而是充满了大量的墙壁,所以以对所有的空白处建
2017-11-19 22:59:08 348
原创 Matrix Processing ZOJ - 3284
线段树题目描述:看题吧,题目说的很清晰。解题分析:这个题同学用标记瞎搞的方法就过了,网上有人用二维树状数组做的,在这写一个线段树的写法。具体是定义两个线段树,一个只管行更新,一个只管列更新,每次更新的时候是一段线性的区间。查询就是两个线段树的查询和再加上矩阵元素本身。代码如下:#include #include #include #include using namespa
2017-11-03 09:51:32 377
原创 POJ 1651 Multiplication Puzzle
题目描述:给你n个数,拿走一个数,会获得一个值,该值是这个数*它左边的数*它右边的数,最后的结果是取走中间n-2个数所获得的值的和。因为选取的顺序不一样,所获得的值也不一样,求取走中间n-2个值,最小的结果。解题分析:其实就是类似矩阵连乘的思想,矩阵连乘中选取k作为最后一次乘法的中间矩阵,在这个题中选取第k个数作为最后一次乘法的中间数,那么问题转化为求区间[i,k]和区间[k,j]的最优解 +
2017-10-13 09:15:18 330
原创 Brackets sequence UVA - 1626
区间DP题目描述:输出最短的满足括号匹配的字符串,该字符串满足,输入时该字符串的子串。解题分析:先做的POJ 2955-Brackets,两道题虽然不一样,但是该题的想法可以应用到本题上,定义dp[i][j]为以第i个字符开头,以第j个字符结尾的,最长匹配子串的长度。因为对于输入串最长的满足括号匹配的子串是最长的不需要添加的子串,可以直接输出,不匹配的才需要添加。利用POJ 2955-Br
2017-10-11 20:07:53 329
原创 POJ 2955-Brackets
区间 DP题目描述:求一个字符串的最长括号匹配子串(非连续)解题分析:状态转移方程全在题目里,定义了两种括号匹配的子串:1若s是匹配的字符串,则(s),[s]也是,那么状态转移方程是if(s[i] == '(' && s[j] ==')' || s[i] == '[' && s[j] ==']') dp[i][j] = max(dp[i][j],dp[i + 1][j - 1] + 2
2017-10-11 20:04:12 278
原创 HDU 4553 约会安排
线段树区间合并+标记优先级题目描述:小明需要安排和基友开黑和和女神约会的时间。这两个时间总是一段连续的时间,小明总是会找最早的时间来开始这些事。当有基友找他开黑的时候,他会先在时间表里找最早的连续时间,如果有,就开黑,没有就不开黑。当有女神和他约会,他先在时间表里找最早的连续时间,如果有就约会,没有他会先不考虑和基友开黑,先和女神约会,如果有时间就约会。解题分析:POJ 3667的加强版。
2017-10-06 19:37:12 400
原创 HDU 4614 Vases and Flowers
选段树区间更新题目描述:插花,每个花瓶只允许插入一枝花。插花操作是从第A个花瓶开始插花,如果第A个花瓶空着,就插入一枝花,否则判断第A+1个花瓶,知道插完全部的F只花,或者是没有花瓶可插,把剩余的花弃掉,操作终止。输出插花的第一个花瓶和最后一个花瓶,如果一枝花都无法插入,那输出Can not put any one.。清理操作:清理区间[A,B]内的话,输出清理的花的数目。解题分析:线段区
2017-10-05 21:07:06 331
原创 HDU 1540 Tunnel Warfare
线段树单点更新 区间合并题目描述:一串线性的村庄,除了头尾的两个村庄,其他村庄都和左右的两个村庄相邻,可以摧毁一个村庄,这样连接的关系就会被破坏,也可以修复一个村庄,连接的关系也会修复,询问一个村庄,求与它相连接的村庄有多少个。解题分析:借鉴了kuangbin的想法,维护一个节点的最大左连续区间,最大右连续区间和最大的连续区间。当询问的时候,寻找k所在的那个最大连续区间。代码如下:
2017-09-20 17:40:59 309
原创 Traveling by Stagecoach POJ - 2686
状态压缩DP题目描述:旅行商要从a城市到b城市,它共有n张马车票,一共有p条道路,m个城市,每两个城市之间花费的时间是道路之间的距离除以马车的数量,求最小的花费时间。解题分析:关键还是在于怎么表示状态,定义dp[s][v]为票还剩s,现在在城市v所花费的最小时间。那答案就是min{ 0花费车票i,对应的状态转移方程就是 dp[s^(1代码如下:#include #includ
2017-08-31 10:48:59 323
原创 XYZZY HDU - 1317
Floyd判断连通性 + spfa判断正环。题目描述:有一百个房间,你的初始能量值是100,从起点1开始出发,判断你能不能到达第100个房间。不能到达的情况是,在中途的过程中生命值降为0及以下,或者是没有路能够到达房间100。注意:题目中是单项边。而且同一个房间可以进入多次。解题分析:先用Floyd判断一下能否到达。如果能到达的话,看看到达终点的生命值是否大于0。因为要尽量能活到那,所以求
2017-08-29 20:51:34 420
原创 Perfect Service UVA - 1218
树形DP题目描述:求最少的服务器,使得其他不是服务器的计算机恰好和一台服务器计算机相邻。解题分析:定义dp[u][0] u是服务器,每个子节点可以使服务器也可以不是。dp[u][0] = sum(min(dp[v][0],dp[v][1])).dp[u][1] u不是服务器,但u的父亲是服务器,所以u的所有子节点都不是服务器。dp[u][1] = sum(dp[v][2]).
2017-08-24 20:43:12 327
原创 Party at Hali-Bula UVA - 1220
树形DP基础 求最大独立集题目描述:老板和员工不能同时选,问最大能选择多少人,并且种种方案是否唯一。解题分析:定义两个数组int dp[maxn][2];dp[u][1]表示以u为根节点的子树中选择u能得到的最大人数,dp[u][0]表示不选最大人数int f[maxn][2];f[u][0]表示以u为根节点的子树,不选u的唯一性f[u][0]表示不选唯一,f[u][1]表示选唯一 .
2017-08-23 21:41:19 326
原创 FatMouse's Speed HDU - 1160
最长上升子序列 + 打印路径题目描述:找最长的老鼠序列要求,后面的老鼠体重比前面的打,速度比前面的小,求这个最长序列的长度,并输出老鼠序列。解题分析:此题需要排序,之后按照最长上升子序列并打印路径就行了。代码如下:#include #include #include #include using namespace std;const int maxn = 1000 +
2017-08-10 22:53:04 315
原创 SuperSale UVA - 10130
01背包题目描述:一家人去超市买东西,各种物品有价格和重量,每个人都有自己的背包容量,求这一家人能够获得最大价值。解题分析:刚开始被这题给唬住了,想成了如果一个物品被某人买了,则其他人不可以卖这个物品,那这就难了。但是想想也该明白那家超市一种物品只卖一件啊,超时的物品是任意多的。这题就是单纯的01背包。代码如下:#include #include #include #incl
2017-08-10 11:32:59 291
原创 Wavio Sequence UVA - 10534
最长上升子序列题目描述:给了一个定义的序列Wavio,该序列的定义是:长度为2*n + 1,前n+1个数是严格递增的,后n+1个数是严格递减的,且相邻两个数不重复。求最长的Wavio序列的长度。解题分析:数据量是10000,显然n*n的算法行不通,必须得用n*logn的算法。在本题中我的解法是,正序求最长上升子序列,逆序再求一遍,分别记录上升序列的最小下标,算完两个序列后,只要判断两个上升
2017-08-09 22:02:24 411
原创 Tower of Cubes UVA - 10051
类似于最长上升子序列题目描述:要求把给出的小正方体尽量排得更高,要求是:下面的小正方体的重量要大于上面小正方体的重量,且相邻的正方体上面的地面要和下面的顶面颜色相同,求最大高度,并打印小正方体的排放,依次从上到下打印小正方体的序号和那个面朝上。解题分析:刚学了最长上升子序列,听说这个题是,才开始做的。读完题蒙蔽了,后来一想,是我被裸地最长上升子序列给固化了。大家可以这样想,最长上升子序列不
2017-08-09 19:40:25 416 1
原创 The trouble of Xiaoqian HDU - 3591
多重背包 + 完全背包题目描述:xiaoqian需要买T钱的货物,他有n种不同面值的硬币,每种硬币是有限个。他给收银员钱,收银员找给他钱(如果需要找钱的话),收银员总是给他最少的硬币数目。求xianqian最少需要接触多少硬币(他给收银员的,收银员给他的)。解题分析:可以分别计算xiaoqian给收银员的钱需要的最少硬币数,和收银员给它的硬币的最少数目。这样就转换成了多重背包和完全背包(收
2017-08-07 10:07:33 358
原创 Piggy-Bank HDU - 1114
完全背包题目描述:有一个小猪存钱罐,求在正好的重量的情况下的,存钱的最小值,如果不能满重输出This is impossible.解题分析:不限次数,完全背包,因为是求最小值,所以初始化时是满重,但是dp[0]必须得是0,不然dp[j] = min (dp[j], dp[j-w[i]] + v[i])这个式子没法更新。思考一个问题,为什么当最终dp[w] = INF的时候,就是不能正好的情
2017-08-04 17:18:51 274
原创 Rain on your Parade HDU - 2389
HK算法,匈牙利算法超时题目描述:t时间后会有一场大雨,有m个人和n个雨伞,求在t时间内,使得最多的人不被雨淋。求不被雨淋的人数。解题分析:显然是匹配问题,第一次写用匈牙利算法超时了,时间复杂度n^3或n*m,之后补题,学习了Hopcroft krap算法。用Hopcropt krap算法过了,时间复杂度n^0.5*m,省时间还是很明显的。预处理的时候算算每个人在规定的时间可以到达那些雨伞
2017-07-18 16:36:10 403
转载 大牛们的ACM 算法 阶段性练习
本文转载自某位大牛转载自某位大牛转载自某位大牛(递归不知边界了)的ACM学习之路。本文转载自这位大牛的博客建议:做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。 计划:第一阶段:练经典常用算法,同时自己精简代码,练到写时不用想。1.最短
2017-06-25 11:18:20 820
原创 Oulipo POJ - 3461
裸地KMP代码如下:#include #include #include #include #include using namespace std;const int maxn=1000000+10;int arrnext[maxn],lenT,lenW;char W[maxn],T[maxn];void creatnext(char *W,char* T){
2017-06-20 20:10:45 321
转载 3xian大佬的一篇博文
刚刚接触ACM的一名新人,从学长那得知3xian大佬的这篇博文。最后一天,漫天飘起了雪花,假装欢送我离去。这次WF之战不太顺利,早期的C题大概花了1秒钟构思,然而由于输出格式多了一个空格直到两个半小时才逃脱Wrong Answer的纠缠。还好lynncui在期间独挡一面过掉D。最终成绩不好,然而没有遗憾,从不遗憾。相比之下,来自全球的队伍让我看到了很强大的实力,每一道题
2017-05-29 22:04:14 741
原创 Drying POJ - 3104
题目描述:晾衣服,洗衣机一分钟可以晾K水,自然风干一分钟可以减少1水。求晾干所有衣服所需要的最小时间。解题思路:二分时间,那怎么计算满足的时间呢。转换一下思路,总时间就是洗衣机工作的时间,因为如果只有自然风干的话,时间是=w[i],t1+t2=mid(每次二分的总时间),t1是自然风干的时间。得出t2>=(w[i]-mid)/(k-1),如果(w[i]-mid)%(k-1)!=0,那么t2就得
2017-05-29 14:45:31 440
原创 Meteor Shower POJ - 3669
题目描述:小行星要撞地球了,它会在一定的时间点撞击想点(x,y)和四连块的点,求主人公最短多长时间到达安全地带。解题分析:输入时,把要撞的点处理好,注意更新要撞击点的最早时间。bfs即可。有一个小细节是坑,注意题目描述,主人公可以再第一象限和轴跑,也就是无上界,加入队列时只要x>0&&y>0就行,千万不要加x代码如下:#include #include #include #inc
2017-05-24 21:08:11 390
原创 Prime Path POJ - 3126
题目描述:给出一个素数,要求通过变换这个素数的某个数字,使变换后的数字仍然是素数,要求变换到给定的一个素数停止,求最少的变化次数。解题分析:bfs模拟求最短路就行。把每个数当做图中的一个点。代码入下:#include #include #include #include #include using namespace std;const int maxn=10000+1
2017-05-23 21:20:55 335
原创 A380 URAL - 1893
简单水题,打个表就行了。代码如下:#include #include using namespace std;const int maxn=200;int graph[maxn][maxn];int main(){ for(int i=0;i<200;i++) { if(i<=2) { graph[i]
2017-05-23 17:55:36 368
原创 Passenger Comfort URAL - 1885
题目描述:求飞机声音堵塞耳朵的时间,飞机前t秒要飞到高度H,速度不能超过v,能够堵塞耳朵的最小速度是x,求飞机声音堵塞耳朵的时间的最大时间和最小时间。解题思路:如果h/t >x , 则最大时间是t,反之则是h/x,做小时间由方程解出: x*t1+v*t2=h, t1+t2=t;解得 t2=(h-t*x)/(v-x);另外需要注意一个地方,这个式子分子代码如下:#include
2017-05-23 17:50:49 345
原创 Airport Announcements URAL - 1889
题目描述:这哥们在机场听公告,假设机场说的公告每种语言含有的短语数是相同的,他有的词能听出什么语言,有的词听不出就是“unknown”,问一共有多少种语言,多种满足情况按照从大到下的顺序输出。解题分析:简单模拟就好,没什么难度。代码如下:#include #include #include #include #include #include #include #inclu
2017-05-23 17:47:47 337
原创 C Looooops POJ - 2115
扩展欧几里得算法题目描述:算循环的次数,初始值为A,跳出循环的条件是A!=B,A每次+C,设所有的运算都是二进制k位数,运用补码的原理,当x=2^k,则x+1溢出后=1.解题思路:扩展欧几里得算法。推一下方程,令所求的次数为x (A+Cx)%2^k=B ->A+Cx=2^k*y+B ->移项得Cx-2^k*y=B-A; 将各参数代入函数即可。代码如下:#include #in
2017-05-23 00:21:14 302
原创 Cable master POJ - 1064
二分题目描述:仓库中有N条光缆,要求把它们截成总共K段等长的光缆,求截取的每段光缆的最大长度。解题思路:比较水的二分,就是精度坑人+读题费劲。注意这个题精度要求特别高,另外输出的时候因考虑到实际因素,保留两位小数的时候是把两位之后的数据截掉,并不是默认的四舍五入,所以用到了floor函数。代码如下:#include #include #include #include #i
2017-05-23 00:08:24 304
原创 AB HDU 1576
扩展欧几里得题目描述:因为A值太大没有给出,给出了A%9973的值为n,另外还给出了B,求(A/B)%9973的值。题目分析:推一下方程,用扩展欧几里得算法。另(A/B)%9973的值为x, 方程推导过程:(A/B)%9973=x -> A/B=9973*m+x -> A = 9973*m*B+x*B -> 将上式A带入A%9973 -> (9973*m*B+x*B)%9973
2017-05-22 20:55:32 294
原创 青蛙的约会 POJ - 1061
扩展欧几里得题目描述:两只青蛙都沿着一个圆轨道往西跳,第一个青蛙一步调m,第二个青蛙一步跳n,初始时第一个在位置x,第二个在位置y,轨道长度是L,求跳多少次他俩相遇。解题思路:扩展欧几里得。在此处我令第一个青蛙位置为大写的X,第二个为大写的Y,所求的次数为小写的x.方程 (X+mx)%L=(Y+nx)%L -> X+mx=pL+(Y+nx)%L ->X+mx-pL=(Y+nx)%L -
2017-05-22 00:02:28 381
转载 C - Asteroids POJ - 3041
匈牙利算法本文采自:http://blog.csdn.net/lyy289065406/article/details/6646007题目描述:你的飞船有个强大的武器可以打小行星,一次可以攻击一行或者一列,求最少的攻击次数。题目分析:问题可以转化为,选取最少的点,使得这些点与所有的边相邻。把方阵看做一个二分图,v1作为行顶点集,v2作为列顶点集,那x,y可以看做点,图中的点graph[
2017-05-21 10:03:35 402
原创 Educational Codeforces Round 21B. Average Sleep Time
题目链接:http://codeforces.com/contest/808/problem/B题目描述:给n个睡眠数据,认为连续k个数据作为一周的天数,所以需要考虑n-k+1周,求所有周的平均睡眠时间。解题思路:简单模拟即可。我的处理方法是先计算前k个数据的和。以后滑块的时候只需用sum减去这k个数据第一个数据加上最后一个数据的下一个数据即可。这样可以省了大量的计算时间,遍历一遍0(n)
2017-05-16 17:56:01 328
原创 Educational Codeforces Round 21 C. Tea Party
贪心题目链接http://codeforces.com/contest/808/problem/C题目描述:Polycarp招待朋友,给朋友们倒茶,朋友们的茶杯容量不一样,Polycarp的茶壶容量是w,w小于朋友茶杯满容量的总和。倒茶时需要满足几个条件。1.每个人的茶杯必须至少倒一半。2.每个人的茶杯倒整数的容量。3.如果甲茶杯的容量大于乙茶杯的容量,那么甲茶杯里的茶不能少于
2017-05-16 17:43:44 419
转载 习题8-14 商队抢劫者(Caravan Robbers ACMICPC NEERC 2012 UVa1616)
二分+贪心题目描述:有n个区间,选择各区间的子区间使得各个子区间不相交,而且子区间的长度相同,求最大子区间的长度。解题思路:二分枚举子区间长度,用贪心法判断该子区间是否满足题意。最后一步是将所得的浮点数化成分数。另外,本题对精度卡的特别严,1e-6都不行,1e-9可行。代码如下:#include #include #include #include #include #i
2017-05-16 17:15:50 612
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人