ACM
以梦为马,不负韶华
青衫白衣98
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。
展开
-
2020.12.27 ACM总结感悟
2020年12月27号打完我最后一场区域赛(由于大一结束当了两年兵,今年是我高中毕业的第五年,也是我人生中最后一场区域赛了,也是第二场区域赛),拿了一个铜,就忽然写一下接触acm以来的感悟。目前战绩:2020年南京区域赛打铁(216名,差6名拿牌),2020济南区域赛铜牌(162名),2020河南省赛金牌,2020蓝桥杯国赛C++A组二等奖,2020年天梯赛个人三等奖。我是寒假的时候(差不多2020年1月31号左右,当时疫情只能在家太过无聊)开始练习acm(曾经在去年12月份的时候被室友拉着打过一次校赛原创 2020-12-27 23:47:35 · 722 阅读 · 10 评论 -
个人ACM模板总结
个人ACM模板总结——AC_Jobim一、图论(一)链式前向星(二)最短路1.Dijkstra算法:O(mlogn)2.bellman_ford:O(nm)3.Floyed算法:O(n^3)4.Spfa求最短路:边权可能是负值,但不存在负权回路5.Spfa判断负环:O(m),最坏O(nm)6.Dijkstra算法:朴素版(三)最小生成树1.Prim算法:O(n^2),用于稠密图,邻接矩阵2.Prim算法:O(n^2),邻接表3.Kruskal算法:O(mlogm)(四)二分图1.匈牙利算法:O(nm)2.K原创 2020-12-27 19:27:25 · 4427 阅读 · 2 评论 -
2020南京赛区总结
南京赛区_夜的向日葵打铁总结:总体流程:比赛开始前,我们就定了几点策略:1.每道题至少有两个人来读,防止对于题意的理解错误2.始终要跟着榜单走。3.zzh负责签到比赛开始,我们三个分开读题,同时也跟着榜单走,三分钟发现有人过了K,于是zb和zza一起看B,15分钟在我们两个的讨论下B题1A,当时大于是排在七十多名。之后看榜单L题有人过了,此间lzy跟zb说了E题的题意。当时看E题有个过。于是我们三人就开始共同看L题,但由于英语不太好,多了差不多得有十几分钟zzh才率先理解题意,并告诉zb和lzy原创 2020-12-20 23:32:36 · 151 阅读 · 0 评论 -
洛谷-P1972 [SDOI2009]HH的项链 莫队,离线+树状数组
做法一:树状数组+离线在线好像不能做,于是就想对于区间l-r,如何利用前缀和的思想写,如果对于每一种颜色在区间l-r中只标记一次就可以利用前缀和的思想。于是,对于一个[l,r]的区间,如果出现了多个相同的颜色,我们可以只关心在区间[l,r]中,该颜色最后一个贝壳。此时就可以对查询区间r排序,离线进行操作。代码:#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>原创 2020-11-29 23:24:31 · 152 阅读 · 0 评论 -
网络流入门——Edmond-Karp算法
原文地址 一、概念引入 首先要先清楚最大流的含义,就是说从源点到经过的所有路径的最终到达汇点的所有流量和。 流网络G=(V,E)是一个有向图,其中每条边(u,v)∈E均有一个非负容量c(u,v)>=0。如果(u,v)不属于E,则假定c(u,v)=0。流网络中有两个特别的顶点:源点s和汇点t。下图展示了一个流网络的实例(转载 2020-11-23 10:47:25 · 604 阅读 · 0 评论 -
Codeforces Round #673 (Div. 2) E. XOR Inverse
题目链接题意:给一个数组 ,需要找到一个 X ,使数组中每个数 异或 X 后 ,数组中的逆序对数最少 ,如果有多个 X 找最小的那个,求 X和逆序对数。思路:1、因为数的高位能直接接决定数值的大小,在当前位异或1并不能改变高位相同的这些数内部的逆序数对,所以我们处理时可以不用考虑整个数的大小,只需要看高位的逆序对数是否能通过异或1变得更小2、同样的道理,当 当前位的前几位数确定且前几位不同时,改变当前位也不能改变这两个数的相对大小。所以我们只用计算每组相同高位的数内部的逆序数对和正序数对,看是否需原创 2020-11-06 19:20:44 · 132 阅读 · 0 评论 -
codeforces 1430E String Reversal
题目链接题目大意:每次可以交换相邻的两个字母,问最少多少步可以把该字符串翻转。方法一:小技巧:一个数列的逆序对数是其通过相邻交换恢复为自然序列的最小交换次数所以将逆序字符串从小到大编号,并将编号对应到原字符串,由于是最优的,所以在原字符串中,相同字符的编号一定是从小到大,这样可以保证相同字符不会进行交换。之后用树状数组求逆序对#include<iostream>#include<algorithm>#include<cstring>#include<原创 2020-10-29 19:55:05 · 111 阅读 · 0 评论 -
CodeForces - 1437E Make It Increasing
题目链接题目大意:给出一个长度为 n 的序列,现在有 m 个位置被锁定,也就是无法进行操作,每次操作可以选择一个没有被锁定的位置,将其更改为任意数值,现在问最少进行多少次操作,可以使得整个序列变得严格递增。1.当没有位置被锁定的时候:可以参考hdu5256因为要通过修改使序列变成严格递增的,所以对于对于任何一个不需要修改的位置i,j(i<j)一定满足a[j]-a[i]>=j-i ,=>a[j]-j>=a[i]-i;所有可以构造一个b数组使b[i] = a[i]-i;所以答案原创 2020-10-28 16:12:15 · 161 阅读 · 0 评论 -
poj1151Atlantis 扫描线法,暴力和线段树优化
解法:1.离散化y的坐标,通过二分寻找2.将x坐标排序,并保存为(x1,y1,y2,1),(x2,y1,y2,-1);对于矩形左边界+1,对于矩形又边界-1。3.从小到大扫描每一个x,并且维护当前y轴上的有效长度ans+=两个x的坐标差*前y轴上的有效长度线段树优化:线段树维护的不是点,而是两个点之间的区间暴力代码:#include<iostream>#include<cstring>#include<vector>#include<algor原创 2020-05-24 21:41:35 · 144 阅读 · 0 评论 -
线段树总结
是不是觉得其实很简单,而且因为左子树都是偶数,所以我们常用位运算来寻找左右子树k<<1(结点k的左子树下标)k<<1|1(结点k的右子树下标)线段树的建立...原创 2020-05-22 23:48:14 · 119 阅读 · 0 评论 -
线段树——区间最大连续字段和(acwing245)
题目链接求区间的最大连续字段和,需要同时维护节点的sum(区间和),lsum(区间前缀和最大值),rsum(区间后缀的最大值),dat(最大字段和)。ac代码:#include<bits/stdc++.h>using namespace std;const int inf = 0x3f3f3f3f;const int N = 500005;struct Node{ int l,r; int sum;//区间和 int lsum,rsum,dat;}tr[4原创 2020-05-22 11:38:45 · 462 阅读 · 0 评论 -
树状数组学习总结
树状数组一、树状数组介绍二、单点更改,区间查询操作:三、区间更改,单点查询操作:四、区间更改,区间查询操作:一、树状数组介绍讲解过于简单,可以参考https://www.cnblogs.com/xenny/p/9739600.html二、单点更改,区间查询操作:#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int N = 500005; int原创 2020-05-19 23:39:52 · 114 阅读 · 0 评论 -
二分图总结
二分图总结一、二分图二、二分图的最大匹配(匈牙利算法)三、最小点覆盖和最大独立集四、有向无环图的最小路径点覆盖和最小路径可重复点覆盖一、二分图定理:一张无向图是二分图,当且仅当图中不存在奇数环。染色法判断二分图模板:二、二分图的最大匹配(匈牙利算法)最大匹配:“任意两条边都没有公共点”称为一组匹配,在二分图中,包含边数最多的一组匹配被称为最大匹配。匈牙利算法模板:三、最小点覆盖和最大独立集最小点覆盖:在二分图中。求最少的点集,使得每一条边至少都有端点在这个点集中最大独立集:在二分图中,选取原创 2020-05-19 19:26:42 · 456 阅读 · 0 评论 -
lca——hdu2586(离线和在线做法)
题目链接方法一:在线做法(树上倍增法)#include<iostream>#include<queue>#include<cstring>using namespace std;const int N = 40005;struct edge{ int v,w,ne;}e[N*2];int h[N],idx,vis[N],d[N],f[N][20],dep[N];int depth = 17;int n,m;void add(int a,in原创 2020-05-14 22:36:38 · 290 阅读 · 0 评论 -
差分约束系统
转载地址:https://www.acwing.com/blog/content/1740/ 1.最短路基本性质如果图中不存在负权回路,则当算法结束以后,对于边(x,y)有 dis[y]≤dis[x]+w ,即 dis[y]−dis[x]≤wdis[y]−dis[x]≤w 成立。2.差分约束系统 3.差分约束系统与最短路径 4.构图求解4.1构图 4.2求解 若存在负环,则不等式组一定矛盾。即:不等式组无解 <->转载 2020-05-10 09:22:47 · 267 阅读 · 0 评论 -
差分约束系统总结
差分约束系统是一种特殊的N元一次不等式。它包含了N个变量x1到xN以及M个约束条件。形如xi<=xj+ck。而我们需要求出来满足所有约束条件。而对于每个差分约束系统的约束条件,与单源最短路问题中的三角不等式d[y]<=d[x]+w,相似,此时可以将差分约束系统转化成求最短路的问题。对于每一个约束条件xi<=xj+ck,可以建立一条从点j到i的一条边权为ck的一条有向边,然后再求最短路。对于每一个约束条件xi>=xj+ck,可以建立一条从点j到i的一条边权为ck的一条有向边,.原创 2020-05-09 15:42:19 · 273 阅读 · 0 评论 -
spfa+01分数规划——poj3621 Sightseeing Cows
http://poj.org/problem?id=3621DescriptionFarmer John has decided to reward his cows for their hard work by taking them on a tour of the big city! The cows must decide how best to spend their free ti...原创 2020-05-08 00:20:07 · 123 阅读 · 0 评论 -
acwing1148——秘密的牛奶运输(求次小生成树)
https://www.acwing.com/problem/content/description/1150/农夫约翰要把他的牛奶运输到各个销售点。运输过程中,可以先把牛奶运输到一些销售点,再由这些销售点分别运输到其他销售点。运输的总距离越小,运输的成本也就越低。低成本的运输是农夫约翰所希望的。不过,他并不想让他的竞争对手知道他具体的运输方案,所以他希望采用费用第二小的运输方案而不是最...原创 2020-05-07 20:31:29 · 246 阅读 · 0 评论 -
acwing346走廊泼水节——最小生成树转化成完全图
https://www.acwing.com/problem/content/description/348/给定一棵N个节点的树,要求增加若干条边,把这棵树扩充为完全图,并满足图的唯一最小生成树仍然是这棵树。求增加的边的权值总和最小是多少。注意: 树中的所有边权均为整数,且新加的所有边权也必须为整数。输入格式第一行包含整数t,表示共有t组测试数据。对于每组测试数据,第一行包含整数N。...原创 2020-05-07 17:33:33 · 295 阅读 · 0 评论 -
floyd求最小环——poj1734Sightseeing trip
题目链接DescriptionThere is a travel agency in Adelton town on Zanzibar island. It has decided to offer its clients, besides many other attractions, sightseeing the town. To earn as much as possible fro...原创 2020-05-06 13:19:25 · 142 阅读 · 0 评论 -
poj3463最短路和次短路计数
题目链接DescriptionTour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the bus moves from one city S to another city F. On this way, the tourists in the bus can ...原创 2020-05-05 15:31:17 · 271 阅读 · 0 评论 -
spfa+dp思想——洛谷1073最优贸易
https://www.luogu.com.cn/problem/P1073题目描述CC国有nn个大城市和mm 条道路,每条道路连接这 nn个城市中的某两个城市。任意两个城市之间最多只有一条道路直接相连。这 mm 条道路中有一部分为单向通行的道路,一部分为双向通行的道路,双向通行的道路在统计条数时也计为 11条。CC国幅员辽阔,各地的资源分布情况各不相同,这就导致了同一种商品在不同城市的价格...原创 2020-05-04 18:37:55 · 251 阅读 · 0 评论 -
IDA*——poj3460——Booksort
题目连接DescriptionThe Leiden University Library has millions of books. When a student wants to borrow a certain book, he usually submits an online loan form. If the book is available, then the next day...原创 2020-04-29 22:22:51 · 123 阅读 · 0 评论 -
双向dfs——送礼物
题目连接:送礼物题目描述:达达帮翰翰给女生送礼物,翰翰一共准备了N个礼物,其中第i个礼物的重量是G[i]。达达的力气很大,他一次可以搬动重量之和不超过W的任意多个物品。达达希望一次搬掉尽量重的一些物品,请你告诉达达在他的力气范围内一次性能搬动的最大重量是多少。输入格式第一行两个整数,分别代表W和N。以后N行,每行一个正整数表示G[i]。输出格式仅一个整数,表示达达在他的力气范围内...原创 2020-04-29 14:45:27 · 631 阅读 · 0 评论 -
迭代加深——poj2248Addition Chains
题目连接DescriptionAn addition chain for n is an integer sequence with the following four properties:a0 = 1am = na0 < a1 < a2 < … < am-1 < amFor each k (1<=k<=m) there exist two...原创 2020-04-29 14:39:26 · 138 阅读 · 0 评论 -
DFS剪枝——poj3074数独
题目连接DescriptionIn the game of Sudoku, you are given a large 9 × 9 grid divided into smaller 3 × 3 subgrids. For example,. 2 7 3 8 . . 1 .. 1 . . . 6 7 3 5. . . . . . . 2 93 . 5 6 9 2 . 8 .. . ....原创 2020-04-28 20:46:37 · 525 阅读 · 0 评论 -
A*算法——第K短路
题目连接暴力做法:bfs,当搜索到目标点K次时,结束操作。思路:由于此题数据范围过大,不能利用bfs,进行无脑宽搜,为了减少搜索量,尽可能早的搜索到目标点,此时需要用到A*算法。当搜索到目标点K次时,则为答案。估价函数:注意估价函数不能大于未来实际代价,所以可以设计估价函数为:该点到目标点的最短距离,可以利用反向建边,Dijkstra算法求解。ac代码:#include<iostr...原创 2020-04-26 23:44:13 · 165 阅读 · 0 评论 -
A*算法——解经典八数码问题
题目连接问题引入:在进行bfs搜索的过程中,只能说明起始状态距离该状态的代价最小,但是在未来的搜索中,该状态到目标状态的可能会花费更高的代价,导致最优解的搜索量增大。为了提高搜索效率,可以让那些代价大的方案尽可能的在后面进行搜索,此时就需要引入A*算法。做法:设计一个估值函数f(state),估算出当前距离目标状态的代价,使估值越小的状态,尽可能的在前面搜索。实现方法:利用优先队列存储,值...原创 2020-04-26 21:35:32 · 1145 阅读 · 0 评论 -
双向广搜之字串变换
题目连接已知有两个字串 A, B 及一组字串变换的规则(至多6个规则):A1 -> B1A2 -> B2…规则的含义为:在 A 中的子串 A1 可以变换为 B1、A2 可以变换为 B2 …。例如:A=’abcd’ B=’xyz’变换规则为:‘abc’->‘xu’ ‘ud’->‘y’ ‘y’->‘yz’则此时,A 可以经过一系列的变换变为 B,其变换的...原创 2020-04-26 18:17:54 · 210 阅读 · 0 评论 -
树的中心,经典树形dp
题目连接给定一棵树,树中包含 n 个结点(编号1~n)和 n−1 条无向边,每条边都有一个权值。请你在树中找到一个点,使得该点到树中其他结点的最远距离最近。输入格式第一行包含整数 n。接下来 n−1 行,每行包含三个整数 ai,bi,ci,表示点 ai 和 bi 之间存在一条权值为 ci 的边。输出格式输出一个整数,表示所求点到树中其他结点的最远距离。数据范围1≤n≤10000,...原创 2020-04-23 20:37:53 · 313 阅读 · 0 评论 -
单调队列优化的完全背包问题
单调队列优化的完全背包问题题目连接方法一:单调队列中维护dp[i][j]的最大值#include<iostream>using namespace std;const int N = 20005;int n,V,m;int v[N],w[N],dp[1005][N],s[N];int q[200005];int rear ,front ;int main(){ ...原创 2020-04-18 23:16:46 · 352 阅读 · 0 评论 -
状态压缩dp求最短哈密尔顿路径
题目连接给定一张 n 个点的带权无向图,点从 0~n-1 标号,求起点 0 到终点 n-1 的最短Hamilton路径。 Hamilton路径的定义是从 0 到 n-1 不重不漏地经过每个点恰好一次。输入格式第一行输入整数n。接下来n行每行n个整数,其中第i行第j个整数表示点i到j的距离(记为a[i,j])。对于任意的x,y,z,数据保证 a[x,x]=0,a[x,y]=a[y,x] 并...原创 2020-04-12 16:16:49 · 371 阅读 · 0 评论 -
poj2411状态dp
Mondriaan’s DreamTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 24701 Accepted: 13643DescriptionSquares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, a...原创 2020-04-12 15:01:45 · 77 阅读 · 0 评论 -
ACM数学知识总结
学了两天终于学会了一点儿关于数学方面的知识,特此总结纪念一下数学知识总结一、数论方面(一)质数和约数质数的判定1.试除法判断质数2.埃氏筛选0(n*logn*logn)3.线性筛选0(n)分解质因数约数1.试除法求约数2.求约数的个数3.求所有约数的和欧几里得算法(辗转相除法)(二)欧拉函数求欧拉函数O()线性筛欧拉函数O(n)(三)欧拉定理与费马小定理(四)扩展欧几里得算法乘法逆元方法一:方法...原创 2020-04-08 18:20:26 · 1215 阅读 · 1 评论 -
Codeforces629-Div. 3-D. Carousel(dfs+剪枝)
D. CarouselThe round carousel consists of n figures of animals. Figures are numbered from 1 to n in order of the carousel moving. Thus, after the n-th figure the figure with the number 1 follows. Eac...原创 2020-03-27 11:01:47 · 247 阅读 · 1 评论 -
论memset的时间复杂度
昨天参见了首场cf,结果B题就遇见了问题,怎么优化就是超时,后来赛后补题的时候终于发现,原因就是memset。memset的时间复杂度为On,对于Educational Codeforces Round 84 (Rated for Div. 2)的b题,经测试定义一个数组使用memset的时间为1200ms,而定义两个数组使用memset的时间就提示超时。最后换成循环初始化的时候ac时间仅为9...原创 2020-03-24 19:39:27 · 6772 阅读 · 5 评论 -
Johnson 算法 洛谷P5905
题目连接新手刚接触关于最短路径问题,然而今天却接触了一道Johnson全源最短路的问题,于是就从Bellman-Ford 算法开始学习,最后终于对于Johnson有了一点自己的领悟,于是在此发表题解留念,还望各位巨佬及大神指点批评。一、负环问题刚开始准备用spfa直接判断负环,发现连第二个样例都没过去(原因,spfa不能直接判断非连通图的负环,于是我就建个虚拟点,与每个点连一条边权为0的边就...原创 2020-03-18 22:06:48 · 404 阅读 · 0 评论 -
图之单源最短路径(Dijkstra、SPFA)
单源最短路径穿插一下我是如何建图的:我采用的建图方式是邻接表:用vector数组进行实现//我习惯与自己写结构体,当然也可以采用自带的pairstruct edge{ int v,w;//顶点和边的权值};//写一个初始化函数存图edge make_edge(int _v,int _w){ edge cur;cur.v = _v;cur.w = _w; return cur;...原创 2020-03-18 15:05:52 · 120 阅读 · 0 评论 -
ACM训练史上最详细计划(大神养成记)
看完人家的博客,发现任重道远。。。一位高手对我的建议:一般要做到50行以内的程序不用调试、100行以内的二分钟内调试成功.acm主要是考算法的,主要时间是花在思考算法上,不是花在写程序与debug上。下面给个计划你练练:第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出...转载 2020-03-02 11:51:35 · 598 阅读 · 1 评论 -
高精度——大数乘法
高精度——大数乘法方法:先不算任何的进位,将每一位相乘,相加的结果保存到同一个位置,到最后才计算进位。//对于数组a,b都是正序的情况 void mult(char a[],char b[]){//al表示被乘数的位数,bl表示乘数的位数 int i,j,k; int al = strlen(a); int bl = strlen(b); int t[al+bl]; int ...原创 2020-03-01 20:42:37 · 193 阅读 · 0 评论