自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (2)
  • 收藏
  • 关注

转载 搞ACM的你伤不起啊

劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! 谁再跟劳资讲算法之美算法的力量,劳资一本算法导论拍死你啊!!!!!!!! 那是搞ACM的入门书啊!!!!特么的入门书就一千多页啊!!!!!!! 还没有习题答案啊,学完了你特么都不知道

2012-04-09 18:31:02 761

原创 poj 3026 Borg Maze

链接:点击打开链接参考链接:点击打开链接一个m*n的迷宫,#代表墙,空格代表数字,S是起点,里面有一些字母A,从起点开始找出一条最短路使这些字母链接起来。首先就要想到prim,因为求链接这些字母的最短距离,不就是一个赤裸裸的最小生成树吗,但是字母与字母的距离我们不知道,所以需要用BFS,把这些字母之间的距离搜出来,基本这道题就是这样做啦。注意:6 5 #

2013-08-22 13:42:04 447

原创 poj 1789 Truck History

链接:点击打开链接用一个7位的string代表一个编号,两个编号之间的distance代表这两个编号之间不同字母的个数。一个编号只能由另一个编号“衍生”出来,代价是这两个编号之间相应的distance,现在要找出一个“衍生”方案,使得总代价最小,也就是distance之和最小。#include#include#include#includeusing namespace std;

2013-08-20 14:18:42 377

原创 poj 2031 Building a Space Station

链接:点击打开链接给你一些圆的圆心坐标和半径,如果两个圆相交,那么这两个圆就是联通的,如果不相交,就需要一条直线连接两个圆,让你求出使这些圆联通的最短的直线长度。#include#include#include#includeusing namespace std;#define INF 0x7f7f7f7fstruct node{ double x,y,z,r;}ano

2013-08-20 13:03:06 387

原创 poj 1679 The Unique MST

链接:点击打开链接题意是:求最小生成树,若不唯一则输出'Not Unique!'.。否则输出那个最小权值和。用prime算法,设一个v[]数组,初值0;每次找到的点的放进集合中厚v[i]为1;若找到的集合到外面的最小边有多条(即外面有多个点到集合的最小距离都等于该最小距离)时把其中一条放进去,其他的v[]值为3,记录该点以后一定要以此边进入集合。否则不唯一。另外,集合有多个点到到一个点的距离都

2013-08-19 12:40:58 339

原创 poj 2253 Frogger

链接:点击打开链接题意:就是一个青蛙想找另外一个青蛙,但是一下他跳不到那里去,所以需要借助其他石头,找出跳到另外一个青蛙的总最小距离,在从中找出跳一次的最小距离。输出这个JUMP的最小距离呢。因为prim每次找的都是从这点找最小的距离跳的,所以每次记录这个最小距离,然后与下一次比较,直到跳到另外一个青蛙的石头上为止。#include#include#include#includeu

2013-08-18 12:25:22 368

原创 poj 2075 Tangled in Cables

链接:点击打开链接给n个房子,你需要在房子之间铺电缆,使所有的房子都连上,求最短的电缆,#include#include#include#include#includeusing namespace std;const float INF=0xffffff;float edge[510][510],len;int nn,vis[510];void prime(int x)

2013-08-18 12:13:54 416

原创 poj 1258 Agri-Net

链接:点击打开链接prim模板题,求联通的最小距离。#include#include#include#include#includeusing namespace std;const int INF=0xffffff;int edge[110][110];int nn,vis[110];void prime(int x){ int i,j,k; int sum_i,m

2013-08-18 12:07:46 358

原创 hdu 3367 Pseudoforest

链接:点击打开链接求图的权值最大并且一个环的子图。最大生成树,但又与最大生成树有点不同,这也可以有一个环的出现。所以我们要加个标记数组,当查找的两个点,父亲节点不同,并且只有一个有环,或者都没有环,就把权值相加,然后合并。如果相同,但没环,也把权值相加。最后得出的就是有一个环的最大生成树。#include#include#include#includeusing namespa

2013-08-18 12:05:58 448

原创 hdu 2988 Dark roads

链接:点击打开链接就是说每天街每天开路灯,非常耗钱,想省钱,但又不想让市民觉得不安全,就两条相连的街开个路灯,求每晚能省多少钱,首先给个N,M,代表N条街,M条路,接下来N行,每一行三个数X,Y,Z,代表X街与Y街相连,每天消耗Z元,由于边很多,所以用Kruskal,用边的总权值减去Kruskal求出来的最小权值就是每天省下的钱。#include#include#include#in

2013-08-17 18:29:57 562

原创 hdu 1162 Eddy's picture

链接:点击打开链接给你点的横坐标,纵坐标,让你找一条最短的路把这些点连起来。#include#include#include#includeusing namespace std;const double INF=0xffffff;double edge[105][105];int nn,vis[105];void prime(int x){ int i,j,k; do

2013-08-17 15:55:58 466

原创 hdu 3371 Connect the Cities

链接:点击打开链接连接城市,给你M个城市,有M条道路,还有K个城市相连,接下来M行,P与Q城市相连花费C,然后接下来K行,首先有一个数T,代表有T个城市相连,然后给胡相连城市的ID。简单的prim,不过用C++提交可以过,但用G++,就会超时,不超时要自己写一个scanf函数。#include#include#include#include#includeusing name

2013-08-17 15:50:57 355

原创 poj 2478 Farey Sequence

链接:点击打开链接以前比赛看到过的一道题,以为是规律题,没做出来。然后学了欧拉函数,一看到这题,就知道思路,把10^6打一个表出来。prime[i]=prime[i]+phi[i]。其实大哥表就知道规律啦。#include#include#includeusing namespace std;#define maxn 1000010__int64 phi[maxn],prime[

2013-08-16 17:33:34 437

原创 山东省第四届ACM-H Boring Counting

链接:点击打开链接题意:给你n个数,m个询问(N and M (1 ),询问包含四个数L,R,A,B 求区间[L,R]里面在区间[A,B]的数的个数。思路:首先想到的是而且的树状数组,或者线段树处理,因为数据量太大。但是二维这个维数也不能表示,因为离散化之后50000*50000是不能表示的,那怎么办呢?划分树,我们只要二分枚举该区间的最小的第几大大于等

2013-08-16 16:56:01 598

原创 poj 2773 Happy 2006

链接:点击打开链接找第K个与m互质的数,把这个数输出。gcd(b×t+a,b)=gcd(a,b)  (t为任意整数)则如果a与b互素,则b×t+a与b也一定互素,如果a与b不互素,则b×t+a与b也一定不互素故与m互素的数对m取模具有周期性,则根据这个方法我们就可以很快的求出第k个与m互素的数假设小于m的数且与m互素的数有k个,其中第i个是ai,则第m×k+i与m互素的

2013-08-16 15:45:57 388

原创 poj 2484 A Funny Game

链接:点击打开链接刚开始一看是巴什博弈,一交果断WA,在一看题目,发现是移完硬币,位置还是不变的,又只能移一个,或相连的两个,推一下就发现除了1和2是Alice赢,其他都是Bob赢。#include#includeusing namespace std;int main(){ int n; while(~scanf("%d",&n)&&n){ if(n!=1&&n!=2

2013-08-12 20:08:59 444

原创 hdu 1847 Good Luck in CET-4 Everybody!

链接:点击打开链接我是暴力打表,根据前面推后面:推n,只要看n减比n小的2的幂次得出的结果,只要有一个是Cici赢,那么n就是Kiki赢。#include#include#includeusing namespace std;int main(){ int f[10],i,n,mark[1100],j; f[0]=1; for(i=1;i<10;i++) f[i]=

2013-08-12 18:40:14 402

原创 hdu 2177 取(2堆)石子游戏

链接:点击打开链接威佐夫博弈变异,要求输出能赢的售后第一次能取得情况。3.一定存在规则允许的某种操作可将必胜点移动到必败点;证明:以某个必胜点(i,j)为例。因为所有自然数都会出现在某个必败点中,故要么i等于m(k),要么j等于n(k)。若i=m(k),j>n(k),可从j中取走j-n(k)个石子到达必败点;若i=m(k),jm(k),j=n(k),可从i中取走i-m(k)个石

2013-08-12 17:25:32 438

原创 hdu 2509 Be the Winner

链接:点击打开链接尼姆博弈:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。   这种情况最有意思,它与二进制有密切关系,我们用(a,b,c)表示某种局势,首先(0,0,0)显然是奇异局势,无论谁面对奇异局势,都必然失败。第二种奇异局势是(0,n,n),只要与对手拿走一样多的物品,最后都将导致(0,0,0)。仔细分析一下,(1,2,3)也

2013-08-12 16:10:11 405

原创 hdu 1527 取石子游戏

链接:点击打开链接威佐夫博弈:前几个必败点如下:(0,0),(1,2),(3,5),(4,7),(6,10),(8,13)……可以发现,对于第k个必败点(m(k),n(k))来说,m(k)是前面没有出现过的最小自然数,n(k)=m(k)+k。一个必败点有如下性质:1.所有自然数都会且仅会出现在一个必败点中;证明:m(k)是前面没有出现过的最小自然数,自然

2013-08-12 16:04:53 432

原创 poj 1151 Atlantis

链接:点击打开链接同样也是求矩形的面积和,线段树+离散化+扫描线,根据hdu 覆盖面积改过来的。不过出现一个问题,用%.2lf不能过,改为%.2f就过啦。#include#include#include#include#includeusing namespace std;#define N 1100struct node1{ double x,y1,y2;

2013-08-11 20:12:44 335

原创 poj 1389 Area of Simple Polygons

链接:点击打开链接       没看题意,应该就给你多个矩形,让你求出总面积,覆盖多次的算一次。其实和hdu 覆盖的面积差不多,线段树+离散化+扫描线。poj 1151的代码改一下就过啦,这三道题基本就是一样的。     #include#include#include#include#includeusing namespace std;#define N 11000str

2013-08-11 20:07:55 495

原创 poj 2973 Scrabble

链接:点击打开链接判断最后一个字符串是否可以组成前面的字符串,输出可以组成的数量,‘_’代表可以任意字母。In the first test case, PIZZA, ZA and PITA can be spelled as PIZ_A, ZA and PI_A. There are not enough letters to spell PROGRAM or CONTEST.

2013-08-11 16:29:19 638

原创 poj 2192 Zipper

链接:判断2个字符串能否组成1个字符串,例如cat和tree能组成tcraete。搜索和DP都可以。#include#include#includeusing namespace std;char str1[210],str2[210],str3[420],str4[420];int len1,len2,len3,n,vis[420],flag;int check(){

2013-08-11 16:23:28 487

原创 poj 2001 Shortest Prefixes

链接:点击打开链接给你一些字符串,输出字符串本身的唯一前缀。字典树模板题。#include#include#include#include using namespace std;#define MAX 26struct trie{ struct trie *next[MAX]; int num; };trie *root;int n;void bulidtrie(

2013-08-11 16:19:44 370

原创 poj 1936 All in All

链接:点击打开链接判断前面这个字符串是否在后面字符串出现,可以不连续,但一定要和前面这个字符串是相同的序列。一个暴力。#include#include#includeusing namespace std;char a[100010],b[100010];int main(){ int i,len1,len2,j,flag; while(~scanf("%s %s",a,b)

2013-08-11 16:16:51 371

原创 poj 1509 Glass Beads

链接:点击打开链接给你一个字符串,把看成一个圆串,从哪里拆开,可以使整个字符串的字典序最小,输出拆开那个字母的位置。最小表示法:对于一个字符串S,求S的循环的同构字符串S’中字典序最小的一个。#include #include #includeusing namespace std;/*用最小表示法求字符串S的最小字典序返回字典序最小的串的首字母位置*/int Mi

2013-08-11 16:11:49 408

原创 poj 1159 Palindrome

链接:点击打开链接判断加几个字符可以组成回文串,DP,找出原串和反串的最长公共子串,原串的长度减去最长公共字串的长度。#include#include#include#includeusing namespace std;int max(int a,int b){ return a>b?a:b; }short int dp[5001][5001];int main(){

2013-08-11 16:00:11 399

原创 poj 1056 IMMEDIATE DECODABILITY

链接:点击打开链接判断一个是否字符串是另一个的前缀。最多8个字符串,最少两个,纯暴力,说好的字典树了。#include#include#include#includeusing namespace std;char a[10][10];int main(){ int i,j,k,num,m,len1,len2,flag,x; i=0; x=1; while(

2013-08-11 15:55:06 486

原创 poj 1226 Substrings

链接:点击打开链接(1)函数原型:extern char *strstr(char *str1, char *str2);    功能:找出str2字符串在str1字符串中第一次出现的位置(不包括str2的串结束符)。判断一个子串是否在一个字符串中出现(2)原型:char *strcpy(char *dest, char *src);   功能:把src所指由'\0'结束的字符串复制到de

2013-08-10 15:07:38 324

原创 2010湖南省C题

问题描述定理:把一个至少两位的正整数的个位数字去掉,再从余下的数中减去个位数的5倍。当且仅当差是17的倍数时,原数也是17的倍数 。例如,34是17的倍数,因为3-20=-17是17的倍数;201不是17的倍数,因为20-5=15不是17的倍数。输入一个正整数n,你的任务是判断它是否是17的倍数。输入输入文件最多包含10组测试数据,每个数据占一行,仅包含一个正整数n(1

2013-08-08 19:44:25 662

原创 2010湖南省B题

弟弟的作业时间限制: 1000 ms 内存限制: 65535 K问题描述你的弟弟刚做完了“100以内数的加减法”这部分的作业,请你帮他检查一下。每道题目(包括弟弟的答案)的格式为a+b=c或者a-b=c,其中a和b是作业中给出的,均为不超过100的非负整数;c是弟弟算出的答案,可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。输入输入文件包含不超过100行,以文件结束符结尾。每行

2013-08-08 19:40:55 415

原创 2011ACM湖南省省赛K题 RMQ with Shifts

问题描述In the traditional RMQ (Range Minimum Query) problem, we have a static array A. Then for each query (L, R) (L<=R), we report the minimum value among A[L], A[L+1], …, A[R]. Note that the indi

2013-08-07 15:50:02 694

原创 FZU 2105 Digits Count

链接:点击打开链接          四个操作,或,与,异或,求和。成段更新。      如果相邻两个数经过操作之后变成相同的数了,那么再经过覆盖了该区间的操作时,那么他们的值将同时发生改变,变成另外一个相同的值,这多次操作下去,之后将生更多的相同的数字区间,这里的相同数字就是懒惰标记更新的关键:例如:OR 6 0 3, A=[6 6 6 7];    其中6出现了3次#inc

2013-08-06 18:50:22 548

原创 poj 3667 Hotel

链接:点击打开链接给定N个连续的房间,最初的时候全部是空的,接下来m个操作,总共有一下两种操作:1、 a:询问是不是有连续长度为a的空房间,有的话住进最左边2 、a b:将[a,a+b-1]的房间清空基础的区间合并和覆盖问题,维护四个域:懒惰标记setv,区间最值maxv,从左端点开始的连续的最大房间数lmax,从右端点开始的连续的最大房间数rmax#inc

2013-08-06 10:38:27 285

原创 poj 3264 Balanced Lineup

链接:点击打开链接大水题一个。这周的线段树训练,恐怕就是这道最水啦。。。。#include#include#include#includeusing namespace std;#define N 50010struct node{ int l; int r; int min; int max; }anode[4*N];int date

2013-08-04 18:58:22 357

原创 poj 2777 Count Color

链接:点击打开链接两种操作,C A B C是A到B中涂颜色C,P A B 是A到B区间有几种颜色。成段更新。需要注意的是这里没讲A一定大于B。#include#include#include#includeusing namespace std;#define N 100010struct node{ int l; int r; int c; }

2013-08-04 18:54:11 368

原创 hdu 2665 Kth number || poj 2761 Feed the dogs || poj 2104 K-th Number

都是划分树加线段树。划分树定义为,它的每一个节点保存区间[lft,rht]所有元素,元素顺序与原数组(输入)相同,但是,两个子树的元素为该节点所有元素排序后(rht-lft+1)/2个进入左子树,其余的到右子树,同时维护一个num域,num[i]表示lft->i这个点有多少个进入了左子树。三个代码基本一样,就只有输入不同,第二个和第三个一样:#include#includ

2013-08-04 09:39:29 579

原创 poj 3277 City Horizon

链接:点击打开链接求在同一水平线上的矩形面积。与HDU 1255 覆盖面积有点类似。#include#include#include#includeusing namespace std;#define N 40010 int line[2*N],a[N],b[N],h[N];struct node{ int l; int r; int c;

2013-08-04 09:31:49 499

原创 hdu 1255 覆盖的面积

链接:点击打开链接求覆盖两次和两次以上的面积,扫描线加线段树。#include#include#include#include#includeusing namespace std;#define N 5010#define SB 1e-8struct node1{ double x,y1,y2; int flag; }a[N];struct no

2013-08-04 09:26:53 401

火车订票系统

MVC框架,面向接口编程,模拟网上订票的主要功能。可维护性高,可学习性强

2014-09-02

采用非mvc框架的书店管理系统

采用MVC框架,工厂,值对象等设计模式。面向接口编程,有着很好的可维护性,功能基本齐全,易修改,添加。 分分五个模块,user,book,in,out,stock

2014-09-02

空空如也

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

TA关注的人

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