HDU-1007-最小公共点对】的更多相关文章

Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 47104    Accepted Submission(s): 12318 Problem Description Have you ever played quoit in a playground? Quoit is a game in which fla…
http://acm.hdu.edu.cn/showproblem.php?pid=1007 最近欧式距离模板题. 用分治大法(分治的函数名用cdq纯属个人习惯_(:з」∠)_) 一开始狂M. 后来判断n是否为0就不M了QwQ #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 100003; str…
http://acm.hdu.edu.cn/showproblem.php?pid=1533 这道题直接用了模板 题意:要构建一个二分图,家对应人,连线的权值就是最短距离,求最小费用 要注意void init(int n) 这个函数一定要写 一开始忘记写这个WA了好几发 还有这个题很容易T掉,赋值建图要简化,一开始构建成网络流那种图一直T #include <stdio.h> #include <string.h> #include <iostream> #includ…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3374 题意:给定一个串s,该串有strlen(s)个循环同构串,要求输出字典序最小的同构串的下标,字典序最小的出现次数,最大的同构串的下标,字典中最大的出现次数. 思路:对于求循环同构的字典序最小可以用最小表示法求得,最大也是一样.然后设ds为字符串s+s.然后就可以用KMP求最小串在ds出现的次数和最大串出现的次数了. #define _CRT_SECURE_NO_DEPRECATE #inclu…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2609 题意:给定n个循环链[串],问有多少个本质不同的链[串](如果一个循环链可以通过找一个起点使得和其他串相同,那么就认为这2个链是一样的.就是求不同构的串) 思路:对于求同构串可以用最小表示法,然后判断是否相等就可以知道这2个是否是同构了.判重用的是set #define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include<cstdi…
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4162 题意:给定一个只有0-7数字组成的串.现在要由原串构造出一个新串,新串的构造方法:相邻2个位置的数字的差值.若为负数则要加上8,问新构造出来的串的一个字典序最小同构串是什么? 思路:就按照题意构造出新串后,然后就是最小表示法了. #define _CRT_SECURE_NO_DEPRECATE #include<iostream> #include<cstdio> #include&…
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1007 Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 62916    Accepted Submission(s): 16609 Problem Description Have you ever played…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4289 思路:求最小花费,最小割应用,将点权转化为边权,拆点,(i,i+n)之间连边,容量为在城市i的花费,然后就是若u,v之间有路,则连边(u+n,v),(v+n,u).最后就是跑最大流了. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<…
双倍经验题:HDU 6214,3987 求最小割的最小边. 方案一: 首先跑最大流,这个时候割上都满载了,于是将满载的边 cap = 1,其他 inf ,再跑最大流,这个时候限定这个网络的关键边就是那个最少边的那个割. 方案二: 奇技淫巧,将每条边 cap* A + 1,最大流 = flow / A ,最小割边 = fow % A: 原理:每条边容量扩大 到 cap * A + 1,那么最大流也一定扩大到 *A + 1,原图是多解,但是新图, 例如最少边的个是2条边,那么他就扩大到了 *A +…
50 years, 50 colors Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2256    Accepted Submission(s): 1266 Problem Description On Octorber 21st, HDU 50-year-celebration, 50-color balloons floating…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3586 http://blog.csdn.net/woshi250hua/article/details/7639423 题目大意:给定n个敌方据点,1为司令部,其他点各有一条边相连构成一棵树,每条边都有一个权值cost表示破坏这条边的费用,叶子节点为前线.现要切断前线和司令部的联系,每次切断边的费用不能超过上限limit,问切断所有前线与司令部联系所花费的总费用少于m时的最小limit.1<=n<…
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=5988 哇,以前的模版一直T,加了优先队列优化才擦边过. 建图很好建,概率乘法化成概率加法不会化. #include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <queue> #include <algorithm> #i…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=1007 [算法] 答案为平面最近点对距离除以2 [代码] #include <algorithm> #include <bitset> #include <cctype> #include <cerrno> #include <clocale> #include <cmath> #include <complex> #inc…
http://acm.hdu.edu.cn/showproblem.php?pid=1007 上半年在人人上看到过这个题,当时就知道用分治但是没有仔细想... 今年多校又出了这个...于是学习了一下平面内求最近点对的算法...算导上也给了详细的说明 虽然一看就知道直接用分治O(nlogn)的算法 , 但是平面内最近点对的算法复杂度证明我看了一天也没有完全看明白... 代码我已经做了一些优化...但肯定还能进一步优化..我是2s漂过的非常惭愧...(甚至优化以后时间还多了...不明白原因 /***…
http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意:平面上有n个点,问最近的两个点之间的距离的一半是多少. 思路:用分治做.把整体分为左右两个部分,那么有三种情况:最近的两个点都在左边,最近的两个点都在右边和最近的两个点一个在左边一个在右边.对于第一第二种情况,直接递归处理,分解成子问题就好了,主要是要处理第三种情况.最暴力的做法是O(n^2)的扫,这样肯定会TLE.那么要作一些优化.首先我们先递归处理得到第一种和第二种情况的答案的较小值,然后用这…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1007 题意:给出n个点求最短的两点间距离除以2. 题解:简单的分治. 其实分治就和二分很像二分的写dfs然后复杂度就是log(n*log(n)*log(n)) #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <cmath> u…
题目链接 Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 29547    Accepted Submission(s): 7741 Problem Description Have you ever played quoit in a playground? Quoit is a game in which…
Quoit Design Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 48729    Accepted Submission(s): 12823 Problem Description Have you ever played quoit in a playground? Quoit is a game in which flat…
题意:有n个城市,m条双向边,有一群小偷从s前往t偷东西,警察叔叔们想要逮捕小偷们,现在告诉你在每座城市需要多少警察才能抓住这个城市的小偷,为什么说这个城市,因为小偷们会分开跑:然后题目还说不能在s和t逮捕小偷.问需要的最少警力是多少? 分析:这个问题可以变成这样:需要在哪些城市部署警力才能使得小偷不能从s到达t,也即最小点权割集.根据最小割=最大流(此处的最小割是指边权),我们可以这样建图. 建图:把除了s和t的每一个点拆开,在它们之间连一条单向边,权值为该点需要的警力.s和t同样拆开,不过权…
Sample Input 4 0:(1) 1 1:(2) 2 3 2:(0) 3:(0) 5 3:(3) 1 4 2 1:(1) 0 2:(0) 0:(0) 4:(0)   Sample Output 1 2 最小点覆盖=最大匹配数 水题,懒的拍了 #include<stdio.h> #include<iostream> #include<algorithm> #include<string.h> #include<vector> using n…
Problem Description 给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内.长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内. Input 测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标占一行,其中|x|和|y|小于 231:一对0 坐标标志着一个测试用例的结束.注意(0, 0)不作为任何一个测试用例里面的点.一个没有点的测试用例标志着整个输入的结束. Output 对每个测试用例,在1行内输出2对整数…
题意:用最小的点来覆盖全部的边,因为二分图里面最大的匹配就是最小覆盖,所以直接匹配一下即可 *********************************************************************** #include<stdio.h> #include<; ; ];;     memset(Head, -, , , ; i<N; i++)     {          )         {             dx[i] = ; j=e[j…
最小费用最大流,即MCMF(Minimum Cost Maximum Flow)问题 嗯~第一次写费用流题... 这道就是费用流的模板题,找不到更裸的题了 建图:每个m(Man)作为源点,每个H(House)作为汇点,各个源点与汇点分别连一条边,这条边的流量是1(因为每个源点只能走一条边到汇点),费用是 从源点走到汇点的步数,因为有多个源点与汇点,要建一个超级源点与超级汇点,超级源点与各个源点连一条流量为1,费用为0(要避免产生多余的费用)的边 按照这个图跑一发费用流即可 关于模板:前向星+SP…
这意味着更复杂的问题,关键的事实被抽象出来:每个点,能够赋予既有的值(挑两个一.需要选择,设定ai,bi). 寻找所有和最大.有条件:如果两个点同时满足: 1,:二进制只是有一个不同之处.  2:中的至少一个被选择B值. 则可获得相应加成. 这题開始想了半天,建图遇到问题.看了官方说是最小割.于是入手: a值就是小于阈值的最大值,B值就是大于等于的最大值. 思路:俩个点选其一.必定想到建二分(每一个点一分为二)图.中间连无穷的边.由于仅仅有一位不同,必定分奇偶点,有奇数个1的点,源点到他为A值,…
Description 给定一系列2维平面点的坐标(x, y),其中x和y均为整数,要求用一个最小的长方形框将所有点框在内.长方形框的边分别平行于x和y坐标轴,点落在边上也算是被框在内. Input 测试输入包含若干测试用例,每个测试用例由一系列坐标组成,每对坐标占一行,其中|x|和|y|小于 231:一对0 坐标标志着一个测试用例的结束.注意(0, 0)不作为任何一个测试用例里面的点.一个没有点的测试用例标志着整个输入的结束.  Output 对每个测试用例,在1行内输出2对整数,其间用一个空…
Game Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1563    Accepted Submission(s): 664 Problem Description onmylove has invented a game on n × m grids. There is one positive integer on each gr…
题意是求出所给各点中最近点对的距离的一半(背景忽略). 用分治的思想,先根据各点的横坐标进行排序,以中间的点为界,分别求出左边点集的最小距离和右边点集的最小距离,然后开始合并,分别求左右点集中各点与中间点的距离,从这些距离与点集中的最小距离比较,求得最小距离,此处可按纵坐标排序,将纵坐标距离已经大于之前最小距离的部分都剪枝. 代码如下: #include <bits/stdc++.h> using namespace std; ]; struct point { double x,y; }p[…
先说下题意,很简单,给n个点的坐标,求距离最近的一对点之间距离的一半.第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标,实数. 这个题目其实就是求最近点对的距离.主要思想就是分治.先把n个点按x坐标排序,然后求左边n/2个和右边n/2个的最近距离,最后合并.合并要重点说一下,比较麻烦. 首先,假设点是n个,编号为1到n.我们要分治求,则找一个中间的编号mid,先求出1到mid点的最近距离设为d1,还有mid+1到n的最近距离设为d2.这里的点需要按x坐标的顺序排好,并且假设这些点…
和HDU 1565是一道题,只是数据加强了,貌似轮廓线DP来不了了. #include <cstdio> #include <cstring> #include <queue> #include <vector> #define maxn 2510 #define oo 0x3f3f3f3f using namespace std; struct Edge { int u, v, f; Edge( int u, int v, int f ):u(u),v(v…
黑白染色,源指向白,黑指向汇,容量都是方格中数的大小,相邻的格子白指向黑,容量为oo,然后求一次最小割. 这个割是一个简单割,如果只选择不在割中的点,那么一种割就和一个选数方案一一对应,割的大小就是不选的那些数的大小,我们需要最小化这个值. 答案=总和-最小割 #include <cstdio> #include <cstring> #include <queue> #include <vector> #define maxn 410 #define oo…