自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

傻笨

我是菜鸟,但我是勤奋的菜鸟

  • 博客(40)
  • 收藏
  • 关注

原创 HDU 1671

这是一道字典树的问题,直接利用模板,不过还要一个释放内存的函数!#include #include #include #include using namespace std;typedef struct trie{    int v;    trie *next[10];};trie *root;void creattrie(cha

2013-08-30 10:52:03 666 1

原创 HDU 1251

这是一道入门字典树!代码如下:#include #include #include #include using namespace std;struct trie{ int v; trie *next[26];} root;void creattrie(char *str){ int len=strlen(str); trie *p=

2013-08-28 18:30:08 545

原创 HDU 1305

这道题是字典树入门题目,今天下午刚学字典树,理解了原理,然后看看代码就会发现简单了!#include #include #include #include using namespace std;typedef struct trie{ int v; trie *next[2];}trie;trie *root;void creattrie(ch

2013-08-28 18:28:20 577

原创 HDU 1431

/* 这题要先暴力找出最大的素数时多少,是9989899,所以数组可以不用开这么大!*/#include #include #include #include using namespace std;const int inf=9989900;bool a[inf];void prim(){ int i; int k,t; for(i=1

2013-08-27 13:21:25 583

原创 HDU 1395

这道题目,可以使用笨一点的办法,利用蒙哥马利的快速幂取模的办法做,代码如下:#include #include #include using namespace std;__int64 calcute(__int64 a,__int64 b,__int64 c)//蒙哥马利快速幂取模{    __int64 ans=1;    while(b)    { 

2013-08-26 19:23:31 520

原创 HDU 1211

/* 这题其实不难,只要慢慢看懂题目意思,按照题目说的一步一步来做,就可以AC了; 但是这里有一个地方必须要注意!下面会指出来*/#include #include #include #include using namespace std;__int64 n;__int64 calculate(__int64 k1,__int64 k2){ __int6

2013-08-26 17:05:13 633

原创 HDU 1124

/* 这题题目意思是求一个数的阶乘得到的数中有多少个0!这题的解题关键是: N!=1*2*3*4*5*6*7*……*N然后每个数都可以分解质因数得到==2^a*3^b*5^c*7^d.... 然后你会发现的就是会产生0的是2*5,所以只要找出N内5的幂次就可以了, 例如 50!,只要找出5的幂次就可以!如下解释: 5 10 15 20 25 30 35 40

2013-08-26 16:27:43 597

原创 HDU 1019

这段时间搞数论,这道题目以前就做过,现在做一下,竟然WA2次,说多了都是泪啊! 题目说好了范围不会超过32位,可这样就是错了,后来改成__int64,发现竟然坑爹, 的过了!!!!无语代码:#include #include #include using namespace std;int gcd(int a,int b){ if(a==0||b==0) {

2013-08-26 15:18:24 495

转载 CROC-MBTU 2012, Elimination Round (ACM-ICPC) D题

这道题目虽然是CF的D题,但是知道位运算的人,会发现这道题目就是a+b一样简单,位运算  &  ^   |  这三种!#include #include using namespace std;int main(){    int i,j,n,x;    while(scanf("%d",&n)!=EOF)    {        for(i=0; i

2013-08-25 20:22:54 590

原创 HDU 2202 求最大三角形

其实这题和poj中一个题目很像,这题是一些散点,求最大三角形面积,而poj里有一题是求两点之间最大距离!思路都是一样的,点都在凸包这线上,然后利用凸包公式,和多边形面积公式!代码如下:#include #include #include #include #include #include using namespace std;const int maxn=50005;int

2013-08-08 19:03:09 639

原创 HDU 1392 凸包入门题目,求周长

这题就是凸包入门题目,求凸包周长#include #include #include #include #include using namespace std;const int maxn=105;struct point{ double x; double y; double there;} p[maxn],chs[maxn];boo

2013-08-08 16:53:38 506

原创 poj 2187 凸包+平面上点之间最大距离

/* 这道题目是算一个平面内的一些点的之间最大的距离,暴力肯定会超时,最远距离,一定是凸包上的两个点的距离, 先用模板找到凸包线上的点,然后枚举任意两点之间的距离,求出最大的距离!*/#include #include #include #include #include using namespace std;const int maxn=50005;int n;

2013-08-08 14:58:41 676

原创 poj 2007 极角排序

极角排序有四种方法,我一开始就是先算出极角来,然后进行排序,可交上去却是WA,现在还没有搞,后面用另一种还是错了,最后用了这种才过的!代码如下:#include #include #include #include #include using namespace std;const int maxn=55;struct point{ double x,y;} p

2013-08-08 13:47:44 610

原创 poj 3348

这题其实是一个简单的模板题,可我就纠结了好久!哎/*  这题就是凸包模板加多边形面积模板!*/#include #include #include #include #include using namespace std;const int maxn=10005;int n;struct point{    double x;

2013-08-08 09:28:05 622

原创 HDU 3775 pick 定理

这道题目也是用到了pick定理,不过这里有一个巧妙的地方,就是在直线上的整点数,就是字符串的长度,因为每一次一步,都是整数,这题还有好多坑人的地方:#include #include #include #include using namespace std;const int maxn=1000005;char c[maxn];int a[8]= {1,1,0,-1,-1,

2013-08-07 09:14:08 623

原创 POJ 2954

第二道 用到pick定理的题目,一直错在一个地方了,后来才发现,代码:#include #include #include #include using namespace std;int gcd(int a,int b){ if(!a || !b) { return a>b?a:b; } else { r

2013-08-06 21:52:58 594

原创 poj 1265 多边形面积

今天做这个让我学到了一个pick 定理:pick定理: 设F为平面上以格子点为定点的单纯多边形,则其面积为:S=b/2+i-1。 b为多边形边上点格点的个数,i为多边形内部格点的个数。 可用其计算多边形的面积,边界格点数或内部格点数。代码和解析如下:#include #include #include #inclu

2013-08-06 19:38:33 564

原创 POJ 1654

这题目一开始就没有看懂,后来比赛结束后,看别人的报告,才知道什么意思,:在一个矩阵上面,一开始位于原点,现在你可以往8个方向走,每次走1个单位(上下左右)或者根号2个单位(其他四个方向)。现在给你每次走的方向,(保证最后回到原点)。问你做过的边多围成的多边形的面积是多少。1:西南 2:南 3:东南 4:西 5: 不走 6: 东 7:西北 8:北 9:东北 代码:#include

2013-08-06 16:40:46 518

原创 poj 2773 欧几里得 一个拓展应用

题目大意就是给出n和k求出第k个与n互素的数这里涉及到了 欧几里得的一个重要知识点:如果(a, b)互质的话,那么(b*t+a, b)肯定互质,其中t为正整数!那么这就是以循环周期的了那么这题就可以利用这个来做了,代码和详解如下:#include #include #include #include using namespace std;const int maxn=100000

2013-08-06 11:24:00 550

原创 Codeforces Beta Round #74 (Div. 2 Only) A题

这道题目,静下心来就应该可以想出来,我当时没有想到!#include #include #include #include using namespace std;int pp(int n){ if(n==1)n-=1; if(n>=2)n-=2; return n;}int main(){ int r,g,b; int time=0

2013-08-06 10:08:48 527

原创 位运算(左移&&右移)

左移:<<;右移:>>a>>1,其实就是a/2a<<1,其实就是a*2#include #include using namespace std;int main(){ int a=8; printf("%d %d\n",a>>1,a<<1); return 0;}//结果是 4 16

2013-08-05 11:05:23 739

原创 按位异或运算

上次从学长那里知道按位异或可以用来交换两个变量的值:例如:a=7,b=8;a=a^b;b=a^b;a=a^b;这样就很快的交换了两个变量的值:a=8, b=7;

2013-08-05 11:00:02 720

原创 Commando War, UVa 11729

/* Commando War, UVa 11729 贪心题目*/#include #include #include #include #include using namespace std;const int maxn=1005;int n;struct node{ int b; int j;} p[maxn];int cmp(n

2013-08-04 22:11:47 527

原创 POJ 2398

这道题目和上一道真是姐妹题目啊!就是多了一个排序,因为2318这题已经排好序了,而这题是没有排好序的!代码如下:#include #include #include #include using namespace std;const int maxn=1005;int num[maxn];int n,m;struct point{    d

2013-08-04 17:09:47 500

原创 POJ 2318

这是一道计算几何题,题意大概是:在一个大矩形里有n条分割线把矩形分割成n+1部分、再给出一些玩具的坐标、要求统计每个部分内有多少个玩具、思路:利用二分N个区域来,然后利用叉乘来判断是不是在其区域类!这里要利用叉乘的一个性质:(1)P*Q>0,P在Q的顺时针 (2)P*Q==0 ,P和Q共线 (3)P*Q<0, P在Q的逆时针代码如下:#include #include #inc

2013-08-04 11:29:38 697

原创 HDU 3177

这道题目首先要理解题意:给你一个洞的体积V,然后放N件物品,然后给出N组数据,分别代表的意思是:停放体积 移动体积然后你想想:按照两者相差值按照由大到小排序,这个慢慢体会一下!#include #include #include #include #include #include #include using namespace std;const int maxn=1005

2013-08-03 20:31:05 597

原创 poj 1922

#include #include #include #include #include using namespace std;const int inf=0x3f3f3f3f;const int maxn=10005;int n;struct node{    int x;    int y;    double time;}p[maxn

2013-08-03 18:15:04 557

原创 HDU 1009

这道贪心题目类型跟上次不同,不是活动安排,题目大意是:有m个猫粮,n个房间,下面n组数据,每组两个,分别代表的是:把猫粮放到房间里能得到多少价值,第二个数是一个房间放的猫粮!#include #include #include #include #include #include using namespace std;const int maxn=1005

2013-08-03 16:14:33 530

原创 HDU 2390

我发现贪心的典型题目就是活动安排,这是一道入门贪心!#include #include #include #include #include #include using namespace std;const int maxn=50005;int m,t;struct node{ int day; int start; int end;} p

2013-08-03 14:42:31 610

原创 HDU 2037

这是一道经典的贪心题,活动安排#include #include #include #include #include #include using namespace std;const int maxn=105;int n;struct node{ int x; int y;}p[maxn];int cmp(node a,node b){

2013-08-03 12:30:48 490

原创 POJ 3907

这是一道求多边形面积的题目,很水的!不过我好像又学到了新的知识点!#include #include #include #include #include using namespace std;const int maxn=105;int n;struct node{ double x; double y;} p[maxn];double solve(

2013-08-02 19:53:36 683

原创 poj 1269 判断直线相交,并求交点

#include #include #include #include #include using namespace std;#define EPS 1e-9#define inf 1e10int n;bool pp(double x1,double x2)//这里是由于精度的问题,判断是否相等{ if(abs(x1-x2)<EPS) retur

2013-08-02 18:30:51 615

原创 HDU 1086 判断线段相交

/*  判断线段相交利用叉乘,  因为 两向量叉乘==两向量构成的平行四边形(以两向量为邻边)的面积 , 所以上面的公式也不难理解.而且由于向量是有方向的, 所以面积也是有方向的, 通常我们以逆时针为正, 顺时针为负数.改良算法关键点就是:如果"线段ab和点c构成的三角形面积"与"线段ab和点d构成的三角形面积" 构成的三角形面积的正负符号相异,那么点c和点d位于线

2013-08-02 18:26:46 563

原创 HDU 2036 多边形的面积

以下两种方法求多边形面积:一:#include #include #include #include #include using namespace std;const int maxn=105;int n;struct node{ double x; double y;}p[maxn];double area(node p[],int n){

2013-08-01 21:31:44 525

原创 hdu 1115 多边形重心

#include #include #include #include using namespace std;struct node{ double x; double y;};double area(node p1,node p2,node p3){ double ans; ans=p1.x*p2.y+p2.x*p3.y+p3.x*p1

2013-08-01 20:54:35 457

原创 poj 1422 最短路径覆盖

我一开始不明白什么是最短路径覆盖,后面看了书,才知道二分图模型的应用中4种,分别是:1:最小点覆盖 2:最小边覆盖==最大独立点集 3:最短路径覆盖 4:最小点权覆盖最短路径覆盖==节点数--二分图最大匹配数(构造后的图)#include #include #include using namespace std;const int maxn=200;int mp[maxn][ma

2013-08-01 15:51:58 758

原创 POJ 2239

这道题目我有必要解释一下题意::在大学里有许许多多的课程,现在小明需要去选择课程,他是一个爱学习的人,所以想尽可能多的选择课程,在学校里有n个课程,并且在学校规定,每周里的每天有12节课,那么一周就有7*12节课。输入第一行为n,代表有n个课程接下来n行,每行第一个数字x代表这个课程在这一周里面需要上x次。然后跟着x对数字,第一个D代表这周的哪一天,第二个C代表这天的哪一节课

2013-08-01 12:33:54 568

原创 POJ 1274 匈牙利算法

这道题目和上一题差不多,就是求的不同,这题求最大匹配!#include #include #include #include using namespace std;const int maxn=205;int mp[maxn][maxn];int mark[maxn];int pipei[maxn];int n,m;bool find(int x){ for(

2013-08-01 11:17:27 501

原创 POJ 1469 匈牙利算法

这道题目好坑 啊!有两个地方要注意:一:就是科目是从1到n,每一行的第一个数不是科目,而是报这一门的人数, 二:就是最大匹配数必须要等于科目数才能AC,否则就是WA#include #include #include #include using namespace std;const int maxn=310;int mp[maxn][maxn];int mark[maxn];

2013-08-01 11:01:56 501

原创 HDU 2063 匈牙利算法

这是一道简单的二分匹配的题目,很适合入门者做!#include #include #include using namespace std;const int maxn=1005;int mp[maxn][maxn];int mark[maxn];int pipei[maxn];int k,m,n;bool find(int x){ for(int i=1; i<

2013-08-01 10:22:51 446

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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