题意思考
leoxry
天道酬勤,拼搏一个最好的自己送给未来的自己,每天开开心心敲代码就是一种幸福,不计得失,回归刚开始学习时内心的单纯
展开
-
B - 滑雪 POJ - 1088——dfs+记忆化搜索
Think: 1知识点:dfs+记忆化搜索 1>记忆化搜索=搜索的形式+动态规划的思想 2>记忆化搜索简介: 记忆化搜索:算法上依然是搜索的流程,但是搜索到的一些解用动态规划的那种思想和模式作一些保存。 一般说来,动态规划总要遍历所有的状态,而搜索可以排除一些无效状态。 更重要的是搜索还可以剪枝,可能剪去大量不必要的状态,因此在空间开销上往往比动态规划要低很多。 记忆化算法在求解的时候原创 2017-07-29 20:57:07 · 481 阅读 · 0 评论 -
N - Tram——最短路_spfa()算法
Think: 1知识点:最短路_spfa()算法 2思考:理解题意进而建图vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int inf = 0x3f3f3f3f;const int N = 1e2原创 2017-07-21 14:45:35 · 391 阅读 · 0 评论 -
A - Wireless Network ——并查集
Think: 1知识点:并查集 2题意分析:初始状态已知n台电脑坐标,以及电脑连接的最大距离,进而,2种操作,操作O将电脑u连接到可连接集合,操作S询问电脑u和电脑v是否在同一集合 3解题思路:预处理各台电脑与其它电脑的距离,标记已修复电脑,操作O枚举并通过并查集连接可与电脑u连接的电脑,操作S通过并查集进行判断是否在同一集合 4优化思路:将可连接坐标预处理并通过前向星记录可与当前结点连接的原创 2017-07-22 09:31:10 · 651 阅读 · 0 评论 -
B - The Suspects ——并查集
Think: 1知识点:并查集 2思考:可否过程运行中得到每一个集合的元素数目vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N = 3e4 + 4;int n, m, f[N];void Init();int get_f(原创 2017-07-22 15:10:08 · 362 阅读 · 0 评论 -
D - How Many Answers Are Wrong——种类并查集
Think: 1知识点:种类并查集+后缀和数组 2思考:当学习新的知识点的时候不理解的地方应该动手实现在纸上模拟实现进而提高理解vjudge题目链接可参考博客1(种类并查集) 可参考博客2 可参考博客3以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const原创 2017-07-22 16:59:13 · 342 阅读 · 0 评论 -
L - 小希的迷宫——并查集_环
Think: 1知识点:并查集集合内判断环的存在+并查集判断集合数目 2反思: 1>题目分析基本完备再代码实现,不要急于求成 2>初始思路错误采取新思路应考虑之前思路可以判断的情况当前思路是否可以判断vjudge题目链接参考代码1——并查集集合内判断环的存在 参考代码2——题意条件分析以下为Accepted代码#include <cstdio>#include <cstring>#in原创 2017-07-22 18:08:14 · 420 阅读 · 0 评论 -
G - Meeting Room Arrangement UVALive - 6606——动态规划
Think: 1知识点:动态规划 2题目分析:会议室0~10时可开会,输入最多20组开会起止时间,询问可安排的最大开会数量 3思路: 1>动态规划——线性时间规划 2>数据量最多20组开会起止时间,可暴力枚举状态选择最优解vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using原创 2017-07-31 21:08:04 · 475 阅读 · 0 评论 -
I - Cabin Baggage UVALive - 6608——double精度
Think: 1知识点:double精度 2思考:double类型变量比较大小时注意精度vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const double zero = 0.001;int main(){ int T, cnt;原创 2017-07-31 21:36:59 · 341 阅读 · 0 评论 -
G - Supermarket ——贪心+并查集优化时间复杂度
Think: 1知识点:贪心+并查集优化时间复杂度 2题意分析:给定n个商品的价值和售卖截止时间,每天可售卖一个商品,询问可获得的最大利润 3解题思路:贪心思想取当前时间的最优解,暴力n*n基本超时,进而并查集优化时间复杂度 4反思:独立思考,不要一味依赖解题报告,好的思想和方法可以借鉴,但一定要有自己的思考和创新点,多思考,多反思vjudge题目链接建议参考博客—题意分析以下为Accept原创 2017-07-23 10:10:03 · 1006 阅读 · 0 评论 -
I - Navigation Nightmare——带权并查集
Think: 1知识点:带权并查集+向量增移法 2反思:变量初始化位置需要注意,避免重复计算vjudge题目链接建议参考博客以下为Time Limit Exceeded代码——变量重复初始化,导致大量重复运算/*1.带权并查集2.向量增移法*/#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>原创 2017-07-23 16:23:10 · 365 阅读 · 0 评论 -
G - Arctic Network ——最小生成树+double精度+优先队列
Think: 1知识点:最小生成树+double精度+优先队列 2题意分析:现在需要连接我方哨点,两种电子连接方式,第一种卫星信号,任意距离,第二种电台信号,有距离限制,因考虑后期维护需要确定所有用电台连接的哨点中信号联系最大距离,第一行输入测试组数n,每组测试数据第一行输入S([1, 100])和P((S, 500]),代表可用卫星信号连接的哨点数量和总的哨点数量,之后P行x, y(0 <=原创 2017-08-01 09:04:56 · 367 阅读 · 0 评论 -
D - A Short problem HDU - 4291——矩阵快速幂
Think: 1知识点:矩阵快速幂 2反思: 1>内嵌关系取模考虑循环节和矩阵快速幂 2>矩阵快速幂通过把数放到初始矩阵的不同位置,进而将普通的递推式转换为“矩阵的等比数列”,进而快速幂求解递推式 3>矩阵快速幂解题步骤: 第一步列出递推式 第二步建立矩阵递推式,找到转移矩阵vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstri原创 2017-08-08 09:10:44 · 359 阅读 · 0 评论 -
B - I Hate It ——线段树
Think: 1知识点:线段树——区间最值+单点更新 2反思:注意数组不要越界,开四倍即可vjudge题目链接B - I Hate It 很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input 本题目包含原创 2017-08-01 10:30:19 · 359 阅读 · 0 评论 -
L - 01 Gym - 101078L——数学+double精度
Think: 1知识点:数学+double精度 2题意:给定1个长度不超过4000的01字符串,通过交换两个字符的位置,使得最终状态第一部分全部为0第二部分全部为1,每交换两个字符的位置,损失sqrt(j-i),i,j为交换的字符所在位置的下标,询问到达最终状态最少损失和 3方法:由数学a + b >= 2sqrt(a*b)可推测得到当a, b接近时取得的值逐渐增大,因此最小损失和即使得所加的原创 2017-08-01 19:48:51 · 275 阅读 · 0 评论 -
D - Collatz Gym - 101078D——数学
Think: 1知识点:数学 2题意:输入n, 给定1~n的结点,偶数结点m与m/2结点有绳子连接,奇数结点m与结点3*m+1有绳子连接,询问要剪断n+1之后的绳子与1~n绳子的连接需要剪断多少根绳子 3方法:通过数学关系推导数学公式vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>u原创 2017-08-01 20:14:07 · 295 阅读 · 0 评论 -
I - Keylogger Gym - 101078I——模拟队列+栈
Think: 1知识点:模拟队列+栈 2题意分析:字母输入移动,分别用队列记录输入光标之前内容,用栈记录光标之后可能存在的内容vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>#include <stack>using namespace std;int op, tp;char li原创 2017-08-01 21:06:02 · 438 阅读 · 0 评论 -
A - Coder HDU - 4288——线段树
Think: 1知识点:预处理得到有序线段树结点对应关系进而逐渐建树 2题意:维护有序集合的插入操作/删除操作/求和操作vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef long long LL;const int N = 1e5原创 2017-08-07 21:47:16 · 324 阅读 · 0 评论 -
H - Highways——最小生成树Kruskal算法+Prim算法
Think: 1知识点:最小生成树Kruskal算法+Prim算法 2思考: 1>多组输入超时,单组输入AC——why??? 2>排序时结构体内重载小于号快于再单独写cmp判断函数 3题意:需要使得n个结点构成连通图,已知有m个结点已经连接,询问最小花费构成连通图还需要连接那些结点 4思路: 1>Kruskal算法:先预处理所有结点距离,预处理结点距离时将其入队,之后按照权值排序,然后原创 2017-08-02 10:09:39 · 549 阅读 · 0 评论 -
G - 免费馅饼 HDU - 1176 ——dp-金字塔
Think: 1知识点:dp 2题意分析:建立二维时间位置数组,然后从最后掉落时间开始,金字塔向上更新 3反思:注意不要数组越界,注意不同题目for循环更新方向不要习惯性i++vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int Max(in原创 2017-08-09 09:52:09 · 395 阅读 · 0 评论 -
B - 英语考试 FZU - 2254——最小生成树
Think: 1知识点:并查集 2题意思考:将每一个单词视为一个结点,两点之间的权值即为联想背这两个单词的精力,这样背过n个单词即可认为将n个结点生成一棵树 3反思:初始化注意结点范围vjudge题目链接以下为Wrong Answer代码——初始化范围错误#include <cstdio>#include <cstring>#include <algorithm>using namespa原创 2017-07-24 21:38:24 · 549 阅读 · 0 评论 -
小明の魔法计划——最长上升子序列
Think: 1知识点:最长上升子序列 2反思:知识体系需要加深拓展SDUT题目链接小明の魔法计划 Time Limit: 1000MS Memory Limit: 65536KBProblem Description 在一个遥远的数学魔法国度,小明在学习一个魔法,这个魔法需要一些施法材料,所幸的是施法材料已经准备好了,下一步就是建立魔法阵了,每一个施法材料都有一个特性值,表示为一个大于1小原创 2017-07-24 22:02:30 · 562 阅读 · 0 评论 -
I - Agri-Net——最小生成树Prim算法
Think: 1知识点:最小生成树Prim算法 2题意:输入权值矩阵,求最小花费使得n个结点构成连通图vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int inf = 0x3f3f3f3f;int e[114][114], vis[原创 2017-08-02 10:38:41 · 342 阅读 · 0 评论 -
I - 最少拦截系统 HDU - 1257——dp/数组模拟+二分
I - 最少拦截系统 HDU - 1257——dp/数组模拟+二分 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 怎么办呢?多搞几套系统呗!你说说倒蛮容易,原创 2017-08-09 11:28:02 · 375 阅读 · 0 评论 -
B - Networking——最小生成树_Prim算法(未堆优化)
Think: 1知识点:最小生成树_Prim算法(未堆优化) 2题目思考:稠密图,Prim算法(未堆优化) 3反思:memset()初始化注意第三个参数应为sizeof(初始化数组) 4题意分析: 1>n个点,选择最优方案连成一个网络,注:初始给定边无限 2>即选择n-1条边将n个结点连通 3>边无限即稠密图,进而选择最小生成树Prim算法(未堆优化)vjudge题目链接以下为Acce原创 2017-07-25 09:58:45 · 377 阅读 · 0 评论 -
J - FatMouse's Speed HDU - 1160——基础dp
Think: 1知识点:排序+最长上升子串+记录路径 2题意:寻找一个最长子串,使得重量w严格递增,速度c严格递减 3反思:注意排序后的路径记录和通过递归回溯输出路径vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;struct Node{原创 2017-08-09 14:54:27 · 448 阅读 · 0 评论 -
J - Borg Maze——bfs+最小生成树_Prim算法
Think: 1知识点:bfs+最小生成树_Prim算法 2题意:最短路径和连接所有’A’和’S’结点 3方法:对于每一个’A’和’S’结点通过bfs算法求出其与其它’A’和’S’结点的最短路径,建图,进而通过最小生成树_Prim算法连接这tp个结点,使其构成连通图vjudge题目链接以下为Accepted代码——63ms#include <cstdio>#include <cstring>原创 2017-08-02 15:26:55 · 523 阅读 · 0 评论 -
C - Building a Space Station——最小生成树_Prim算法
Think: 1知识点:最小生成树_Prim算法+浮点数坐标建图 2题意分析:给定n个点的空间坐标和半径,将n个点直接或间接连通,连通可认为: 1>两个坐标(作为球理解)重合或覆盖 2>建立通道将两个坐标(作为球理解)连接,通道长度计算应为表面到表面的直线长度 3优化思路:题目中自己使用浮点数建图,后续优化可考虑使用实数建图,初始坐标输入的时候将浮点数转化为实数(本题目乘以1000即可),原创 2017-07-25 11:01:58 · 560 阅读 · 0 评论 -
【线段树左右衔接区间更新查找问题】I - Tunnel Warfare HDU - 1540
Think: 1知识点:线段树左右区间衔接更新查找问题 2题意:数,线段,三种操作,D操作(删除一个数),R操作(回复前一个删除的数),Q操作(查询一个数所在线段的最大连续线段长度)vjudge题目链接建议参考博客以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>#include <stack>using原创 2017-08-16 17:42:48 · 449 阅读 · 0 评论 -
【线段树单点更新优化】H - Can you answer these queries? HDU - 4027
Think: 1知识点:线段树单点更新优化(优化条件(开根后平方数为1的结点不需要再次开根)) 2题意:两种操作:对一个区间所有数取其平方数;对一个区间所有数求和 3反思: 1>注意数据范围 2>注意输入区间是否合法,是否L一定会小于Rvjudge题目链接以下为Time Limit Exceeded代码——未加优化条件#include <cstdio>#include <cstring>原创 2017-08-16 12:05:45 · 328 阅读 · 0 评论 -
【线段树区间更新】Count the Colors ZOJ - 1610
Think: 1知识点:线段树区间更新 2题意:一条长度为8000的布条,每次输入xi, yi, ci, 表示将区间[xi, yi]染色为ci,询问最终状态每个颜色分别染了几段,按照index顺序输入 3反思: 1>左右儿子结点编号不要传入错误 4思考:先将区间[1, 8000]全部初始化为-1, 之后输入xi, yi, ci之后将区间[xi+1, yi]颜色更新为ci, 更新完成后,进行原创 2017-08-15 10:22:39 · 371 阅读 · 0 评论 -
P - FatMouse and Cheese HDU - 1078——dfs+记忆化搜索
Think: 1知识点:dfs+记忆化搜索 2题意:输入一个邻接矩阵,求一条递增路径,满足沿四个方向直线移动最多k步的条件,使得路径经过的点权之和最大vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int inf = 0x3f3f3f原创 2017-08-09 17:33:50 · 408 阅读 · 0 评论 -
【矩阵快速幂+二分】Matrix Power Series POJ - 3233
Think: 1知识点:矩阵快速幂+二分求解等比矩阵前n项和 2题意:输入一个矩阵,求解矩阵前n项和(S = A^1 + A^2 + A^3 + … + A^k.),模modvjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int N原创 2017-08-16 20:48:04 · 404 阅读 · 0 评论 -
Q - Phalanx HDU - 2859——基础dp-最大对称子矩阵
Think: 1知识点:基础dp-最大对称子矩阵 2题意:给定一个矩阵,寻找一个最大对称子矩阵,当前题目最大对称子矩阵定义可理解为沿当前子矩阵的次对角线元素对称 3思考:确定动态转移方程的过程可以抽象成根据题意条件将一个大问题不断缩小一直缩小到可以解决的小问题vjudge题目链接以下为Accepted代码#include <cstdio>#include <cstring>#include原创 2017-08-09 19:43:38 · 706 阅读 · 0 评论 -
N - 畅通工程再续——最小生成树Prim算法+double精度
Think: 1知识点:最小生成树Prim算法+double精度 2反思: 1>题意判断条件需要明确清晰 2>注意编程细节,变量类型赋值要准确vjudge题目链接以下为Accetped代码#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>using namespace std;const int原创 2017-08-02 20:01:31 · 380 阅读 · 0 评论 -
I - 浪里个浪 FZU - 2261——最短路_spfa算法(多起点-多终点)
Think: 1知识点:最短路_spfa算法(多起点-多终点) 2思考:将起点vis置为1,dis置为0,spfa算法,然后dis数组取多终点中的最小值 3优化思考:创建源点0和汇点n+1,将源点0与所有起点连边(无向边),边权为0,将所有终点与汇点n+1连边(无向边),边权为0;然后spfa算法求0点到n+1点的最短路即可vjudge题目链接以下为Accepted代码——多起点_多终点#in原创 2017-07-25 22:04:18 · 1056 阅读 · 0 评论 -
【线段树+dfs序】J - Assign the task HDU - 3974
Think: 1知识点:线段树+dfs序 2题意:输入一棵关系树,两种操作,C操作(查询结点x正在进行的工作(初始工作默认为-1)),T操作(结点x及其下属开始进行y工作) 3思路:通过dfs序将其转化为可以建为线段树的映射结点,进而进行线段树的查询和更新操作即可。(用每个节点的所包含的子节点段来当做线段树的节点,查找每个节点所包含的段可以用简单的DFS实现) 4反思:lazy标记没有很好理原创 2017-08-17 10:51:21 · 451 阅读 · 0 评论 -
E - Just a Hook HDU - 1698——线段树区间更新+lazy标记
Think: 1知识点:线段树区间更新+lazy标记 2题意:在n个初始化点权为1的点的基础上进行区间更新,询问最终状态n个点的点权之和 3反思:当前题目lazy标记赋值更新vjudge题目链接以下为Wrong Answer代码——lazy标记更新错误#include <cstdio>#include <cstring>#include <algorithm>using namespace原创 2017-08-10 11:02:14 · 387 阅读 · 0 评论 -
C - A Simple Problem with Integers ——线段树_区间更新
Think: 1知识点:线段树-区间更新-区间查询-lazy标记 2题意分析:区间更新+区间查询 3反思: 1>单点更新会超时 2>lazy标记区间更新ACvjudge题目链接以下为Time Limit Exceeded代码#include <cstdio>#include <cstring>#include <algorithm>using namespace std;typedef原创 2017-08-03 10:51:32 · 283 阅读 · 0 评论 -
E - QS Network——最小生成树_Prim算法
Think: 1知识点:最小生成树_Prim算法 2题意分析:n个结点,连接后信息可传递,边权等于两个结点的“适配器费用”加上“电缆费用”,询问最少花费;由连接后信息可传递可得到连接后的图应为连通图,进而考虑选择n-1条边连接n个结点即可vjudge题目链接以下为Accepted代码—50ms#include <cstdio>#include <cstring>#include <algor原创 2017-07-26 08:42:48 · 430 阅读 · 0 评论 -
F - Truck History——最小生成树_Prim算法
Think: 1知识点:最小生成树_Prim算法 2思考:字符串组最优生成 3题意分析:为使得1/Σ(to,td)d(to,td)最大,分子部分为1的状态使得分母最小即可,即生成所有“卡车种类”的最短距离和最小 4相同类型题目博客分享:博客: B - 英语考试 FZU - 2254——最小生成树 vjudge题目链接以下为Accepted代码#include <cstdio>#includ原创 2017-07-26 09:31:29 · 398 阅读 · 0 评论