02 2020 档案

摘要:L1-049 天梯赛座位分配 #include<bits/stdc++.h> using namespace std; const int maxn=1010; int g[maxn][maxn]; int c[maxn]; int site[1000010]; int N; int main () 阅读全文
posted @ 2020-02-25 14:20 zlc0405 阅读(162) 评论(0) 推荐(0) 编辑
摘要:在建图的时候对原图进行加边 建立一个超级源点~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1014; const int maxm=10014; const i 阅读全文
posted @ 2020-02-23 20:27 zlc0405 阅读(100) 评论(0) 推荐(0) 编辑
摘要:专题一 字符串处理 A1001 Format(20) #include<cstdio> int main () { int s[11]; int a,b,sum; scanf ("%d %d",&a,&b); sum=a+b; if (sum<0) { printf ("-"); sum=-sum; 阅读全文
posted @ 2020-02-23 17:32 zlc0405 阅读(245) 评论(0) 推荐(0) 编辑
摘要:C.田忌赛马 直接贪心做就可以~ #include<bits/stdc++.h> using namespace std; const int maxn=10014; int a[maxn],b[maxn]; int main() { int n; while(~scanf("%d",&n)) { 阅读全文
posted @ 2020-02-22 21:18 zlc0405 阅读(161) 评论(0) 推荐(0) 编辑
摘要:留坑 #include<bits/stdc++.h> using namespace std; const int maxn=14; const int mod=99991; typedef long long ll; string s,t; int tol1=0,tol2=0,tol3=0; in 阅读全文
posted @ 2020-02-22 00:51 zlc0405 阅读(295) 评论(0) 推荐(0) 编辑
摘要:A.患者的编号 给出一个有向图,要求你输出字典序最小的拓扑排序。 常规拓扑排序是做不了的,正解是反向建图,同时用大根堆的优先队列维护,保证每次优先访问编号大的结点,再反向输出~ #include<bits/stdc++.h> using namespace std; const int maxn=1 阅读全文
posted @ 2020-02-21 18:36 zlc0405 阅读(577) 评论(0) 推荐(0) 编辑
摘要:#include<cstdio> #include<iostream> using namespace std; int n,x,a,b; int main() { cin>>n>>x>>a>>b; double ans=n*(a*x*1.0/100+b*(100-x)*1.0/100); prin 阅读全文
posted @ 2020-02-19 19:43 zlc0405 阅读(105) 评论(0) 推荐(0) 编辑
摘要:可以把面积为1的好三角形分成两类分开统计:两条边和两个坐标轴平行;只有一条边和某个坐标轴平行。 对于第一种情况,一定是1*2或者2*1的形式,一个1*2的矩形中含有4个不同的三角形。总数是4*((n-2)*(m-1)+(m-2)*(n-1)) 对于第二种情况,可以分别统计底边为2,高为1和底边为1, 阅读全文
posted @ 2020-02-19 19:39 zlc0405 阅读(102) 评论(0) 推荐(0) 编辑
摘要:假设s可以由t重复k次拼成,即s=tttt……tt,我们称为s=t^k。先给定一个字符串s,求最大的n使得存在t满足s=t^n。 用kmp的nxt数组解决~ #include<cstdio> #include<cstring> #include<iostream> using namespace s 阅读全文
posted @ 2020-02-19 19:25 zlc0405 阅读(104) 评论(0) 推荐(0) 编辑
摘要:给定一个字符串,求不相同子串个数。每个子串一定是某个后缀的前缀,那么原问题等价于求所有后缀之间的不相同子串个数。总数为n*(n-1)/2,再减掉height[i]的和就是答案 #include<cstdio> #include<cstring> #include<algorithm> using n 阅读全文
posted @ 2020-02-19 19:11 zlc0405 阅读(119) 评论(0) 推荐(0) 编辑
摘要:可重叠的k次最长重复子串利用后缀数组计算S和height数组然后二分,进行分组~ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=1e6+14; int sa[max 阅读全文
posted @ 2020-02-19 19:06 zlc0405 阅读(121) 评论(0) 推荐(0) 编辑
摘要:有N(1<=N<=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的子串,它需要满足如下条件:1.长度至少为5个音符。 2.在乐曲中重复出现(就是出现过至少两次)。(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值) 3.重复出 阅读全文
posted @ 2020-02-19 18:29 zlc0405 阅读(103) 评论(0) 推荐(0) 编辑
摘要:B.Harborfan的新年拜访Ⅱ 就是一道tarjan缩点的裸题。 建图比较麻烦 以后遇到这种建图,先用循环把样例实现出来,再对着循环写建图公式 #include<bits/stdc++.h> using namespace std; const int maxn=1014; vector<int 阅读全文
posted @ 2020-02-19 18:17 zlc0405 阅读(120) 评论(0) 推荐(0) 编辑
摘要:有n个关系,他们之间某些人相互认识。这样的人有m对。你需要把人分成2组,使得每组人内部之间是相互不认识的。如果可以,就可以安排他们住宿了。安排住宿时,住在一个房间的两个人应该相互认识。最多的能有多少个房间住宿的两个相互认识。 先是要判断是否为二部图,然后求最大匹配。 学习一下模板~ #include 阅读全文
posted @ 2020-02-17 19:59 zlc0405 阅读(97) 评论(0) 推荐(0) 编辑
摘要:有N个人排队,每一个人都有一个val来对应,每一个后来人都会插入当前队伍的某一个位置pos。要求把队伍最后的状态输出。 倒序插入,线段树单点更新,从头到尾输出线段树的状态 #include<cstdio> #include<algorithm> #include<cstring> using nam 阅读全文
posted @ 2020-02-17 18:42 zlc0405 阅读(84) 评论(0) 推荐(0) 编辑
摘要:线段树单点更新~ 建立线段树存储区间内的最大剩余宽度,优先询问左子树~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1e6+14; struct node { i 阅读全文
posted @ 2020-02-17 18:19 zlc0405 阅读(99) 评论(0) 推荐(0) 编辑
摘要:高难度dfs,解析看subway map那篇博客 #include<cstdio> #include<algorithm> #include<cstring> #include<map> #include<vector> using namespace std; const int maxn=100 阅读全文
posted @ 2020-02-17 12:09 zlc0405 阅读(152) 评论(0) 推荐(0) 编辑
摘要:大模拟题 #include<bits/stdc++.h> using namespace std; const int maxn=1014; struct node { int data; node * left; node * right; }; void insert (node * &root 阅读全文
posted @ 2020-02-17 12:06 zlc0405 阅读(100) 评论(0) 推荐(0) 编辑
摘要:根据后序和先序,判断树是否唯一并生成中序 #include<bits/stdc++.h> using namespace std; vector<int> in,pre,post; bool unique1=true; void getIn (int preL,int preR,int postL, 阅读全文
posted @ 2020-02-17 12:04 zlc0405 阅读(110) 评论(0) 推荐(0) 编辑
摘要:PAT A1123 建立一颗平衡二叉树并判断其是否是完全二叉树~ #include<cstdio> #include<algorithm> #include<queue> #include<vector> using namespace std; struct node { int v; int h 阅读全文
posted @ 2020-02-17 12:02 zlc0405 阅读(106) 评论(0) 推荐(0) 编辑
摘要:建立一颗avl树并输出根节点~ #include<cstdio> #include<algorithm> using namespace std; struct node { int v; int height; node * left; node * right; }; node * newNod 阅读全文
posted @ 2020-02-17 12:01 zlc0405 阅读(91) 评论(0) 推荐(0) 编辑
摘要:线段树单点更新~ 用线段树计算总逆序对数(其实也可以树状数组,练习一下线段树的写法,还是很不熟练,线段树在区间修改查询这一块的能力是统治级的~) 然后每操作一次,减去它的比它大的数的数量,再加上比它小的数的数量,与Min比较取最小,最后的Min就是答案~ #include<cstdio> #incl 阅读全文
posted @ 2020-02-16 22:33 zlc0405 阅读(82) 评论(0) 推荐(0) 编辑
摘要:用prim算法求最小生成树和次小生成树~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1014; const int inf=1e9; int g[maxn][m 阅读全文
posted @ 2020-02-16 21:11 zlc0405 阅读(86) 评论(0) 推荐(0) 编辑
摘要:先求最小生成树 再遍历每一对顶点,如果该顶点之间的边属于最小生成树,则剪掉这对顶点在最小生成树里的最长路径 否则直接剪掉连接这对顶点的边~ 用prim算法求最小生成树最长路径的模板~ #include<cstdio> #include<cstring> #include<algorithm> #in 阅读全文
posted @ 2020-02-16 21:07 zlc0405 阅读(119) 评论(0) 推荐(0) 编辑
摘要:ISAP求最大流模板 #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<queue> using namespace std; const int maxn=100010; const 阅读全文
posted @ 2020-02-16 20:59 zlc0405 阅读(97) 评论(0) 推荐(0) 编辑
摘要:POJ1459 网络流模板 #include<cstdio> #include<algorithm> #include<queue> #include<cstring> #include<map> using namespace std; const int maxn=1014; const int 阅读全文
posted @ 2020-02-16 20:18 zlc0405 阅读(111) 评论(0) 推荐(0) 编辑
摘要:7-1 Sexy Primes 按题意来就可以了,出的水了~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; int isprime (int n) { if (n<=1) return 0; if (n==2) r 阅读全文
posted @ 2020-02-16 17:54 zlc0405 阅读(294) 评论(0) 推荐(0) 编辑
摘要:7-1 Forever 判断区间内的符合条件的数并输出 直接暴力加排序会有两个点tle,加点剪枝卡测试点就ac,具体看代码吧,近几年的a题都是这个风格~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; struct 阅读全文
posted @ 2020-02-16 17:44 zlc0405 阅读(385) 评论(0) 推荐(0) 编辑
摘要:亲爱的,一个货物销售者,现在遇到了一个大问题,他需要你的帮助。在他的销售区域有 N 个店主(从 1 到 N)向他储存货物,Dearboy 有M 个供应点(从 1 到 M),每个供应点提供 K 种不同的货物(从 1 到K)。一旦店主订购货物,迪尔博伊应该安排哪个供应点向店主提供多少货物,以降低总的运输 阅读全文
posted @ 2020-02-16 12:50 zlc0405 阅读(137) 评论(0) 推荐(0) 编辑
摘要:给出一个 n∗ m 的字符串,其中 m 代表是人,H 代表的房子,代表立足地,每个人只能上/下/左/右移动。移动一步的花费是 1。问: 让所有人移动到房子(每个房子里面只能容纳一个人)里面的最小花费是多少? 最小费用最大流模板~ #include<cstdio> #include<iostream> 阅读全文
posted @ 2020-02-16 12:47 zlc0405 阅读(141) 评论(0) 推荐(0) 编辑
摘要:你作为某高管去住宿了,然后宾馆里有几种插座,分别有其对应型号,你携带了几种用电器(手机,电脑一类的),也有其对应型号;可是不一定用电器就能和插座匹配上,于是宾馆的商店里提供了一些转换器,这些转换器可以将某一型号电源转换成另一型号的。问,你的用电器最少会有多少种无法充电 源点向电器连边,容量为1,电器 阅读全文
posted @ 2020-02-16 11:29 zlc0405 阅读(101) 评论(0) 推荐(0) 编辑
摘要:有 n 头牛,f 个食物,d 个饮料。n 头牛,每头牛都有一定的喜好,只喜欢几个食物和饮料。每个食物和饮料只能给一头牛。一头牛只能得到一个食物和饮料。而且一头牛必须同时获得一个食物和一个饮料才能满足,问至多有多少头牛可以获得满足 把食物和饮料放在两端,一头牛拆成两个点,两点之间容量为 1,喜欢的食物 阅读全文
posted @ 2020-02-16 11:14 zlc0405 阅读(97) 评论(0) 推荐(0) 编辑
摘要:为了追求 ACM 比赛的公平性,所有用作 ACM 比赛的电脑性能是一样的,而 ACM 董事会专门有一条生产线来生产这样的电脑,随着比赛规模的越来越大,生产线的生产能力不能满足需要,所以说 ACM 董事会想要重新建造一条生产线。 生产线是全自动化的,所以需要机器来组成生产线,给定有多少种机器,标准 A 阅读全文
posted @ 2020-02-16 11:02 zlc0405 阅读(94) 评论(0) 推荐(0) 编辑
摘要:求无向图的桥的最小权值~ 巨坑!!! 如果一开始就不连通的话,就不用派士兵~ 如果最小的桥边是0的话,要派一个士兵~ 可能两个地方有两座桥连接,这种桥不予考虑,因为怎么拆都连通QAQ tarjan算法求桥~~~ #include<cstdio> #include<algorithm> #includ 阅读全文
posted @ 2020-02-15 22:45 zlc0405 阅读(115) 评论(0) 推荐(0) 编辑
摘要:给定一个有向图,问最多添加多少条边它不会变成强连通图 tarjan缩点+最多加边模板~ #include<cstdio> #include<algorithm> #include<vector> #include<stack> using namespace std; const int maxn= 阅读全文
posted @ 2020-02-15 20:42 zlc0405 阅读(87) 评论(0) 推荐(0) 编辑
摘要:双连通图:无向图中每两个顶点都存在完全不同的两条路径 给定一个无向图,问要给它增加多少条边可以把它变成双连通图。 用tarjan缩点,可以得到一棵树,添加(叶子结点+1)/2条边可以使其成环,也就是答案~ 为了避开重边,这题用邻接矩阵存,wa了一晚上QAQ~ #include<cstdio> #in 阅读全文
posted @ 2020-02-15 20:13 zlc0405 阅读(102) 评论(0) 推荐(0) 编辑
摘要:给出一个无向连通图,问加入边的过程中,桥的个数。 先用tarjan算法求出桥的总数,标记每个桥的终点。 每加入两个顶点,就查询两个顶点的lca,把lca路径上的桥都剪掉~ 链式前向星: #include<cstdio> #include<algorithm> #include<vector> #in 阅读全文
posted @ 2020-02-15 19:59 zlc0405 阅读(106) 评论(0) 推荐(0) 编辑
摘要:割点的概念:对于无向图,删除这个点与其相连的边,整个图的连通分量个数增加。 对于无向图的tarjan算法,必须要设前驱~ 求割点的模板~ #include<cstdio> #include<algorithm> #include<vector> #include<stack> #include<cs 阅读全文
posted @ 2020-02-15 19:35 zlc0405 阅读(138) 评论(0) 推荐(0) 编辑
摘要:解决两个问题,对于给定的有向图,需要给多少个点可以遍历整个图,需要加多少条边可以使整个图变得强连通~ 思路:用tarjan进行缩点,得到一个scc图,算出有n个入度为0的点,m个出度为0的点,第一个答案就是n,第二个答案就是max(n,m) 链式前向星版本: #include<cstdio> #in 阅读全文
posted @ 2020-02-15 19:23 zlc0405 阅读(140) 评论(0) 推荐(0) 编辑
摘要:DFS+剪枝~ #include<bits/stdc++.h> using namespace std; int a[30][4]; int N; int cnt; int c[30]; int p[30]; unordered_map<long long,int> pos; bool dfs (i 阅读全文
posted @ 2020-02-15 12:30 zlc0405 阅读(158) 评论(0) 推荐(0) 编辑
摘要:#include<bits/stdc++.h> using namespace std; int main() { double i; double k; for(i=0.000;i-2.000<=0.00000001;i+=0.001) { k=1; double sum=1+(1-i)/(2*1 阅读全文
posted @ 2020-02-15 12:09 zlc0405 阅读(197) 评论(0) 推荐(0) 编辑
摘要:简单模拟~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; int a[maxn]; unordered_map<char,int> pos; string s="_abcdefghijklmnopqrstuvw 阅读全文
posted @ 2020-02-15 12:04 zlc0405 阅读(97) 评论(0) 推荐(0) 编辑
摘要:题意:有两个容量互质的容器,需要用这两个容器量出目标重量的水,找到其中一组解。bfs,使得搜索得到的解是步数最少的,遍历前驱法输出路径~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; struct node { 阅读全文
posted @ 2020-02-15 11:56 zlc0405 阅读(156) 评论(0) 推荐(0) 编辑
摘要:题目大意:规定 i 为入栈,o 为出栈,现在给两个字符串st1,st2,现在要将st1转化为st2,转化方法是,st1中字符从头开始入栈,并合理出栈构造出st2。请输出所有可能的出入栈步骤。 深度优先搜索+回溯~ #include<bits/stdc++.h> using namespace std 阅读全文
posted @ 2020-02-15 11:09 zlc0405 阅读(124) 评论(0) 推荐(0) 编辑
摘要:建立结构体保存每个结点的前驱,操作符,来回两遍拓扑排序~ #include<bits/stdc++.h> using namespace std; const int maxn=50014; struct node { vector<int> pre; double data; int fuhao= 阅读全文
posted @ 2020-02-14 22:07 zlc0405 阅读(212) 评论(0) 推荐(0) 编辑
摘要:我们定义r[i][j] b[i][j]分别为以红色、黑色的点为根节点,black height为i,internel node数量为j的情况下,所能形成的树的种数。 易知b[1][1] = 1; r[0][1] = 1; b[1][2] = 2;,这是根节点具有null孩子结点的三种情况; 下面我们 阅读全文
posted @ 2020-02-14 21:43 zlc0405 阅读(120) 评论(0) 推荐(0) 编辑
摘要:二维dp,i表示删除几个字符,j表示当前遍历到第几个字符,注意判重复~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; string s; long long dp[5][maxn]; int main () { 阅读全文
posted @ 2020-02-14 21:41 zlc0405 阅读(149) 评论(0) 推荐(0) 编辑
摘要:先对所有点极角排序,再动态规划~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; struct node { double x,y,dx,dy; int id; }Node[maxn]; double dp[400] 阅读全文
posted @ 2020-02-14 21:39 zlc0405 阅读(212) 评论(0) 推荐(0) 编辑
摘要:双下标法寻找最长不重复子串~ #include<bits/stdc++.h> using namespace std; const int maxn=10014; int a[maxn],w[maxn]; int main () { int n; scanf ("%d",&n); for (int 阅读全文
posted @ 2020-02-14 21:37 zlc0405 阅读(160) 评论(0) 推荐(0) 编辑
摘要:删除字符的镜像问题,状态转移方程一样~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int mod=1e9+7; string s; long long dp[maxn][maxn]; int mai 阅读全文
posted @ 2020-02-14 21:34 zlc0405 阅读(157) 评论(0) 推荐(0) 编辑
摘要:树链剖分,线段树维护~ #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #include <vector> using namespace std; const int MAXN = 1001 阅读全文
posted @ 2020-02-14 21:31 zlc0405 阅读(108) 评论(0) 推荐(0) 编辑
摘要:DFS遍历树,把时间轴投到线段树上,单点查询~ #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #include<string> using namespace std; const int maxn 阅读全文
posted @ 2020-02-14 20:38 zlc0405 阅读(101) 评论(0) 推荐(0) 编辑
摘要:线段树保存每个区间的左边最大连续长度和右边最大连续长度~ #include<cstdio> #include<cstring> #include<algorithm> #include<iostream> #include<string> using namespace std; const int 阅读全文
posted @ 2020-02-14 20:15 zlc0405 阅读(92) 评论(0) 推荐(0) 编辑
摘要:有两种操作,一是给区间内所有的数开根号,二是区间求和。 线段树单点更新,区间求和的模板~ #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn=1e6+14; struct n 阅读全文
posted @ 2020-02-14 19:45 zlc0405 阅读(147) 评论(0) 推荐(0) 编辑
摘要:建两颗线段树分别存最大和最小值,模板题~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1e6+14; struct node { int l; int r; in 阅读全文
posted @ 2020-02-14 19:00 zlc0405 阅读(90) 评论(0) 推荐(0) 编辑
摘要:给出每一线段的颜色,存在颜色覆盖,要求最后能看到的每种颜色及其段数 线段树区间更新~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=10014; struct no 阅读全文
posted @ 2020-02-14 18:31 zlc0405 阅读(95) 评论(0) 推荐(0) 编辑
摘要:给出两个字符串,询问有多少种反转方法可以使字符串1变成字符串2。 如果两个串相同,就用马拉车算法找回文串的数量~ 如果两个串不同,从前往后找第一个不同的位置l,从后往前找第二个不同的位置r,反转l和r,判断是否成功~ 如果不成功,记为0 如果成功,以l和r为起点判断是否能反转,记录次数 #inclu 阅读全文
posted @ 2020-02-14 15:32 zlc0405 阅读(158) 评论(0) 推荐(0) 编辑
摘要:初始的时候,整个序列都是1,接下来,每次输入l,r,x。表示将l到r之间修改为x且x只会是1、2、3,最后问你序列总和。 线段树成段更新~ #include<cstdio> #include<cstring> #include<algorithm> using namespace std; cons 阅读全文
posted @ 2020-02-14 13:25 zlc0405 阅读(93) 评论(0) 推荐(0) 编辑
摘要:线段树+区间增量累加法lnc 区间更新,区间查询~ #include<cstdio> #include<algorithm> #include<iostream> using namespace std; typedef long long ll; const int maxn=1e6+14; st 阅读全文
posted @ 2020-02-14 11:27 zlc0405 阅读(101) 评论(0) 推荐(0) 编辑
摘要:简单线段树,单点更新,区间查询,自下向上更新结点的信息~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1e6+14; struct node { int l; i 阅读全文
posted @ 2020-02-14 11:13 zlc0405 阅读(94) 评论(0) 推荐(0) 编辑
摘要:按要求递归建树输出~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1014; struct node { int data; node * left; node 阅读全文
posted @ 2020-02-13 22:18 zlc0405 阅读(141) 评论(0) 推荐(0) 编辑
摘要:单向并查集,问至少给几个点可以遍历全图,连通块数量n,入度为0的点的数量m,取max(n,m)~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int maxn=1e6+14; in 阅读全文
posted @ 2020-02-13 22:16 zlc0405 阅读(163) 评论(0) 推荐(0) 编辑
摘要:基础并查集~ #include<cstdio> #include<algorithm> #include<cstring> #include<unordered_map> #include<iostream> #include<string> using namespace std; const i 阅读全文
posted @ 2020-02-13 22:14 zlc0405 阅读(112) 评论(0) 推荐(0) 编辑
摘要:用并查集判断图是否连通,以及是否存在环~ #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<unordered_map> using namespace std; const int ma 阅读全文
posted @ 2020-02-13 22:13 zlc0405 阅读(103) 评论(0) 推荐(0) 编辑
摘要:dfs判断图的连通块数量~ #include<cstdio> #include<algorithm> #include<vector> #include<cstring> using namespace std; const int maxn=1e6+14; vector<int> g[maxn]; 阅读全文
posted @ 2020-02-13 22:11 zlc0405 阅读(100) 评论(0) 推荐(0) 编辑
摘要:思维~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; int a[maxn]; int b[maxn]; int N; int main () { int T; scanf ("%d",&T); while ( 阅读全文
posted @ 2020-02-13 14:57 zlc0405 阅读(98) 评论(0) 推荐(0) 编辑
摘要:构造+思维~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; int N,M,T; int visit[maxn]; stack<int> st; vector<int> vi; int main () { vi 阅读全文
posted @ 2020-02-13 14:51 zlc0405 阅读(352) 评论(0) 推荐(0) 编辑
摘要:贪心~ #include<bits/stdc++.h> using namespace std; const int maxn=100014; int a[maxn]; int b[maxn]; int vis[maxn]; set<int>s; set<int>::iterator it; vec 阅读全文
posted @ 2020-02-13 14:37 zlc0405 阅读(270) 评论(0) 推荐(0) 编辑
摘要:krustral算法求最少结点数的最小生成树,用优先队列实时排序,优先选择已经被选中的中心~ #include<bits/stdc++.h> using namespace std; const int maxn=10014; int N,M,x,y; struct edge { string na 阅读全文
posted @ 2020-02-13 12:06 zlc0405 阅读(165) 评论(0) 推荐(0) 编辑
摘要:暴力搜索加剪枝~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; int a[maxn]; bool visit[maxn]; vector<int> path,tmp; int N,M,L,cnt=0; void 阅读全文
posted @ 2020-02-13 12:04 zlc0405 阅读(230) 评论(0) 推荐(0) 编辑
摘要:暴力搜索加剪枝~ 看的人好多...更新一下: 这道题的正解应该是求最大团之类的...暴力搜索是拿不到分的,我用了好几种奇怪的技巧用爆搜卡掉了。。。 #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int 阅读全文
posted @ 2020-02-13 12:03 zlc0405 阅读(654) 评论(0) 推荐(0) 编辑
摘要:暴力搜索加剪枝,二进制保存状态,set去重~ #include<bits/stdc++.h> using namespace std; const int maxn=7; string s[maxn]; struct node { int x,y; }Node[100]; int N,M,K,H; 阅读全文
posted @ 2020-02-13 12:02 zlc0405 阅读(224) 评论(0) 推荐(0) 编辑
摘要:动态规划找最长上升子序列,正反遍历一遍序列即可~ #include<bits/stdc++.h> using namespace std; const int maxn=10010; int N; int a[maxn]; int l[maxn]; int r[maxn]; int main () 阅读全文
posted @ 2020-02-13 12:01 zlc0405 阅读(146) 评论(0) 推荐(0) 编辑
摘要:dfs判断连通块的数量,prim算法建立最小生成树并判断是否唯一~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int inf=1e9; int g[maxn][maxn]; int d[maxn]; 阅读全文
posted @ 2020-02-13 11:40 zlc0405 阅读(296) 评论(0) 推荐(0) 编辑
摘要:双下标法找最长公共子序列(不能删除字符) #include<bits/stdc++.h> using namespace std; const int maxn=1014; string s; string t; int main () { cin>>s>>t; int maxLength=0; i 阅读全文
posted @ 2020-02-13 11:38 zlc0405 阅读(82) 评论(0) 推荐(0) 编辑
摘要:大水题,dfs判连通块的数量,bfs每个点找朋友圈的最大直径~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; vector<int> g[maxn]; bool visit[maxn]; int N; int ma 阅读全文
posted @ 2020-02-13 11:37 zlc0405 阅读(155) 评论(0) 推荐(0) 编辑
摘要:krustral算法加并查集,按题给要求维护并查集~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int inf=1e9; int N,M,x,y; int c,w; struct edge { in 阅读全文
posted @ 2020-02-13 11:35 zlc0405 阅读(155) 评论(0) 推荐(0) 编辑
摘要:直接暴力枚举,注意每次深搜完状态的还原~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; int visit[maxn][maxn]; int N,M,x,y; int cnt; int maxcnt; int X[ 阅读全文
posted @ 2020-02-13 11:33 zlc0405 阅读(220) 评论(0) 推荐(0) 编辑
摘要:大模拟题,按要求建立多边形,先定位斜边的位置,再分类讨论~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; struct node { double x,y; }Node[2][maxn]; double dista 阅读全文
posted @ 2020-02-13 11:32 zlc0405 阅读(200) 评论(0) 推荐(0) 编辑
摘要:跟1009几乎是同一道题~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; int a[maxn]; int c[maxn*8]; int r[maxn]; int lowbit (int x) { return 阅读全文
posted @ 2020-02-13 11:30 zlc0405 阅读(134) 评论(0) 推荐(0) 编辑
摘要:树状数组判断三元逆序对~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; int a[maxn]; int c[maxn*8]; long long l[maxn],r[maxn]; int lowbit (in 阅读全文
posted @ 2020-02-13 11:28 zlc0405 阅读(197) 评论(0) 推荐(0) 编辑
摘要:用tarjan算法缩点~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; vector<int> g[maxn]; int N,M,x,y; int low[maxn]; int dfn[maxn]; int c 阅读全文
posted @ 2020-02-13 11:27 zlc0405 阅读(133) 评论(0) 推荐(0) 编辑
摘要:建立后缀数组,遍历height数组找到连续大于len的最长子序列~ #include<bits/stdc++.h> using namespace std; const int maxn=1e7+14; char s[maxn]; int n; int rk[maxn]; int sa[maxn]; 阅读全文
posted @ 2020-02-13 11:24 zlc0405 阅读(182) 评论(0) 推荐(0) 编辑
摘要:暴力搜索加剪枝~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; string t; string s[maxn]; int pos[maxn],pos1[maxn]; int N; int nowLength; i 阅读全文
posted @ 2020-02-13 11:22 zlc0405 阅读(161) 评论(0) 推荐(0) 编辑
摘要:网络流模板~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int inf=1e9; queue<int> q; int M,N; int g[maxn][maxn]; int pre[maxn]; i 阅读全文
posted @ 2020-02-13 11:21 zlc0405 阅读(367) 评论(0) 推荐(0) 编辑
摘要:背包问题,把任务按截止日期排序,再按背包问题处理~ #include<bits/stdc++.h> using namespace std; const int maxn=1e6+14; struct node { int c; int w; int ddl; }Node[maxn]; int dp 阅读全文
posted @ 2020-02-13 11:12 zlc0405 阅读(142) 评论(0) 推荐(0) 编辑
摘要:按题意枚举每个点,建立缺少该点情况下的最小生成树,取权值最大的~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; const int inf=1e9; int g[maxn][maxn]; int visit[max 阅读全文
posted @ 2020-02-13 11:11 zlc0405 阅读(158) 评论(0) 推荐(0) 编辑
摘要:A Good In C纯模拟题,用string数组读入数据,注意单词数量的判断 #include<bits/stdc++.h> using namespace std; const int maxn=1010; string a[27][8]; int main () { for (int i=1; 阅读全文
posted @ 2020-02-12 23:11 zlc0405 阅读(535) 评论(0) 推荐(0) 编辑
摘要:按要求判断树的信息,考查对字符串的处理~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; struct node { int data; node * left; node * right; }; void inse 阅读全文
posted @ 2020-02-12 23:08 zlc0405 阅读(184) 评论(0) 推荐(0) 编辑
摘要:判断一棵树是否是红黑树,按题给条件建树,dfs判断即可~ #include<bits/stdc++.h> using namespace std; const int maxn=1010; struct node { int data; node * left=NULL; node * right= 阅读全文
posted @ 2020-02-12 23:06 zlc0405 阅读(101) 评论(0) 推荐(0) 编辑
摘要:用并查集处理每个家庭的信息,注意标记~ #include<bits/stdc++.h> using namespace std; const int maxn=10010; bool visit[maxn]={false}; int N; struct node { int id; int chil 阅读全文
posted @ 2020-02-12 23:04 zlc0405 阅读(113) 评论(0) 推荐(0) 编辑
摘要:用并查集分割团伙,判断输出~ #include<bits/stdc++.h> using namespace std; const int maxn=10010; int father[maxn],isRoot[maxn]={0},weight[maxn]; unordered_map<string 阅读全文
posted @ 2020-02-12 23:03 zlc0405 阅读(119) 评论(0) 推荐(0) 编辑
摘要:利用树的前序和中序递归判定最小公共祖先~ 直接根据两个序列递归处理~ #include<bits/stdc++.h> using namespace std; const int maxn=10010; int N,M; int pre[maxn],in[maxn]; unordered_map<i 阅读全文
posted @ 2020-02-12 23:01 zlc0405 阅读(125) 评论(0) 推荐(0) 编辑
摘要:对于坐标平面的bfs模板题~ #include<bits/stdc++.h> using namespace std; const int maxn=1010; bool visit[1300][130][80]={false}; int adj[1300][130][80]; int n,m,l, 阅读全文
posted @ 2020-02-12 22:59 zlc0405 阅读(96) 评论(0) 推荐(0) 编辑
摘要:dfs,选择最优路径并输出~ 这道题难度非常炸裂,要求完完整整自己推一遍,DFS才算过关!思路:一遍dfs,过程中要维护两个变量,minCnt 中途停靠最少的站。minTransfer需要换成的最少次数1 可以这样算出一条线路的换乘次数:在line数组里保存每两个相邻站中间的线路是几号线,从头到尾遍 阅读全文
posted @ 2020-02-12 22:58 zlc0405 阅读(120) 评论(0) 推荐(0) 编辑
摘要:线性dfs,注意每次深搜完状态的维护~ #include<bits/stdc++.h> using namespace std; const int maxn=1010; vector<int> v,tmp,path; int n,k,p; void init () { int t=0,cnt=1; 阅读全文
posted @ 2020-02-12 22:56 zlc0405 阅读(131) 评论(0) 推荐(0) 编辑
摘要:floyd算法建立新图,dfs标记~ #include<bits/stdc++.h> using namespace std; const int maxn=1010; const int inf=1e9; int d[maxn][maxn]; vector<int> g[maxn]; bool v 阅读全文
posted @ 2020-02-12 22:41 zlc0405 阅读(335) 评论(0) 推荐(0) 编辑
摘要:直接暴力搜索即可~ #include<bits/stdc++.h> using namespace std; const int maxn=1014; char s[maxn][maxn]; int n,ans; int judge (int n,int m) { for (int i=n-1;i> 阅读全文
posted @ 2020-02-12 22:21 zlc0405 阅读(99) 评论(0) 推荐(0) 编辑