自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

转载 算法第五章上机实践

实践题目工作分配问题问题描述有n个人、n个工作,每个人只能做一个工作,每人对应每个工作有一个消费,求完成所有工作的最小消费算法描述这里采用回溯法,按顺序给每个人分配工作,如果一件工作已经被分配,打上标记防止被重复分配分配过程中,如果当前的消费已经大于等于已知的最小消费,就停止对子节点的搜索。心得体会实际上这题还有优化空间和另外的解法。可以用课本的方法通过排列组合来剪枝。...

2018-12-23 19:41:00 152

转载 算法第五章作业

对回溯法的理解回溯法与dfs很像,区别是:dfs在递归返回时并不会把状态改回历史状态,而回溯法会。子集和问题的解空间结构和约束函数子集和问题就是01背包问题,它的解一定是n件物品 每件拿或不拿 的 \(2^{n}\) 种状态中的一种。当时做那道题的时候只用了一个很简单的约束,即对所有数字从小到大排序,若当前搜索到的节点的值已经大于目标状态,无需搜索剩余子节点。学习过程中遇到的问...

2018-12-23 19:33:00 154

转载 算法第4章实践

实践题目删数问题问题描述删除一个n位长的数字中的k位,要使得删完之后的数最小。算法描述首先确定贪心策略。当一个n位的数减少一位时,无论减少哪一位,得到的一定是一个n-1位的数,因此,优先降低最高位的数能使数字减小得最多。从左到右,如果一个数的下一位比这个数小,显然应该删除这个数,这样高位就减小了。因此,最终答案的前缀一定是非递减的(前缀中一旦出现递减,前面那个数就可以删了...

2018-12-01 23:20:00 163

转载 算法第4章作业

我对贪心算法的理解贪心算法在解决问题时总是选择局部最优解,若要求全局最优解,则必须证明问题的局部最优解与全局最优解一致。局部最优解与全局最优解不一致时,也可以用贪心算法逼近全局最优解(往往会比dp和搜索快得多)。汽车加油问题的贪心选择性质显然,当汽车从上一个站开到当前站后剩余的油量足够开到下一个站时,不需要加油;否则加一次油。遇到的问题及结对编程的情况往往因为不能证明贪心策略的...

2018-12-01 22:10:00 120

转载 CodeForces - 404C Restore Graph

Valera had an undirected connected graph without self-loops and multiple edges consisting of n vertices. The graph had an interesting property: there were at most k edges adjacent to each of its ...

2018-11-19 11:30:00 131

转载 算法第3章上机实践报告

实践题目数字三角形问题描述给出一个\(n\)行的由数字组成的三角形,第\(i\)层有\(i\)个数字,每步可以向下走或向右下走,问从顶端到底部的路径的最大数字之和是多少。算法描述用\(dp[i][j]\)表示走到第\(i\)行第\(j\)列能取得的最大值,显然\(dp[i][j]\) = \(max(dp[i-1][j],dp[i-1][j-1]) + a[i][j]\)最...

2018-11-10 18:57:00 100

转载 codeforce743D - Chloe and pleasant prizes

题意:一棵\(n\)个节点的树,每个节点有一个价值(存在负数)。两个人一人选一棵子树,问 在两棵子树没有公共节点的情况下 两人能取到的价值之和的最大值。思路:设\(dp[u]\)是在以\(u\)为根的树选一棵子树能取到的最大价值。\(dp[u]\)要么是整棵树的权值之和\(sum[u]\),要么是\(dp[v]\)中的最大值(\(v\)是\(u\)的孩子)。而答案显然是某一个节点的价值...

2018-11-06 22:51:00 113

转载 求树上每两点的距离之和

给定一棵n个节点的树和n-1条边的权值,求每两点间的权值的总和。\((n \leq 1e5)\)暴力做法求出每两个点的\(lca (O(nlogn)\)预处理,\(O(logn)\)查询),预处理路径前缀和后\(O(1)\)求得\(n^2\)数量级的点对,时间复杂度\(O(n^2logn)\),TLE了。正解:统计每条边被经过的次数,乘以权值,求和1.每条边连接了两个联通块...

2018-11-05 18:00:00 491

转载 算法第3章作业

对动态规划的理解(递归解法)确定递归出口直接返回已计算过的子问题的解对于没计算过的问题,用其子问题的解将其算出7-1其中\(dp[i]\)表示前i个数字在包含\(a[i]\)情况下的最长上升子序列的长度int solve(int k){ if (dp[k]) return dp[k]; for (int i=1;i<k;++i) ...

2018-10-28 21:30:00 101

转载 算法第二章上机实践报告

1、实践题目 7-32、问题描述输入两个长度为\(N\)的升序有序序列,输出他们归并后的序列的中位数要求算法时间复杂度为\(O(logN)\)3、算法描述第一次没仔细审题,写了个\(O(N)\)的归并,归并到\(2(N-1)/2\)的地方就输出了。后来重写了一次,用的是二分的做法,先分别求出两个序列的中位数,比较二者的大小,将较小者左边的数舍去,较大者右边的数舍去,要保证两个...

2018-10-21 15:49:00 100

转载 第五周解题报告 Gym - 101908L 树链剖分裸题

VJ的链接:https://cn.vjudge.net/problem/Gym-101908L题目大意:一棵\(n\)个点的树上,查询\(a\) ~ \(b\),\(c\) ~ \(d\)两段路径公共的点的个数。解题思路:读完题就感觉是树链剖分的裸题呀...树链剖分可以在\(O(logN)\)的时间内维护树上任意一条路径上的点权之和把每个点的权值初始化为\(0\),对于每次询...

2018-10-18 17:51:00 218

转载 对二分思想的体会以及结对编程的感想

二分查找可以在有序的支持随机访问的容器中快速查找某个元素的信息时间复杂度: \(O(logN)\)原始版本:递归实现:int binarySearch(int a[],int val,int l,int r){ if(l > r) return -1; int m = l + r >> 1; if (val == a[m])...

2018-10-14 13:49:00 161

转载 快速幂 N很大的时候

前几天网络赛的一个题,找了下规律发现是要输出2n−12^{n-1}2n−1,111 ≤\leq≤ nnn ≤\leq≤ 1020010^{200}10200,答案对1000000007取模,直接快速幂取模要用大数,很麻烦。百度了下,于是学到了费马小定理: 假如p是质数,且gcd(a,p)=1,那么 ap−1a^{p-1}ap−1 ≡\eq...

2018-09-17 21:49:00 117

转载 Jiu Yuan Wants to Ea 2018icpc焦作网络预选赛E

题目链接:https://nanti.jisuanke.com/t/31714 题意 :一棵树,n个点,初值均为0,有四个操作: 1 u v x 把u v路径上所有点乘以x 2 u v x 把u v路径上所有点加上x 3 u v 把u v路径上所有点的值按位取反 4 u v 查询u v路径上所有点的和 答案 % 26...

2018-09-17 15:53:00 114

转载 ACM-ICPC 2018 徐州赛区网络预赛 J - Maze Designer

题目链接:https://nanti.jisuanke.com/t/31462题意: 在一个N*M的空地上,建墙造一个迷宫,使得迷宫的耗费最小,且迷宫中的任意两点之间只有一条路,题目保证每组数据的迷宫唯一。 输入迷宫中两个点的坐标,输出两点间的距离思路:任意两点间只有一条路,显然是一棵树。在地图上建最大生成树,就可以使得墙的耗费...

2018-09-13 21:00:00 132

转载 树的点分治 bzoj2152

聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃、两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已经玩儿腻了这种低智商的游戏。他们的爸爸快被他们的争吵烦死了,所以他发明了一个新游戏:由爸爸在纸上画n个“点”,并用n-1条“边”把这n个“点”恰好连通(...

2018-09-07 15:23:00 128

转载 Splay bzoj3223文艺平衡树

Splay,中文名伸展树,是由tarjan大神发明的… orz 本质上就是BST加上splay操作——把结点x旋转到指定结点的下面。 每次查询完都把查到的数旋转到根,就可以让所有查找的时间效率为均摊O(logN) (不知道为啥…大佬说是就是吧orz)因为Splay可以通过伸展操作随意改变树的结构,只要把排名L-1的结点伸展到根,把排...

2018-09-06 19:52:00 136

转载 Treap(旋转) bzoj3224普通平衡树

Treap = Tree + heap,Tree是BST,即同时维护二叉查找树和堆的性质 Treap的定义:int ch[maxn][2], val[maxn], siz[maxn], num[maxn], pri[maxn];//此处优先级用了小根堆int tot, rt;#define ls ch[now][0]#def...

2018-09-05 23:29:00 166

转载 线段树 标记永久化

一般线段树做区间修改操作时,先是找到目标区间,然后修改该区间,并打下延迟标记,最后从目标区间自底向上,更新所有包含目标区间的区间的值(即pushup)。当该区间子节点被访问前,pushdown下推标记。 这种维护区间的方式存在一点点弊端。例如用这种方式写一棵可持久化线段树,因为每次pushdown都相当于继续之前延迟了的更新操作,所以得开...

2018-08-27 20:24:00 130

转载 poj 3468 (splay)

最近在学splay,就用这道题来记一下模板。splay是二叉搜索树,满足中序遍历有序的性质;同时,splay操作可以在不改变中序序列的前提下改变树的结构。因此,splay可以十分方便地维护区间信息。#include<cstdio>using namespace std;const int maxn = 1e5 + ...

2018-08-27 14:18:00 109

转载 HDU6356 Glad You Came(线段树区间更新+剪枝)

题意: 有一个长度为n的数组a,初值均为0,有m组修改,由题目给的一个随机函数生成l, r, v,把a在区间 [ l , r ] 中小于v的值修改为v,最终输出 ⨁ni=1⨁i=1n aiai*ii (对a1a1到anan求异或和)思路: 先把l r v全都弄出来,维护每个区间a的最大值和最小值。 在update的时候,如果mi...

2018-08-09 00:50:00 170

转载 HDU6315 Naive Operations (2018多校第二场) 线段树

题目链接: hdu6315 题目大意: 输入一个n,下一行输入一个长度为n的数组b,b是1到n的一种全排列,还有一个长度为n初值全为0的数组a 两种操作: 1) 输入add l r ,将alal到arar的数字全都 +1 2) 输入 que...

2018-07-26 11:21:00 161

转载 树剖模板(点权)(洛谷P3384)

#include<bits/stdc++.h>using namespace std;const int maxn = 100000+10;int N,M,R,P,w[maxn];struct{ int to,next; }e[maxn<<1];int head[maxn],edgeN...

2018-07-24 23:52:00 78

转载 HDU2852 KiKi's K-Number (权值线段树求第k大)

题意:三种操作,0 e 表示插入一个数字e,1 e 表示删除一个数字e,2 e k 表示查询比e大的第k个数,删除和查询均可能没有目标。思路:建一棵权值线段树,维护每个数字区间中数字的数量。 查询时,先查出1到e的数字数量n,然后查询第k+n大。#include<cstdio>#include<cstring...

2018-07-18 20:44:00 202

转载 SPOJ3267 D-query(可持久化线段树)

题意: 输入N个数字,查询区间[L,R]中有多少个不同的数字(第i个数字为a[i])思路:要维护的是不同的数字的数量,所以每个数只记最后出现的那一次。对N个位置每个位置建一棵线段树,线段树维护的是插入a[i]后树上各区间数字的数量。如果a[i]这个数字在前面被插入过,就在新建的树中把 包含a[i]的上一个位置的 所有区间 的 值-1...

2018-07-18 20:37:00 91

转载 倍增法求LCA(最近公共祖先)

实在太蠢了搞不定ST表o(╥﹏╥)o,只能学个倍增法了。讲倍增法前先看看暴力法。 第一步肯定是dfs求每个点的深度。 查询lca(a,b)时,先把ab中深度较大的点往上移,移到两个点深度相同为止; 现在两个点深度相同了,于是两个点一起往上移,直至移到同一个位置,即最近公共祖先。倍增法其实就是在暴力的基础上,对把两个点上移的过程...

2018-07-14 00:51:00 99

转载 HDU3974 Assign the task(dfs序+线段树)

老板与员工之间是树形关系。每次给一个员工下达任务就是修改这个员工为根的子树。 用dfs序把每一棵子树转化成一个区间,用线段树维护,T就是区间更新维护lazy,C就是单点查询。#include <bits/stdc++.h>using namespace std;const int maxn = 50005;int T...

2018-07-09 19:53:00 127

转载 主席树模板(POJ2104)

离散化: 对数组排完序后用unique去重,unique返回的是去重后的数组的末地址,减去第一个元素的地址就能得到去重后的数组大小,用lower_bound查找原数字在排序去重后的序列中的位序,用位序代替数字完成离散化。#include<cstdio>#include<algorithm>using...

2018-07-09 13:48:00 73

转载 POJ3667(线段树区间合并)

#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1const int maxn...

2018-07-06 23:16:00 72

转载 堆排序

今天课上学的堆排序。#include<bits/stdc++.h>using namespace std;void HeapAdjust(int a[],int i,int len){ if(i>len/2)//大于len/2的是叶子结点,不用调整 return ; int...

2018-06-22 22:18:00 77

转载 线段树模板(新)

#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1#define pushup(rt) t[rt] = t[rt<<1] + t[rt<<1|1];const int maxn = 100000+10;typedef long long l...

2018-05-16 17:19:00 79

转载 根据二叉树的先序遍历和中序遍历序列建树

思路:先序序列的每个元素代表一个根节点,这个元素在中序序列中左边的部分就是它的左子树,右边部分就是它的右子树代码如下(求树深度的部分是多余的):#include<iostream>using namespace std;int N;string xian,zhong;struct node{ ch...

2018-05-14 16:29:00 396

转载 zoj1610- Count the Colors(线段树区间染色覆盖问题)

Painting some colored segments on a line, some previously painted segments may be covered by some the subsequent ones. Your task is counting the segments of different col...

2018-05-10 11:10:00 169

转载 小小学习计划∠( ᐛ 」∠)_

昨天华工省赛1题打铁QAQ,自己那部分的题也没a出来,有点小难受。这学期的比赛基本告一段落了,下半学期要先把绩点补一补,先不挂科。然后要继续拓展知识的宽度,在慢慢拓展宽度的情况下选一个方面强化一下深度。 训练了这么多次,感觉RMQ问题还是挺常见的,那就从RMQ入手开始多做些题。我的计划是先找线段树的题做,然后慢慢学ST和差分,顺带把做题...

2018-05-07 00:43:00 79

转载 AC自动机(hdu2222)

写的链式的,数组实现还不会。 链式如果delete就会花费很多时间,不delete就花很多内存。 就先这样吧……#include<bits/stdc++.h>using namespace std;string str,pri;int T,n;struct Node{ int cnt; Nod...

2018-04-18 22:37:00 70

转载 KMP模板

char t[1000005],p[10005];int Next[10005];void getNext(){ int j=0,k=-1; int len = strlen(p); Next[0] = -1; while(j<len) if(k==-1||p[j]==p[k])...

2018-04-11 20:31:00 69

转载 ZOJ4020 Traffic Light (bfs)

好久没打搜索了。。一个bfs哇了一晚上╭(╯^╰)╮ 题目几乎是一个裸的bfs,只不过每个点有两种状态,每走一步状态就反转,所以判下一个点的去过没有的时候要判断与当前状态相反的点。 代码:#include <bits/stdc++.h>using namespace std;bool t[100005]; i...

2018-04-11 16:31:00 164

转载 2018年华工校赛E——Youhane Assembler

题目主干如下: 链接:https://www.nowcoder.com/acm/contest/94/E 来源:牛客网我们给出一个字符串的集合,在这个集合中有个字符串,编号为的字符串的长度为。我们给出个查询,每个查询是一个整数对,表示我们假定号串在左边,号串在右边,我们要查询的是最大的长度使号串的前缀与号串的后缀相等。 如我们有串...

2018-04-09 00:40:00 105

转载 天梯赛总结

师兄要求的天梯赛总结→_→1.为什么翻车 第一题确实是不会做。然后T1有两道题卡了,“福到了”卡住是因为记错getline的语法导致输入不对,a不了;“倒数第N个字符串”在倒着减的时候忘记减1了一直wa(倒数第N个要从后往前减N-1次。。。)。 做题还是很马虎,打自己QAQ。 2.为什么没上180 ...

2018-04-02 23:28:00 87

转载 字典树模板(链式)

struct Node{ int cnt; Node *next[26]; bool exist; Node() { cnt = 0; memset(next,0,sizeof(next)); exist = false; } }*rt...

2018-03-30 00:38:00 75

空空如也

空空如也

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

TA关注的人

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