05 2020 档案
摘要:H. Binary Median 题意:给定,,及个二进制数,在由0到这个二进制数中删掉这个数,求剩余二进制数的中位数。 LL trans(char s[]) { int len = strlen(s); int j=0; LL ans=0; whil
阅读全文
摘要:POJ 2253 Frogger 题意:给个结点的坐标,两两之间均可连通。找出在所有从结点到结点的路径中,最大边的权值(距离)最小的那一条,输出这个权值(距离)。 思路: POJ 1797 Heavy Transportation的镜像题……这里求的是最小生成树的最大边。 int
阅读全文
摘要:POJ 1797 Heavy Transportation 题意:给一个无向图,找出在所有从结点到结点的路径中,最小边的权值最大的那一条。输出这个权值。 思路: 方法有两种:一是最短路变形,二是最大生成树。 这里先给出最大生成树的代码。最大生成树可以保证生成“最小边的权值最大的那一条路径
阅读全文
摘要:线段树 线段树的根节点是整段区间,其它结点是由区间不断二分得到的子区间,其中叶子结点是区间的每个单独的元素。 存储 这里使用结构体存线段树。 struct Tree { int left, right; long long value, lazy;//结点维护的值及懒标记 }tree[4*maxn+
阅读全文
摘要:POJ 1511 Invitation Cards 题意:给一个有向图,求从结点1到各结点,再从各结点回到结点1的最小花费之和。 思路: 反向建边,没了。 一开始INF设成了0x3f3f3f3f,以为真的可以当无穷大用,洛谷那边WA一发才发现它表示的数量级是,在本题不够用,遂改为1e17
阅读全文
摘要:SPFA 即队列优化过的Bellman-Ford算法,可以处理带负权图。 应用于单源最短路。 此外还可以进行负权环的判定,即若第n次操作仍可降低花费,则一定存在负权环。 //Bellman-Ford算法 for (int i = 0; i < n; i++) d[i] = INF; d[0] = 0
阅读全文
摘要:POJ 3268 Silver Cow Party 题意:给一个有向图及终点x,求各点与x之间往返最短路之和的最大值 思路:floyd当然是最吼的……但点太多,T了。于是反向建边,这样就可以通过求x的dij两次得到各点往x的最短路和从x返回各点的最短路。代码写得过于繁琐了。 struct node
阅读全文
摘要:POJ 1502 MPI Maelstrom 题意:给一个无向图,求从结点1到其他结点的最短路中的长度最大值 思路:裸的Dijkstra……记得先cin>>n再初始化,居然在这个弱智错误上卡了10分钟。atoi()在数字与字符混合输入这种情况好用,用来将一个字符串转为整型。 struct node
阅读全文
摘要:POJ 2387 Til the Cows Come Home 题意:给一个无向图,求从结点n到结点1的最短路 思路:裸的Dijkstra……邻接矩阵的话就在原来有向图的基础上多一次AddEdge操作就完事了 const int INF = 100000+1; const int maxn = 10
阅读全文
摘要:1.【板子题】POJ 2387 Til the Cows Come Home 2.【最小生成树】POJ 2253 Frogger 3.【最大生成树】POJ 1797 Heavy Transportation 4.【反向建边】POJ 3268 Silver Cow Party 5.【判正环】Curre
阅读全文
摘要:Dijkstra算法 (gif来源:戴克斯特拉算法 - 维基百科) 计算正权图上的单源最短路,同时适用于有向图与无向图 ①给源点标记,其他 ②循环:每次都从d值最小的结点开始,对于从出发的所有边,对于未被访问过的结点,更新$d[y]
阅读全文
摘要:树: 连通且不含环的图 生成树:给定无向图G=(V,E),连接G中所有点,且边集是E的子集的树 最小生成树(MST):权值最小的生成树 Kruskal算法 ①将所有边按从小到大排列 ②依次考察每条边。若和在同一个连通分量中,加入$(u,v)\(会成环,因此不能选择;**否则
阅读全文
摘要:"B Ternary String" 题意:给定一段只包含“1”“2”“3”的字符串,求其中包含三个数字的连续子串的最小长度。 思路:不断更新各数字的最近一次出现的位置,再用其中最大下标与最小下标计算这个合法子串的长度,再不断更新答案即可。 就,注意这种求最优解的题,有时候只需要在遍历过程中不断更新
阅读全文
摘要:"A Alarm Clock" 模拟,要注意的点都在注释里了
阅读全文
摘要:"A Alarm Clock" "B Ternary String" "C1 Simple Polygon Embedding"
阅读全文
摘要:"C1 Simple Polygon Embedding" 题意:给定n,求能包围(即正多边形的所有点均在正方形的里面或者边上)正2 n边形的正方形的最小面积。 思路: 为偶数时,正多边形必有四条边分别和正方形的四条边重合,根据这个算一下即可: $ans=2 (\frac{\frac{1}{2
阅读全文
摘要:"D Game With Array" 题意:构造一个长度为,和为的正整数序列,问能不能找到一个1~S的数,使得数组里找不出一个子序列的和为或者 思路:构造一个前项均为1,第项为的数组即可。此时只要,取$K=N
阅读全文
摘要:"A Sequence with Digits" $a_{n 1}的各个位数中最大/最小的那个。给定
阅读全文
摘要:"B. Same Parity Summands" "D. Alice, Bob and Candies" "E. Special Elements" "G. Special Permutation"
阅读全文
摘要:"F. Decreasing Heights" 题意: 给定一个的地图,每个格子有初始高度。只能向右或向下移动,且要求第步的高度必须比第步恰好高。每次操作可以使得任意一个格子的高度减。问最少需要几次操作,使得地图中存在由到的路径。 思
阅读全文
摘要:"D. Constructing the Array" 题意: 给定一个长度为n的全0数组,每次进行以下操作直到所有元素均不为零:在第次操作中,取最长的全为0的一段子序列(优先取最左边的),令。其中为偶数,取或。
阅读全文
摘要:"E. K periodic Garland" 题意:给定长度为n的01字符串,每次操作可以改变一个字符的状态,问使字符串中相邻1的距离为k的最小操作次数 思路: DP。 记录前项中的个数 为使得前项都合法,第位为时的最小操作次数 $
阅读全文
摘要:"D Phoenix and Science" 题意: 初始有1个质量为1的细菌,每次可以选任意个细菌进行分裂,分裂后所得的两个细菌质量均为原细菌的一半。选完之后现有全部细菌质量+1。问最少操作几次可以使得细菌总质量为n。 思路: 简化题意:设第次操作后细菌总质量为,细菌数为,
阅读全文
摘要:"C. Phoenix and Distribution" 题意 :给定长度为n的字符串s,将s任意拆分成k个部分,求k个部分中字典序最大的最小字典序 思路: 因为是任意拆分,所以将s中的字母从小到大排序,那么字典序最小的字母为s[1],记它的个数为p 实际上要求的还是最小字典序,那么在构造这k个部
阅读全文
摘要:"C.Orac and LCM" 题意: 给定一个长度为的数组,求$gcd\{{lcm(a_i,a_j)|i using namespace std; const int maxn = 3e5 + 10; typedef long long LL; LL gcd(LL a, LL b) {re
阅读全文
摘要:[Codeforces Round 640 (Div. 4) G. Special Permutation](https://codeforces.com/contest/1352/problem/G) 题意:输出一个全排列,要求相邻数字之差的绝对值≥2且≤4. 思路: 不难发现n必须≥4,且n=4
阅读全文
摘要:[Codeforces Round 640 (Div. 4) D. Alice, Bob and Candies](https://codeforces.com/contest/1352/problem/D) 题意:两个人轮流吃数组,一个从左端开始(第一次只吃a[1]),另一个从右端开始,吃掉的元素
阅读全文
摘要:[Codeforces Round 640 (Div. 4) E. Special Elements](https://codeforces.com/contest/1352/problem/E) 题意:给定元素个数8000的就不要装了,没必要并且会越界
阅读全文
摘要:[Codeforces Round 640 (Div. 4) B. Same Parity Summands](https://codeforces.com/contest/1352/problem/B) 题意:给定和n与数字个数k,问能否有k个偶数/奇数之和为n 思路:先填k 1个1或者k 1个2
阅读全文