poj 1061 青蛙的约会(扩展欧几里得算法)

思路:设青蛙跳了k次,那么就有(x+mk)-(y+nk)=p*L.即x-y+(m-n)k=p*L,即(m-n)*k≡(y-x) (mod L).这个线性同余方程有解当且仅当gcd(m-n,L)|(y-x).令a=m-n,b=L,c=y-x.用扩展欧几里得解方程ax+by=c.可以求出原方程的一个解...

2016-02-16 18:19:41

阅读数:345

评论数:0

poj 1458 Common Subsequence

#include #include #include using namespace std; #define MAXV 1000 int same(int a,int b){ return a==b?1:0; } int max(int a,int b, int c){ if(a&...

2016-02-16 11:43:54

阅读数:275

评论数:0

poj 3304 Segments

题意:求是否存在一条直线,使所有线段到这条直线的投影至少有一个交点。 思路:计算几何。这道题要思考到两点: 1:把问题转化为是否存在一条直线与每条线段都有交点。证明:若存在一条直线l和所有线段相交,作一条直线m和l垂直,则m就是题中要求的直线,所有线段投影的一个公共点即为垂足。 2:枚举两两...

2016-02-16 11:39:53

阅读数:206

评论数:0

poj 2398 Toy Storage(叉积判断点是否在四边形内)

题意:给出矩形的左上和右下的坐标,在矩形中有n个木棒,木棒之间不会相交,然后给出木棒上下端点的横坐标,这些木棒将矩形分成多个区域,接着有m个玩具,给出玩具的坐标。输出在每个区域中玩具的个数。 思路:叉积判断点是否在四边形区域内。和poj 2318一样的题,只是输入n个木棒的坐标时为无序输入,需进行...

2016-02-16 09:24:20

阅读数:304

评论数:0

poj 2318 TOYS(叉积判断点是否在四边形内)

题意:给出矩形的左上和右下的坐标,在矩形中有n个木棒,木棒之间不会相交,然后给出木棒上下端点的横坐标,这些木棒将矩形分成多个区域,接着有m个玩具,给出玩具的坐标。输出在每个区域中玩具的个数。 思路:叉积判断点是否在四边形区域内。 向量的叉积: 向量的叉积性质可以用来判断点在直线的某侧。进而可以解决...

2016-02-16 09:04:39

阅读数:421

评论数:0

hdu 1069 Monkey and Banana(dp求最大高度)

题意:给定n种长方体,每种可以选择无数个,求这些长方体所能搭建的最大高度。要求放在上面的长方体的长和宽都要比下面的长方体小。 思路:转换过后,此题目考察的是动态规划里的最长有序子序列。对于长方体长宽高x,y,z进行分情况处理,去除一些重复的情况。 #include #include const...

2016-02-15 23:37:23

阅读数:230

评论数:0

hdu 1029 Ignatius and the Princess IV

题意:n个数字中找出出现次数至少为(n+1)/2的数。 #include #include int A[1000000]; int main() { int n, m, i, ok; while (scanf("%d", &n) != EOF) ...

2016-02-15 22:06:44

阅读数:209

评论数:0

hdu 1024 Max Sum Plus Plus(dp求m个不相交子段和的最大值)

本题的大致意思为给定一个数组,求其分成m个不相交子段和最大值的问题。 设Num为给定数组,n为数组中的元素总数,Status[i][j]表示前i个数在选取第i个数的前提下分成j段的最大值,其中1 Status[i][j]=Max(Status[i-1][j]+Num[i],Max(Status[0...

2016-02-15 21:40:48

阅读数:278

评论数:0

poj 2528 Mayor's posters(线段树离散化)

题意:n(n 求出最后还能看见多少张海报。 思路:离散化,如下面的例子(题目的样例),因为单位1是一个单位长度,将下面的       1   2   3   4  6   7   8   10      —  —  —  —  —  —  —  —       1   2   3 ...

2016-02-03 22:49:12

阅读数:183

评论数:0

hdu 1698 Just a Hook(线段树区间覆盖)

#include #include using namespace std; #define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 1 const int maxn = 111111; int...

2016-02-03 18:16:01

阅读数:168

评论数:0

hdu 1754 I Hate It(线段树求最大值)

#include #include using namespace std; #define lson l , m , rt << 1 #define rson m + 1 , r , rt << 1 | 1 const int maxn = 222222; int...

2016-02-03 17:26:34

阅读数:207

评论数:0

求割点

http://www.cnblogs.com/en-heng/p/4002658.html

2016-02-03 16:38:39

阅读数:248

评论数:0

poj 2031 Building a Space Station(最小生成树)

题意:给出三维坐标系上的一些球的球心坐标和其半径,搭建通路,使得他们能够相互连通。如果两个球有重叠的部分则算为已连通,无需再搭桥。求搭建通路的最小费用(费用就是边权,就是两个球面之间的距离)。 思路:把球A和球B看做无向图图的两个结点,则 边权 = AB球面距离 = A球心到B球心的距离 – ...

2016-02-03 00:37:35

阅读数:227

评论数:0

poj 1287 Networking(最小生成树)

思路:最小生成树模板。 #include #include #include #define min(a,b) a<b?a:b using namespace std; const int INF=0x3f3f3f3f; const int MAXN=110; bool vis[MAXN...

2016-02-03 00:01:11

阅读数:193

评论数:0

poj 1251 Jungle Roads(最小生成树)

思路:最小生成树模板。 #include #include #include using namespace std; const int INF=0x3f3f3f3f; const int MAXN=110; bool vis[MAXN]; int lowc[MAXN]; //点是 0 n-1...

2016-02-02 23:52:45

阅读数:185

评论数:0

hdu 1875 畅通工程再续(最小生成树)

思路:最小生成树模板题。 #include #include #include #include using namespace std; const int INF=0x3f3f3f3f; const int MAXN=110; bool vis[MAXN]; double lowc[MAXN...

2016-02-02 23:36:34

阅读数:213

评论数:0

hdu 1233 还是畅通工程(最小生成树)

思路:最小生成树模板题。 #include #include #include using namespace std; const int INF=0x3f3f3f3f; const int MAXN=110; bool vis[MAXN]; int lowc[MAXN]; //点是 0 n-...

2016-02-02 23:34:42

阅读数:216

评论数:0

UVa 796 Critical Links(无向图求割边)

#include #include #include #include #include #include using namespace std; /* * 求 无向图的割点和桥 * 可以找出割点和桥,求删掉每个点后增加的连通块。 * 需要注意重边的处理,可以先用矩阵存,再转邻...

2016-02-02 15:42:10

阅读数:195

评论数:0

UVa 315 Network(无向图求割点)

题意: 一个无向图,求其中割点的个数目。 输入数据 第一行一个 n 代表有 n 个点 接下来有多行,一直到读入一个 0,算整个地图的读入结束,再读入一个0,文件数据结束。 每行有第一个数字a,代表接下来的数字都和 a 相连。    割点:无向连通图中,如果删除某点后,图变成不连通了,则称该点为割点...

2016-02-02 11:21:05

阅读数:233

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭