- 博客(132)
- 收藏
- 关注
原创 第二章作业题3-链表(2)
一、判断题 1-1 在具有N个结点的单链表中,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 F 访问节点的时间复杂度为O(N)1-2 若用链表来表示一个线性表,则表中元素的地址一定是连续的。F1-3 将长度分别为m,n的两个单链表合并为一个单链表的时间复杂度为O(m+n)。 F 时间复杂度为O(1),如果是两个有序链表合成一个有序链表的时间复杂度为O(M + N)
2017-12-08 17:31:14 34805 1
原创 第一章作业3-链式存储结构及其操作
一、单选题 2-1 线性表若采用链式存储结构时,要求内存中可用存储单元的地址 BA 必须是连续的 B 连续或不连续都可以 C 部分地址必须是连续的 D 一定是不连续的2-2 线性表L在什么情况下适用于使用链式结构实现? AA 需不断对L进行删除插入 B 需经常修改L中的结点值 C L中含有大量的结点 D L中结点结构复杂2-3 链表不具有的特点是: BA 插入、删除不需要移动元素
2017-12-07 21:33:52 4942
原创 第一章作业2-算法时间复杂度和空间复杂度
一、判断题 1-1 算法分析的两个主要方面是时间复杂度和空间复杂度的分析。T1-2 N^2logN和NlogN^2具有相同的增长速度。 F1-3 2^N和N^N具有相同的增长速度。 F1-4 100logN是O(N)的。 我觉得这个题目应该是错误的,因为时间复杂度的计算主要是要看N,而如果N很大这个题还是O(logN)的复杂度,但是答案选择是T1-5 (NlogN)/100
2017-12-07 21:20:45 11865 2
原创 第二章作业题1-顺序表
一、判断题 1-1 对于顺序存储的长度为N的线性表,访问结点和增加结点的时间复杂度分别对应为O(1)和O(N)。 T1-2 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用顺序表存储最节省时间。 T 时间复杂度都为O(1)1-3 对于顺序存储的长度为N的线性表,删除第一个元素和插入最后一个元素的时间复杂度分别对应为O(1)和O(N)。F 删除第一个元
2017-12-07 18:36:57 29580 1
原创 第一章作业1-数据结构基本概念
一、判断题 1、若用链表来表示一个线性表,则表中元素的地址一定是连续的 F 链式储存结构的地址不需要连续2、数据的逻辑结构是指数据的各数据项之间的逻辑关系 F 数据的逻辑结构是指数据的各数据元素之间的逻辑关系3、抽象数据类型中基本操作的定义与具体实现有关 F 抽象数据结构类型不需要考虑其包含的数据对象和在不同处理器中的表现和实现细节二、选择题 2-1 数据的(B)包括集合、线
2017-12-07 18:07:50 6517
原创 Twenty Questions UVA - 1252
题目传送门思路:这个题目很巧妙啊,一看就是一个状压DP,但是这个题我觉得难点在于如何求得状态转移以后的状态,一开始想了很久都没有想出来,然后看了lrj的书上写的,确实十分的巧妙,我们用dp[s][a]来表示当前已经询问了集合s的问题,具有集合a特征的还要询问最少多少次才能求得最优解,然后我们可以预处理一个数组来记录每一个状态下有多少个满足的物体。#include <algorithm>#inclu
2017-11-20 20:31:25 352
原创 Unidirectional TSP UVA - 116
题目传送门思路:一个点可以往下延伸的状态只有三种,我们可以得出一个递推公式dp[i][j] = min(dp[i - 1][j - 1], dp[i][j - 1], dp[i + 1][j - 1]),dp[i][j]表示在(i, j)这个点上的最小值,但是我们还要求字典序最小的路径,所以我们要对着过程倒序进行,然后记录下来路径。#include <algorithm>#include <cma
2017-11-01 23:38:09 283
原创 Tour UVA - 1347
题目传送门思路:这个题目其实最重要的一点就是把一个人从最左边走到走右边在走回来这个问题转换为两个人同时从最左边走到最右边(除了最左边和最右边的点其余的点只能走一次)。那么我们定义dp[i][j]代表a从起点走到了i,b从起点走到了j的最短距离(1~max(i, j)全部已经走过了),然后只有两个状态转移dp[i + 1][j]或者dp[i + 1][i],我们可以直接求解了。#include <al
2017-11-01 20:17:29 457 1
原创 粉刷匠 BZOJ - 1296
题目传送门思路:这个题先对每一块木板进行DP,dp[i][j]代表前i块木块用j次粉刷的符合要求的最大值,然后在对每一个木板进行一个背包DP就可以了。 PS:这个题目不需要用文件输入输出#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <li
2017-11-01 10:24:21 579
原创 挂饰 BZOJ - 4247
题目传送门思路:一个背包问题,这个背包问题和一般的背包问题不同的是这个背包的容量是可以变化的,所有我们定义DP[i][j]代表安装i挂钩以后还剩下j个挂钩,然后递推式就是dp[i][j] = max(dp[i - 1][j], dp[i - 1][max(j - p[i].a, 0) + 1] + p[i].b)#include <algorithm>#include <cmath>#inclu
2017-10-31 20:46:00 327
原创 游戏 BZOJ - 1854
题目传送门思路:一个二分图最大匹配问题,但是这个题emmm,因为memset用的次数太多被卡常数了,然后就看到了一个神奇的做法,可以只清空一次数组的黑科技做法。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <
2017-10-23 20:38:05 754
原创 扑克牌 BZOJ - 1816
题目传送门思路:我们可以通过二分可以组成的方案数,然后判断函数可以通过构造搞出来。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <queue>#include <set>#i
2017-10-23 20:00:05 344
原创 第四十二届ACM亚洲区域赛沈阳站总结
这个星期去了沈阳打了ACM生涯的第一场ICPC比赛,有诸多感想,写一篇总结来整理一下。 一、准备比赛 星期四下午就坐上了去沈阳的火车,经过了一天的颠簸终于到了沈阳,沈阳的天气相较于青岛更加的寒冷,到了宾馆以后收拾了一下东西开始休息等待另一个队友,等到队友来了就出去吃了一顿饭(饭还是很好吃的)然后就回来休息了。 第二天起的比较晚,起来以后就直接去东北大学报到了,拿到了参赛证和比赛
2017-10-23 17:28:49 967
原创 石子合并 BZOJ - 3229
题目传送门题意:石子合并问题一般来说都是O(N^3)的复杂度,如果用四边形不等式优化的话可以使时间复杂度降低到O(N^2)的复杂度,但是这个题目的数据范围是40000,所以这个题要用到GarsiaWachs算法,可以使时间复杂度降到O(N*logN),从而解决这个题目。#include <algorithm>#include <cmath>#include <cstdio>#include <
2017-10-18 11:19:03 450
原创 涂色paint BZOJ - 1260
题目传送门思路:一个区间DP的模版题,dp[i][j]代表字符串从i到j最少需要多少次染色,然后就是区间DP了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <queue>#i
2017-10-18 00:23:36 337
原创 中位数图 BZOJ - 1303
题目传送门思路:这个题我们先预先处理一个sum数组表示这个数字的左边有多少个大于m的数字减去小于m的数字的个数,然后我们在预处理一个数组表示,有多少个在数字m的左边有多少个值为sum[i]的个数,然后就可以在一个O(N)的时间复杂度进行计算了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#inc
2017-10-17 18:34:47 408
原创 旅行comf BZOJ - 1050
题目传送门思路:这个题先把所有的边从小到大排序,然后枚举起点,然后就可以用Kruskal来加边,直到s和t联通,这样求出来最小的比值。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include
2017-10-17 10:40:37 282
原创 绝世好题 BZOJ - 4300
题目传送门思路:这个题如果用O(N^2)的算法的话会超时,所以我们可以对每一个数字的每一位数字进行操作,这样可以在O(N*logN)的时间复杂度中完成。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>
2017-10-16 19:39:41 364
原创 能量采集 BZOJ - 2005
题目传送门思路:这个题目可以用容斥来做 我们令f[x]为gcd(i, j) = x的个数 令g[x]为i, j因子为x的个数(n / x) * (m / x) 我们再把其中最大公约数不是x的减掉就是要求的答案了#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream
2017-10-16 16:26:54 350
原创 完全平方数 BZOJ - 2440
题目传送门思路:这个题要求的是第K个非完全平方数且没有完全平方数因子的数,我们可以将这个问题转换为求这个区间的所有完全平方数且没有完全平方数因子的数的数量,这样就可以通过二分的方法来求解,具体的数量的可以通过容斥原理来求得,而此时可以用到莫比乌斯函数来做为系数。#include <algorithm>#include <cmath>#include <cstdio>#include <cstr
2017-10-16 09:25:16 478
原创 越狱 BZOJ - 1008
题目传送门思路:这个题正着想不容易想,但是我们可以去想怎么才能让越狱不发生,也就是任何两个相邻的人的信仰都不相同,然后再用所有的情况减去这个情况就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>
2017-10-13 22:20:00 294
原创 最大数maxnumber BZOJ - 1012
题目传送门思路:就可以直接用线段树来做,但是这个题用cin,cout就会re,好迷啊。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <queue>#include <set>
2017-10-13 11:39:49 327
原创 反素数ant BZOJ - 1053
题目传送门思路:这个题本来应该是一个用上唯一分解定理的爆搜,但是我没有想到一个好的放大就直接打了一个表来做的(以后补上爆搜的方法)。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include
2017-10-13 09:19:59 346
原创 动物园 BZOJ - 3607
题目传送门思路:KMP还是学的不到家,一开始写了一个超时的代码然后不会优化了,然后看别人的代码发现num数组可以在进行KMP预处理的时候计算出来可以节省很多时间,然后就是再重新的KMP进行计算(一开始直接用的nex数组,但是可能会进行大量的没用的运算超时)。#include <algorithm>#include <cmath>#include <cstdio>#include <cstrin
2017-10-12 19:56:56 347
原创 密码箱 BZOJ - 1406
题目传送门思路:x^2 mod n = 1 (x^2 - 1) mod n = 0 (x + 1)(x - 1) mod n = 0 我们假设n = k * n x - 1 = k1 * n1, x + 1 = k2 * n2 k1 * k2 = k, n1 * n2 =
2017-10-12 15:59:38 276
原创 Advanced Fruits HDU - 1503
题目传送门题意:给你两个字符串把这两个字符串合并起来,公共子串只输出一次。思路:这个题目记录一下路径就可以了,一开始没有看到是Special judge想了很久的输出方案,如果是Special judge就直接标记了以后输出就可以了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include
2017-10-11 16:57:49 333
原创 Prince and Princess UVA - 1063
题目传送门题意:求两个序列的最长公共子序列。思路:如果用最朴素的算法,显然会超时,所以用LIS的方式对LCS进行一个优化使O(N^2)转化为O(N*logN)的时间复杂度的算法(这个实现要求两个序列当中重复的元素比较少,这个题目两个序列没有重复的元素,所以没问题)。#include <algorithm>#include <cmath>#include <cstdio>#include <cs
2017-10-11 10:42:18 244
原创 Double Patience UVA - 1637
题目传送门题意:36张牌分成9堆,每堆4张牌,每一次可以拿走顶部两个相同点数的牌,如果有多种方法则按照等概率的随机拿,如果最后拿走了所有的牌则胜利,求胜利的概率。思路;用一个九元组储存状态,进行记忆话搜索。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#in
2017-10-10 21:19:27 269
原创 The Fewest Coins POJ - 3260
题目传送门题意:你去一个商店购买一个价值为T的物品,市场上有n种流通的硬币,面值分别为V1,V2..Vn (1<=Vi<=120)。John有Ci个面值为Vi的硬币(0<=Ci<=10000)。店主有无限多的硬币,并总按最优方案找零。 问你最少使用多少个硬币(包括店主找零的)思路:完全背包加多重背包。#include <algorithm>#include <cmath>#include <c
2017-10-06 10:53:25 766
原创 Cyclic Nacklace HDU - 3746
题目传送门题意:给你个字符串,问你最少添加几个字符可以让这个字符串至少循环两次。思路:直接找最小覆盖子串,然后特判一下就可以了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <q
2017-10-05 21:20:04 222
原创 Simpsons’ Hidden Talents HDU - 2594
题目传送门题意:给你两个字符串,求一个最长子串即是s1的前缀也是s2的后缀。思路:一个裸的KMP,直接求就可以了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <queue>#
2017-10-05 17:38:18 275
原创 Milking Grid POJ - 2185
题目传送门题意:这个题就是用一个最小的矩阵构成这个大的矩阵。思路:把一个一维的最小覆盖子串变成一个二维的就可以了,一个字符串的最小覆盖子串是n - nex[n]。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include
2017-10-05 17:10:15 305
原创 Theme Section HDU - 4763
题目传送门题意:给你一个字符串,你在这个字符串中间找一个最长的字串,可以和开头和结尾相同。思路:这个题还是比较暴力的,直接KMP和枚举就可以了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#in
2017-10-05 10:43:36 346
原创 Headshot UVA - 1636
题目传送门题意:你和人决斗。决斗规则如下:用一把有n个弹槽的左轮手枪,对着自己脑袋来一枪,孰生孰死看天意。现在对方已经装了若干发子弹,并随机转了一下转轮,子弹呢用一个01序列表示,0表示这个弹槽无子弹,1表示有子弹。对方先对着自个脑袋开了一枪,嗯,你只听到了一声’click’,人还好好的,是空枪。现在轮到你了,摆在你面前的有两个选择,一是直接对自己开射,二是转一下转轮再来开射,显然你会选择生还希望更
2017-09-28 21:23:28 377
原创 Space Elevator POJ - 2392
题目传送门题意:给你n种高塔,每一种高塔都有自己的高度,数量,以及这种高塔组稿不能超过的高度,问你能搭建成的最高的高度。思路:按照高塔的限制高度进行一个排序,然后多重背包就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#
2017-09-28 18:01:20 285
原创 Charlie's Change POJ - 1787
题目传送门题意:给你四种硬币,硬币的面值分别为1,5,10,25,每一种硬币分别有C1,C2,C3,C4,问你能不能通过这些硬币构成p元, (尽可能的多用硬币)如果能的话输出方案。思路:完全背包记录一下路径就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream
2017-09-27 22:31:02 278
原创 Password UVA - 1262
题目传送门题意;给你两个6行5列的密码矩阵,找出满足下列条件的“密码”:密码中的每一个字母都在两个矩阵的对应列中出现,求字典序第k大的的密码,如果没有输出NO。题意:直接暴力瞎搞一下就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <l
2017-09-27 17:41:18 377
原创 Send a Table UVA - 10820
题目传送门题意:给出n,算出小于等于n的所有数中,有几对互质。思路:我们用欧拉函数打个表就好了。#include <algorithm>#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <list>#include <map>#include <queue>#include <
2017-09-27 11:12:27 271
原创 Irrelevant Elements UVA - 1635
题目传送门题意:给你n个数字,一次求出相邻的两个数字的和,会得到一个新的数列,重复这个操作,最后会变成一个数字,问这个数字的余数和哪些数字无关?思路:这个题如果直接计算组合数的话要用到高精度算法,所以我们可以将这个问题转换为用唯一分解定理来做,求出来m的所有素因子,然后再求组合数的所有素因子判断即可。#include <algorithm>#include <cmath>#include <cs
2017-09-27 09:46:23 276
原创 Codeforces Round #436 (Div. 2) 解题报告
比赛传送门A. Fair Game 题意:给你n个卡牌(n是偶数),每一个卡片上都有一个数字,有两个人,这两个人各选择一个数字把所有带有这个数字的卡片拿走,问两个人能不能把所有的卡片拿走,且两个人拿到的卡片数相同。思路:这个题emmm,读了好久,每一个人只能选择一个数字然后就直接写就行了。#include <algorithm>#include <cmath>#include <cstdio>
2017-09-26 17:57:13 255
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人