hdu 2413(最大匹配+二分)】的更多相关文章

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2413 思路:由于要求最少的时间,可以考虑二分,然后就是满足在limit时间下,如果地球战舰数目比外星战舰数目多,就连边,然后求最大匹配即可,判断匹配数目是否等于外星球数目,如果相等,说明可以占领,继续二分. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #inc…
题目内容 这是一个简单的游戏,在一个\(n×n\)的矩阵中,找\(n\)个数使得这\(n\)个数都在不同的行和列里并且要求这\(n\)个数中的最大值和最小值的差值最小. 输入格式 输入一个整数\(T\),表示\(T\)组数据. 对于每组数据第一行输入一个正整数\(n(1\le n\le 100)\)表示矩阵的大小. 接着输入\(n\)行,每行\(n\)个数\(x(0\le x\le 100)\). 输出格式 对于每组数据输出一个数表示最小差值. 样例输入 1 4 1 1 1 1 2 2 2 2…
题目链接: pid=2236">Hdu 2236 解题思路: 将行和列理解为二分图两边的端点,给出的矩阵即为二分图中的全部边, 假设二分图能全然匹配,则说明 不同行 不同列的n个元素 区间为(min_edge.max_edge),这些edge是指构成全然匹配的那些边 题目须要求解最小区间长度 我们 能够 二分区间长度(0~100),每次枚举区间的下界 最后得到的maxl 即为答案 代码: #include<iostream> #include<cstdio> #in…
http://acm.hdu.edu.cn/showproblem.php?pid=2853 这道题初看了没有思路,一直想的用网络流如何解决 参考了潘大神牌题解才懂的 最大匹配问题KM 还需要一些技巧来解决最小变动, 做法是:把原先的邻接矩阵每个数扩大k倍(k>n) 为了突出原先的选择,也就是同等情况下优先选择原来的方案 给原来的方案对应矩阵内的数据+1 那么 最终得出的最大匹配值/k=真实的最大匹配 最终得出的最大匹配值%k=原来的方案采用了几个 这里的KM留下来做模板 /* 二分图最佳匹配…
UVA 题意:两个绿洲之间是沙漠,沙漠的温度不同,告诉起点,终点,求使得从起点到终点的最高温度最小的路径,如果有多条,输出长度最短的路径: 思路:用最小费用(最短路径)最大流(最小温度)也能搞吧,但因为题意是看着博客做的,不小心看到了他的思路,就自己实现了一遍,二分温度,假设当前温度为x,求保证最大温度为x的情况下的最短路:打印路径就是递归打印. #include <iostream> #include <cstdio> #include <cstdlib> #incl…
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=4443 题解: 二分答案,判断最大匹配是否>=n-k+1: #include<iostream> #include<cstdio> #include<cstring> #include<vector> using namespace std; ; const int INF=1e9; int mat[maxn][maxn]; int n,m,k…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1526 思路:floyd求传递闭包,然后就是最大匹配了,不过一开始输入没看清,被坑了将近2个小时. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; #define MAXN 11…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2389 思路:纯裸的一个最大匹配题,不过悲摧的是以前一直用的dfs版一直过不了,TLE无数次啊,然后改成bfs就过了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<vector> #include<cmath> #inc…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5884 nn个有序序列的归并排序.每次可以选择不超过kk个序列进行合并,合并代价为这些序列的长度和.总的合并代价不能超过TT, 问kk最小是多少 用一个队列维护合并的数,二分一下判断合理性.注意一点的是要是(n - 1)%(k - 1) != 0的话,就要先合并前(n - 1)%(k - 1) + 1项,这样会更优一点.还有细节问题很多要注意. //#pragma comment(linker, "/…
分析:只需要用二分找一个区间,然后不断枚举这个区间是否可以达到最大匹配,一直二分到答案为止.   代码: ==================================================================================== #include<stdio.h> #include<string.h> ; ; int G[MAXN][MAXN], Ly[MAXN]; int Max, Min, N; bool used[MAXN]; b…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1281   Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格子才可以放,小希还是很轻松的解决了这个问题(见下图)注意不能放车的地方不影响车的互相攻击. 所以现在Gardon想让小希来解决一个更难的问题,在保证尽量多的“车”的前提下,棋盘里有些格…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1025 求最长递增子序列,O(n^2)的复杂度超时,需要优化为O(n*logn) f[i]存储长度为i的最小末尾 #include<stdio.h> int poor[500010], f[500010]; int main() { int n, k = 1; while (scanf("%d", &n) != EOF) { int m, m1; for (int i = 0…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2289 大意是 一个Cup,圆台形,给你它的顶部圆的半径,底部圆的半径,杯子的高度,和此时里面装的水的体积,求水的高度. 这道题好在能够锻炼算法思维,或者说形成算法思维. 这是一道二分逼近求值的应用 题目已经给定杯子的高度是0~100,故在这个范围内进行二分,但走了涉及到还有小数的问题,故可以取一个精度较高的误差值 来作为二分的条件,二分一次,以这个值作为水的高度求出水的体积与实际值比较一次,当误差不…
题目链接: acm.hdu.edu.cn/showproblem.php?pid=1025 Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 28755    Accepted Submission(s): 8149 Problem Description…
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5200 bc(中文):http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=574&pid=1003 题解: 把输入按照高度排序,离线处理出所有高度的答案,每次查询的时候二分查找(upper_bound). #include<iostream> #include<cstring> #inc…
棋盘游戏 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2137    Accepted Submission(s): 1244 Problem Description 小希和Gardon在玩一个游戏:对一个N*M的棋盘,在格子里放尽量多的一些国际象棋里面的“车”,并且使得他们不能互相攻击,这当然很简单,但是Gardon限制了只有某些格…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2962 Trucking Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1763    Accepted Submission(s): 618 Problem Description A certain local trucking co…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3681 思路:机器人从出发点出发要求走过所有的Y,因为点很少,所以就能想到经典的TSP问题.首先bfs预处理出‘Y',’F','G'之间的最短距离,由于G点可以充电,到达G点就把当前能量更新为电池容量然后继续走.因为每个G点只能充一次电,这就好像TSP中的每个点只能走一次一样,然后就是二分答案了,用状压DP判定当前电池容量的情况下是否能符合条件. #include<iostream> #includ…
http://acm.hdu.edu.cn/showproblem.php?pid=3641 学到: 1.二分求符合条件的最小值 /*==================================================== 二分查找符合条件的最小值 ======================================================*/ ll solve() { __int64 low = 0, high = INF, mid ; while(low <=…
U - Inviting Friends HDU - 3244 You want to hold a birthday party, inviting as many friends as possible, but you have to prepare enough food for them. For each person, you need n kinds of ingredient to make good food. You can use the ingredients in y…
题目链接:http://acm.hust.edu.cn/vjudge/contest/128683#problem/E 题目大意:给定一只含有0和1的地图,0代表可以走的格子,1代表不能走的格 子.之后过了M年,每年把一个格子变成1, 即每年会有一个格子不能走.问地 图上界和下界连通共多少年.如果到M年之后依然连通,则输出-1. 给定的年份数据范围是10^5, 图的大小是500*500,由于图是一直在改变的, 因此每次都需要进行变更操作.然而如果变更一次广搜一次明显会TLE.仔细思 考会发现,当…
题意:告诉n组A,B,C,按照A + k * C生成等差数列,问这n组数列中哪个数字出现了奇数次以及出现了几次,题目保证最多只会出现一个这种数字. 分析:读完题并没有思路,后来知道是二分区间,枚举是哪个数字出现了奇数次,算该数字之前一共有几个数字,如果是奇数个,说明答案就在[L , Mid]中. PS:之前用二分只是枚举具体要求的数字,原来枚举区间也可以,真的涨姿势.二分的时候 l = mid + 1,r = mid ;(一开始r = mid + 1,l = mid就无限循环,手算并没有错啊?很…
get了很多新技能 当时想到了用dfs,但是排序用的是限制时间排序,一直没搞出来. 正解: 二分用时,dfs判断,为了顺利进行做题,需要按照做题开始时间排序 还可以用dp 题意: 作为史上最强的刷子之一,zhx常常参与各种比赛. 有一天,zhx去虐一场比赛.他觉得题太简单了. 这场比赛有n道题.他一眼就已经计算出他做第i道题要花ti的时间,做完后可以得到vi分. 因为他太强了,所以他被管理员盯上了.如果他在第li个单位时间前做完了第i道题,那么管理员就会认为他在作弊,然后把他的号封了. zhx不…
Swap Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2174    Accepted Submission(s): 774Special Judge Problem Description Given an N*N matrix with each entry equal to 0 or 1. You can swap any tw…
Cup Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 6684    Accepted Submission(s): 2062 Problem Description The WHU ACM Team has a big cup, with which every member drinks water. Now, we know th…
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2199 Can you solve this equation? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8595    Accepted Submission(s): 3957 Problem Description Now,given…
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2141 Can you find it? Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/10000 K (Java/Others)Total Submission(s): 11503    Accepted Submission(s): 3021 Problem Description Give you three seque…
Regular Polygon Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65768/65768 K (Java/Others)Total Submission(s): 3274    Accepted Submission(s): 996 Problem Description In a 2_D plane, there is a point strictly in a regular polygon with N side…
思路:由于最多只有一个是奇数,所以二分枚举这个点,每次判断这个点的左边区间段所有点的和作为 二分的依据. 代码如下: #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #include<cstring> #include<set> #include<vector> #define ll long long #define M 20…
题意: 有n个员工,每个员工完成一件A任务和一件B任务的时间给出,问要完成x件A任务y件B任务所需的最短时间是多少 思路: DP + 二分我也是第一次见到,这个我只能说太难想了,根本想不到. dp[i][j]表示在t时间内前i个人完成j件A任务后所能完成B任务的最大数量. 代码中还有一些注释. //#define LOCAL #include <iostream> #include <cstdio> #include <cstring> using namespace…