摘要:
题目链接:here 题解: 假设现在有 n 条线段,假设 n 条边从小到达排序,如果这 n 条边中没有三条可以构成 三角形,那么这 n 条边必须满足关系:A[i]>=A[i-2]+A[i-1],这里的 A[i]表示第 i 条边的大小。 假设 A[i]尽量取最小 A[i]=A[i-2]+A[i-1], 阅读全文
摘要:
题目链接:here 对于 n 瓶一升的水,把他们合并后,最少需要的瓶子数为 n 的二进制中 1 的个数。假 设 n 的二进制中 1 的个数大于 k,那么我们要找到 1 个大于 n 的数,且二进制中 1 的个数等 于 k 的最小的数 m,那么答案为 m-n。 假设 n 二进制中,最右边的 1 在第 i 阅读全文
摘要:
Warfare And Logistics UVALive - 4080 题意:给n个点m条边。令c为每对节点的最短路长度之和。要求删除一条边后使得新的c值c‘最大,不连通的两点对短路视为L。 【如果每次删除一条边,要跑m次dijkstra,其实其中很多次都对最短路没有影响,因为删掉的边不在最短路里 阅读全文
摘要:
Walk Through the Forest UVA - 10917 题意:n个点,起点是1,终点是2,只能沿着满足条件的路走,如果走a-->b,那么存在一条从b到终点的路径,比从a到终点的路径都短,问有多少种方案。 先dijkstra处理1到各点的最短路d[i],满足条件的路a-->b就是d[b 阅读全文
摘要:
Airport Express UVA - 11374 题意:n个点,有m条普通路径,k条高速路径,但是k条只能选一条走。问从s到e最短时间。 如果选a-->b这条高速,那么s-->a和b >e必然也要是最短路。 于是我们可以先用两次dijkstra预处理出s到各点的最短路和e到各点的最短路,然后枚 阅读全文
摘要:
Guess UVALive - 4255 题意: 拓扑排序 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn=12; 5 int p[maxn][maxn],b[maxn]; 6 int in[maxn]; 7 阅读全文
摘要:
Play on Words UVA - 10129 题意:n个单词,问能否收尾相连形成一条链。 把单词首尾字母看做点,单词内部连一条边,问是否存在欧拉路径。 用并查集,当且仅当只有一个点的出度比入度大1一个点的入度比出度大1其它点出度和入度相等时存在欧拉路径。 1 #include<cstdio> 阅读全文
摘要:
The Necklace UVA - 10054 The Necklace 题意:每个珠子有两个颜色,给n个珠子,问能不能连成一个项链,使得项链相邻的珠子颜色相同。 把颜色看做点,珠子内部连一条边,无向图求欧拉回路。 这里我用的并查集。 输出路径就dfs就行了 1 #include <bits/st 阅读全文
摘要:
Food Delivery ZOJ - 3469 题意:快递员送外卖,n个客户,起始位置为x,速度为v,每个客户单位时间不满意度增加hi,问最少增加多少不满意度。 每一个客户可能是从左侧送到或者从右侧送到。 1 #include <bits/stdc++.h> 2 using namespace s 阅读全文
摘要:
Brackets Sequence POJ - 1141 题意:给一个括号序列,问最少添加多少个括号似的原序列匹配,并输出新序列。 用dp[i][j]表示i到j最少添加几个括号,flag[i][j]表示i和j之间需要添加括号的位置。 1 #include<cstdio> 2 #include<alg 阅读全文
摘要:
Brackets POJ - 2955 题意:给一个括号序列,问最多有多少个括号是可以配对的。 1 #include<cstdio> 2 #include<algorithm> 3 #include<string> 4 #include<iostream> 5 #include<cstring> 6 阅读全文
摘要:
Period of an Infinite Binary Expansion POJ - 3358 题意:给一个分数,让求其二进制形式的最小循环节ans2和循环节开始的位置ans1。 以下内容转自http://blog.csdn.net/u013508213/article/details/4249 阅读全文