题意就是求最小生成树和次小生成树 #include<cstdio> #include<iostream> #include<algorithm> #include<cmath> #include<cstring> #include<string> #define cl(a,b) memset(a,b,sizeof(a)) #define debug(x) cerr<<#x<<"=="<…
ACM Contest and Blackout 题目链接:https://vjudge.net/problem/UVA-10600 Description: In order to prepare the “The First National ACM School Contest” (in 20??) the major of the city decided to provide all the schools with a reliable source of power. (The m…
题意:有T组数据,N个点,M条边,每条边有一定的花费.问最小生成树和次小生成树的权值. 解法:具体请见 关于生成树的拓展 {附[转]最小瓶颈路与次小生成树}(图论--生成树) 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<algorithm> 5 #include<iostream> 6 using namespace std; 7 8 const in…
又是求次小生成树,就是求出最小生成树,然后枚举不在最小生成树上的每条边,求出包含着条边的最小生成树,然后取一个最小的 #include <iostream> #include <algorithm> #include <cstdio> #include <cstdlib> #include <cstring> #include <string> #include <stack> #include <queue>…
题意: 求最小生成树和次小生成树的总权值. 思路: 第一种做法,适用于规模较小的时候,prim算法进行的时候维护在树中两点之间路径中边的最大值,复杂度O(n^2),枚举边O(m),总复杂度O(n^2): 第二种做法,倍增求lca,预处理复杂度O(nlog(n)),替换的时候log(n),总复杂度为O(mlog(n)). 代码: #include <stdio.h> #include <string.h> #include <algorithm> using namesp…
题目大意:给一张无向图,找出最小生成树和次小生成树. 题目分析:模板题...方法就是枚举所有的比最小生成树中两端点之间的最长边还要长的边,用它替换,再取一个最小的值便是次小生成树了. 代码如下: # include<iostream> # include<cstdio> # include<cstring> # include<cstring> using namespace std; # define REP(i,s,n) for(int i=s;i<…
题目链接 本题思路:模版的次小生成树问题,输出MST and Second_MST的值. 参考代码: #include <cstdio> #include <cstring> #include <algorithm> #include <cstring> #include <vector> using namespace std; + , maxe = * / + , INF = 0x3f3f3f3f; int n, m, Max[maxn][m…
题目链接:https://vjudge.net/problem/UVA-10600 In order to prepare the “The First National ACM School Contest” (in 20??) the major of the city decided to provide all the schools with a reliable source of power. (The major is really afraid of blackoutsJ).…
题意:平面上有N个石头,给出坐标.一只青蛙从1号石头跳到2号石头,使路径上的最长便最短.输出这个值.(2≤N≤200) 解法:最小瓶颈树.而由于这题N比较小便可以用2种方法:1.最短路径中提到过的Floyd算法,利用DP思想枚举出所有情况,O(n3).具体关于Floyd算法的一些解释得等我过几天写一篇博文.2.用Kruskal算法求出最小生成树再求出路径上的最长边权.具体解释见我之前的一篇博文: 关于生成树的拓展 {附[转]最小瓶颈路与次小生成树}(图论--生成树) 1 #include<cst…
[题意] n个点,m条边,求最小生成树的值和次小生成树的值. InputThe Input starts with the number of test cases, T (1 < T < 15) on a line. Then T test cases follow. Thefirst line of every test case contains two numbers, which are separated by a space, N (3 < N < 100)the n…
用prim算法求最小生成树和次小生成树~ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; ; const int inf=1e9; int g[maxn][maxn],d[maxn],visit[maxn],pre[maxn],c[maxn][maxn],N,M; int path[maxn][maxn];//记录最小生成树里两点之间的路径 void init ()…
题意:有一个水塘,要求把它用围栏围起来,每个费用为b.其中,(#)代表草,(.)代表洞,把一个草变成洞需要费用d, 把一个洞变成草需要费用f.请输出合法方案中的最小费用. 解法:(不好理解......('・ω・')っ) [思考]    1.围栏把草和洞分隔开了,也就是"割".但"割"只是把图中的点分成两部分,而这题的草和洞能有多个连通块.因此可以添加源.汇点,使得所有的草和洞接连起来了.    2.先考虑草和洞不能互相转换,那么只有建围栏这一种"割&quo…
Travelling Salesman   After leaving Yemen, Bahosain now works as a salesman in Jordan. He spends most of his time travelling between different cities. He decided to buy a new car to help him in his job, but he has to decide about the capacity of the…
题意:有M只猴子,他们的最大跳跃距离为Ai.树林中有N棵树露出了水面,给出了它们的坐标.问有多少只猴子能在这个地区露出水面的所有树冠上觅食. 解法:由于要尽量多的猴子能到达所有树冠,便用Kruskal求一次MST最小生成树,也就得到了最大边最小的最小瓶颈生成树.在用这个最大边权计算合法的猴子树. P.S.由于没有那些一下子输入几十万的数据,所以读优和不读优差别不大. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstri…
The Best Seat in ACM Contest Time Limit: 1000MS Memory limit: 65536K 题目描述 Cainiao is a university student who loves ACM contest very much. It is a festival for him once when he attends ACM Asia Regional Contest because he always can find some famous…
题目描述 Cainiao is a university student who loves ACM contest very much. It is a festival for him once when he attends ACM Asia Regional Contest because he always can find some famous ACMers there. Cainiao attended Asia Regional Contest Fuzhou Site on N…
链接:https://www.nowcoder.com/acm/contest/96/H来源:牛客网 题目描述 今天qwb要参加一个数学考试,这套试卷一共有n道题,每道题qwb能获得的分数为ai,qwb并不打算把这些题全做完, 他想选总共2k道题来做,并且期望他能获得的分数尽可能的大,他准备选2个不连续的长度为k的区间, 即[L,L+1,L+2,....,L+k-1],[R,R+1,R+2,...,R+k-1](R >= L+k). 输入描述: 第一行一个整数T(T<=10),代表有T组数据接…
ACM Contest Scoring Our new contest submission system keeps a chronological log of all submissions made by each team during the contest. With each entry, it records the number of minutes into the competition at which the submission was received, the…
链接:https://www.nowcoder.com/acm/contest/147/A来源:牛客网 Niuniu has recently learned how to use Gaussian elimination to solve systems of linear equations. Given n and a[i], where n is a power of 2, let's consider an n x n matrix A. The index of A[i][j] an…
UVA - 10462 题意: 求次小生成树的模板题,这道题因为有重边的存在,所以用kruskal求比较好. #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <string> #include <vector> #include <map> #include <set> #include…
P.S.我不想看英文原题的,但是看网上题解的题意看得我 炒鸡辛苦&一脸懵 +_+,打这模版题的代码也纠结至极了......不得已只能自己翻译了QwQ . 题意:有一个公司有N个企业,分成几个网络,分别从各个网络中选一个机器设置为中心机.下面有2种操作:1.查询当前时间机器x到其所在网络的中心机的距离:2.设置中心机x与机器y相连,距离为abs(x-y)%1000,x所在的网络的中心机变为y所在网络的中心机. 解法:带权并查集.可以把中心机转换为一个集合(树)的根节点,求距离就是求点到根节点的距离…
The Android University ACM Team Selection Contest Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述  Now it's 20000 A.D., and the androids also participate in the ACM Inter-national Collegiate Programming Contest (ACM/ICPC). In order to sele…
Problem B: The Largest Clique Given a directed graph G, consider the following transformation. First, create a new graph T(G) to have the same vertex set as G. Create a directed edge between two vertices u and v in T(G) if and only if there is a path…
---恢复内容开始--- 题意:有n(2<=n<=50)个车站,从左到右编号为1~n,有M1辆列车从第1站向右开,还有M2辆列车从第N站向左开.在时刻0,间谍从第1站出发,目的是在时刻T(0<=T<=200)会见在车站n的一个间谍.在车站等候容易被抓,所以需要尽量躲在火车上,使在车站等待的时间尽量的少,列车靠站时间忽略不计,即使2站方向相反列车在同一时间靠站,间谍也能完成换乘. 题解:由于时间有序,所以可以通过判断在时刻t,在车站i 最少需要等候多少时间进行DP.由于输入较2复杂,…
题目描述 给出直角三角形其中一条边的长度n,你的任务是构造剩下的两条边,使这三条边能构成一个直角三角形. 输入描述: 一个整数n. 输出描述: 另外两条边b,c.答案不唯一,只要输出任意一组即为合理,如果无法构造请输出-1. 示例1 输入 复制 3 输出 复制 4 5 示例2 输入 复制 4 输出 复制 3 5 备注: 0<=n<=1e9 1<=b,c<=1e18 n,b,c均为整数 ac代码: #include<bits/stdc++.h>using namespac…
题目描述 给出一个长度为n的字符串s和q个查询.对于每一个查询,会输入一个字符串t,你需要判断这个字符串t是不是s的子串.子串的定义就是存在任意下标a<b<c<d<e,那么”s[a]s[b]s[c]s[d]s[e]”就构成s的一个子串.如”abc”的子串有”a”.”b”.”c”.”ab”.”ac”.”bc”.”abc”. 输入描述: 第一行两个数n,q.1<=n,q<=1e5. 第二行一个长度为n的字符串s,所有字符都为小写拉丁字符. 接下来q行每行一个字符串t.1&l…
题意:有一个N行M列的正整数矩阵,输入N个前1~N行所有元素之和,以及M个前1~M列所有元素之和.要求找一个满足这些条件,并且矩阵中的元素都是1~20之间的正整数的矩阵.输入保证有解,而且1≤N,M≤20. 解法:这题的图转换得极妙!(*^▽^*)   我们可以发现找到的矩阵需要满足3个条件:1.N行M列:2.各行各列的和:3.各元素的大小.再仔细阅读一次题目,发现题目中提到的2个数字相同--"20",再想想这是不是有什么玄机.     首先可以找到第3个条件的转化,可以用容量来限制,…
题意:有N个人互相打了M次电话,请找出所有电话圈(Eg.a→b,b→c,c→d,d→a 就算一个电话圈)并输出.(N≤25,L≤25,注意输出格式) 解法:由于N比较小所有n^2或n^3的复杂度都没有问题.所以就O(n^2)读入:O(n^3)Floyd算法求出传递闭包,d[i][j]表示 i 是否直接或间接给 j 打过电话,并查集并起一个电话圈里的人:O(n^2)输出.总的是O(n^3)的时间复杂度. P.S.我的代码有点长~再补个连通分量和强连通分量的知识:连通分量--强连通图的连通分量为其本…
题意:给一个N(N<=100)个点的联通图(无自环和平行边),求苗条度(最大边-最小边的值)尽量小的生成树. 解法:枚举+Kruskal.先从小到大排序边,枚举选择的最小的边. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<algorithm> 5 #include<iostream> 6 using namespace std; 7 const…
这个专栏开始介绍一些<ACM国际大学生程序设计竞赛题解>上的竞赛题目,读者可以配合zju/poj/uva的在线测评系统提交代码(今天zoj貌似崩了). 其实看书名也能看出来这本书的思路,就是一本题解书,简单暴力的通过题目的堆叠来提升解决编程问题的能力. 那么下面开始探索吧. poj1037: Description Background For years, computer scientists have been trying to find efficient solutions to…