POJ 2831 Can We Build This One?】的更多相关文章

题目链接:http://poj.org/problem?id=2831 题意: 给你一个图,每条边有边权. 然后有q组询问(i,x),问你如果将第i条边的边权改为x,这条边是否有可能在新的最小生成树中. 题解: 更改边权相当于新添加了一条边. 新边在新MST中的充要条件是: 加入新边后,在原来的MST上形成的环中,有一条旧边的边权>=x. (因为如果这样的话,新边可以替换掉那条最大的边) 所以可以预处理出 maxn[i][j]:在原来的MST上,任意两点间路径上的最大边权. dfs即可. 对于每…
Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 1728   Accepted: 643 Case Time Limit: 2000MS Description “Highways are built, then life is rich.” Now people of Big Town want to become rich, so they are planning to build highways to conne…
Buy or Build Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1369   Accepted: 542 Description World Wide Networks (WWN) is a leading company that operates large telecommunication networks. WWN would like to setup a new network in Borduri…
题意: 给N个字符串,要求出一个序列,在该序列中,后一个串,是由前一个串加一个字母后得来的(顺序可以改动). 问最多能组成多长的序列.思路:将给的字符串排序,再对所有的字符串按长度从小到大排序,若长度相同,则按字典序排.   然后找出符合条件的字符串A和B(即B可由A加一个字母得来),建立边的关系.        之后对所有根节点进行dfs深搜,如果当前的长度大于目前的maxlen,则更新,同时记录前驱节点. 最后根据前驱节点,输出路径即可. #include <stdio.h> #inclu…
最小生成树算法简单 只是增加了一些新的东西,对于需要最小生成树算法 和中 并检查使用的一系列 还有一些更深入的了解. 方法的一些复杂问题 #include<cstdio> #include<cstring> #include<vector> #include<algorithm> using namespace std; const int maxn = 1005; struct point { int x; int y; }pp[maxn]; struct…
/*次小生成树 题意:给你一些路径,现在将一部分路径权值减少后问是否可以替代最小生成树里面的边. 解:次小生成树,即将这条边连上,构成一个环 求出任意两点路径之间的除了这条边的最大值,比较这个最大值>=这条边,说明可以替换. prime算法次小生成树模板 */ #include<stdio.h> #include<string.h> #define N 1100 #define inf 0x3fffffff int ma[N][N]; int Min(int a,int b)…
次小生成树.求出两点间最短路径的最大权值,再把要加入的边与之比较即可. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; ; ; ; int map[MAXN][MAXN]; ]; bool exist[MAXN][MAXN],used[MAXN][MAXN],vis[MAXN]; int f[MAXN][MAX…
Buy or Build Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 1348   Accepted: 533 Description World Wide Networks (WWN) is a leading company that operates large telecommunication networks. WWN would like to setup a new network in Borduri…
原题 多组数据,到0为止. 每次给出按顺序的n个点(可能逆时针,可能顺时针),求多边形面积(保留整数) 多边形面积为依次每条边(向量)叉积/2的和 \(S=\sum _{i=1}^{n-1}p[i]*p[i+1]/2\) //逆时针为正,顺时针为负 #include<cstdio> #define N 1010 using namespace std; int n; struct hhh { double x,y; hhh() {} hhh(double _x,double _y) : x(_…
给个多边形 计算面积 输出要四舍五入 直接用向量叉乘就好 四舍五入可以+0.5向下取整 #include<cstdio> #include<algorithm> #include<cstring> #define N 10005 #define eps 1e-8 using namespace std; struct point { double x,y; inline double operator *(const point &rhs) const { re…