<传送门> 128. Snake time limit per test: 0.25 sec. memory limit per test: 4096 KB There are N points given by their coordinates on a plane. All coordinates (xi,yi) are integers in a range from -10000 up to 10000 inclusive . It is necessary to construct…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1598 find the most comfortable road Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) 问题描述 XX星有许多城市,城市之间通过一种奇怪的高速公路SARS(Super Air Roam Structure---超级空中漫游结构)进行交流,每条SARS都对行驶在…
POJ终于修好啦 题意 和UVA1205是同一题,在洛谷上是紫题 有一棵树,需要给其所有节点染色,每个点染色所需的时间是一样的都是11.给每个点染色,还有一个开销“当前时间×ci×ci”,cici是每个节点的一个权值.(当前时间是染完这个节点的时间)  染色还有另一个约束条件,要染一个点必须要先染好其父节点,所以第一个染的点是根节点.  求最小开销. 思路 这道题显然对于 每一个可选的子节点选最重的 的贪心思路是错误的 就有点类似动态规划了 不过不DP也是可以贪心出来的.但是这个策略比较麻烦.大…
A. Arpa’s hard exam and Mehrdad’s naive cheat time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There exists an island called Arpa’s land, some beautiful girls live there, as ugly ones do. Me…
题意 在一个有N(1 ≤ N ≤ 1,000)个点环形图上有P(1 ≤ P ≤ 10,000)对点需要连接.连接只能连接环上相邻的点.问至少需要连接几条边. 思路 突破点在于最后的结果一定不是一个环!所以我们枚举断边,则对于P个连接要求都只有唯一的方法:如果一个pair的两个端点在断点两侧,就分成[0,left],[right,N];否则就是[left, right].这里区间以0开头是要考虑left=1.right=N的情况,至少得有个边([0, 1])表示N连向1的情况不是么. 处理一个区间…
[HAOI2006]旅行comf Description 给你一个无向图,N(N<=500)个顶点, M(M<=5000)条边,每条边有一个权值Vi(Vi<30000).给你两个顶点S和T,求一条路径,使得路径上最大边和最小边的比值最小.如果S和T之间没有路径,输出”IMPOSSIBLE”,否则输出这个比值,如果需要,表示成一个既约分数. 备注: 两个顶点之间可能有多条路径. Input 第一行包含两个正整数,N和M.下来的M行每行包含三个正整数:x,y和v.表示景点x到景点y之间有一条…
枚举从大到小s1,二分s2(越大越有可能符合),2-SAT判断,ans取min 思路倒是挺简单的,就是二分的时候出了比较诡异的问题,只能二分s2的值,不能在数组上二分... 有个优化,就是当不是二分图的时候退出枚举,这个用并查集染色维护 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; const int N=405;…
m是5000,就想到了直接枚举比例 具体做法是是先把边按照边权从小到大排序,然后先枚举最小边权,再枚举最大边权,就是从最小边权里一个一个加进并查集里,每次查st是否联通,联通则退出,更新答案 #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=5005; int n,m,f[N],s,t; double ax=30001,ay=1; struct…
 #include<stdio.h>//从大到小不断枚举边直到找到s-t的路径,判断从s可以到t可以用并查集来判断 #include<stdlib.h>//枚举最大的一条边肯定要找和他的值最接近的边,所以要排序 #define N 5100 #define  inf  0x3fffffff struct node { int u,v,speed; }map[N]; int gcd(int a,int b) { if(b==0)     return a; return gcd(b,…
P2502 [HAOI2006]旅行 一定要看清题目数据范围再决定用什么算法,我只看着是一个蓝题就想到了记录最短路径+最小生成树,但是我被绕进去了: 看到只有5000的边,我们完全可以枚举最小边和最大边,判断起点和终点是否连通用并查集维护一下就好了: 分数约分一定要仔细想想, an1==ans2的时候我直接printf("%d",ans1)了,(劝退到小学) gcd自己写一个吧,(图省事用__gcd()在洛谷水一水也不是不可以吧) #include<cstdio> #inc…