- 博客(176)
- 资源 (227)
- 收藏
- 关注
原创 (step7.2.2)hdu 2161(Primes——判断是否是素数)
题目大意:输入一个n,判断您是否是素数。。解题思路:简单数论代码如下:/* * 2161_1.cpp * * Created on: 2013年8月31日 * Author: Administrator */#include using namespace std;bool isPrime(int n){ if(n == 1 || n
2013-08-31 22:02:53 1357
原创 (step7.2.1)hdu 1395(2^x mod n = 1——简单数论)
题目大意:输入一个整数n,输出使2^x mod n = 1成立的最小值K解题思路:简单数论1)n可能不能为偶数。因为偶数可不可能模上偶数以后==1.2)n肯定不可能为1 。因为任何数模上1 == 0;3)所以n肯定是除1外的奇数代码如下:#include using namespace std;int main(){ int n; whi
2013-08-31 21:37:22 1354
原创 (step6.3.5)hdu 1281(棋盘游戏——二分图的完美匹配)
题目大意:本体是中文题。读者可以直接在OJ上看解题思路:1)完美匹配:所有的端点都是匹配点2)对于二分图的完美匹配,我们需要用一个数组来存储匹配点。(而二分图的其他问题(我们则可以直接使用变量来存储即可)for(i = 1 ; i <= k ; ++i){// int a,b对于完美匹配的题,需要用数组记录下匹配点。假如不是完美匹配的二分图的题。直接用a,b即
2013-08-31 13:53:21 1424
转载 lower_bound()返回值
函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置举例如下:一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标则pos = lower_bound( number, num
2013-08-31 10:45:41 1965
转载 二分图匹配
本文直接转载自http://blog.csdn.net/q3498233/article/details/5786225二分图:二分图是这样一个图,它的顶点可以分类两个集合X和Y,所有的边关联的两个顶点恰好一个属于集合X,另一个属于集合Y。二分图匹配:给定一个二分图G,在G的一个子图M中,M的边集中的任意两条边都不依附于同一个顶点,则称M是一个匹配。最大匹配:图中包含边数最多的
2013-08-31 07:59:17 1082
原创 (step6.3.4)hdu 1151(Air Raid——最小路径覆盖)
题意: 一个镇里所有的路都是单向路且不会组成回路。 派一些伞兵去那个镇里,要到达所有的路口,有一些或者没有伞兵可以不去那些路口,只要其他人能完成这个任务。每个在一个路口着陆了的伞兵可以沿着街去到其他路口。我们的任务是求出去执行任务的伞兵最少可以是多少个。 思路: 这个题就是个最小路径覆盖问题。路径覆盖的定义是:在有向图中找一些路径,使之覆盖了图中的所
2013-08-31 07:52:20 1340
原创 (step6.3.3)hdu 1150(Machine Schedule——二分图的最小点覆盖数)
题目大意:第一行输入3个整数n,m,k。分别表示女生数(A机器数),男生数(B机器数),以及它们之间可能的组合(任务数)。在接下来的k行中,每行有3个整数c,a,b。表示任务c可以有机器A的a状态或者是机器B的b状态来完成解题思路:最小点覆盖数1)如果把一个任务看成是一条直线,那么机器的状态就为一个点。在所有任务都必须完成的情况下(即一条直线上至少要有一个端点),求所需要的
2013-08-30 21:51:01 1277
原创 (step6.3.2)hdu 1068(Girls and Boys——二分图的最大独立集)
题目大意:第一行输入一个整数n,表示有n个节点。在接下来的n行中,每行的输入数据的格式是:1: (2) 4 6 :表示编号为1的人认识2个人,他们分别是4、6;求,最多能找到多少个人,他们互不认识解题思路:二分图的最大独立集。1)最大独立集 = 节点数 - 最大匹配数/2;2)令女生数= 男生数 = 总数3) 1: (2)可以采用scanf("%d: (%d)
2013-08-30 21:17:24 1147
原创 (step6.3.1)hdu 2063(过山车——二分图的最大匹配)
题目大意:第一行输入3个整数k,n,m。分别表示可能的组合数,女生数,男生数。在接下来的k行中,每行有两个整数a,b。表示a女生愿意和b男生匹配。求最大匹配。解题思路:1)直接使用匈牙利算法即可研究了几个小时,终于明白了。说穿了,就是你从二分图中找出一条路径来,让路径的起点和终点都是还没有匹配过的点,并且路径经过的连线是一条没被匹配、一条已经匹配过,再下一条又没匹配这样
2013-08-30 20:13:49 1470
转载 ACM大牛BLOG
Twilightgod CUST http://blog.csdn.net/twilightgodAekdycoin FZU http://hi.baidu.com/aekdycoinForeverlin HNU http://hi.baidu.com/forverlin1204/blogMatrix67 PKU http://www.matrix67.com/blog/watas
2013-08-30 15:30:09 1703
转载 ACM的神牛
wywcgs:亦称Lord Wu,俗名吴垠,2009级厦门大学智能科学与技术学院研究生,本科就读于哈尔滨工业大学。因其深厚的算法功底与独到的思维方式,被尊为“吴教主”,至今声威犹存。2006年起参加ACM/ICPC竞赛,获得分别获得上海、西安、长春三枚区域赛银牌。2008年获得GCJ-BeiJing Onsite参赛资格,并在比赛中表现优异,获得Final资格,后因
2013-08-30 15:26:00 1813
转载 C++的64位整数
http://www.cnitblog.com/cockerel/archive/2006/08/16/15356.html
2013-08-30 13:39:44 1344
原创 (step6.2.4)hdu 2680(Choose the best route——最短路径)
题目大意:输入3个整数n,m,end。分别表示村庄数、道路数以及终点。在接下来的m行中,每一行输入3个整数a,b,c。分别表示每条道路的起点、终点,以及所要花费的时间。在接下来输入一个数字count,表示可以选择的起点的个数。在接下来的一行中有count个数字,每个数字表示可以选择的起点的标号。解题思路:最短路径1)本题是单向的。不要写成双向的。很可能会WA。2)设
2013-08-30 10:51:20 1350
转载 互联网系统架构的演进
多终端接入、开放平台给互联网带来了前所未有的用户量级和访问规模,SNS网站产生了海量的UGC(用户产生内容),而且这些内容依托关 系链扩散速度之快、传播范围之广是传统网站难以想象的,海量数据的计算存储也一直是近年互联网领域的热点。本文将从发展演进的层面探讨互联网的系统架构。天下武功唯快不破网站初期的架构一般采用“短平快”的架构思路,架构以简单清晰、容易开发为第一衡量指标。互
2013-08-29 18:31:21 1301
原创 (step6.2.3)hdu 2544(最短路——最短路径)
题目大意:输入两个整数n,m。分别表示村庄数以及道路数。在接下来的的m行中,每行有3个整数,a , b ,c。分别表示这条道路的起点、终点,以及从起点到终点所需要的时间。特别地,1表示商品店。n同时也表示比赛场地。求工作人员从起点到终点所需要的最小时间解题思路:1)令start = 1 , end = n。即可代码如下:#include #include #in
2013-08-28 20:37:39 1154
原创 (step6.2.2)hdu 1874(畅通工程续——最短路径)
题目大意:输入两个整数n,m,分别表示村庄数和道路数。在接下来的m行中,每行有3个整数a,b,c,分别表示起始村庄、结束村庄、以及他们之间的距离。每个测试数据的最后一行有两个整数start,end。分别表示起点和终点。求从起点到终点的最短距离。解题思路:最短路径1)本题一定要注意的是:两点之间可能有多条道路。这是我们要选择最短的那条 if(map[a][
2013-08-28 19:50:58 997
原创 hdu 1690(简洁版)
#include #include #include #include using namespace std;#define inf 10000000000000__int64 map[101][101];__int64 d[101];bool hash[101];__int64 a[101];__int64 l1,l2,l3,l4,c1,c2,c3,c4;__int6
2013-08-28 15:37:32 989
原创 (step6.2.1)hdu 1690(Bus System——最短路径)
题目大意:输入一个整数t,表示测试用例数。接下来驶入8个整数l1, l2, l3, l4, c1, c2, c3, c4.其中l1~l4表示路程,c1~c4表示费用。路程与费用之间的具体关系见problem description。接下来输入两个整数n,m。分别表示站(station)的个数以及问题的个数。在接下来的n行中,每行给出一个数,表示各个站的位置(这里的位置是一维的,所以只给出横
2013-08-28 13:11:05 1297
转载 codeblocks快捷键(转载)
==日常编辑==• 按住Ctrl滚滚轮,代码的字体会随你心意变大变小。• 在编辑区按住右键可拖动代码,省去拉(尤其是横向)滚动条之麻烦;相关设置:Mouse Drag Scrolling。• Ctrl+D可复制当前行或选中块。• Ctrl+Shift+C注释掉当前行或选中块,Ctrl+Shift+X则解除注释。• Tab缩进当前行或选中块,Shift+Tab减少缩进。•
2013-08-28 12:20:08 965
原创 hdu 2159
/* * 2159.cpp * * Created on: 2013年7月29日 * Author: Administrator */#include using namespace std;int dp[105][105];int n,m,K,s,w[105],r[105],e[105];int main(){ int i , j , k , l;
2013-08-28 10:06:26 887
原创 hdu 1711
题目大意:说的是杭电以前分家的时候,财产要尽可能的均匀分给两个兄弟。现在告诉你价值为n的物品有m件,你的任务就是把这些东西尽可能的分成两份。然后输出最后每家分的的财产总和。最大的总在最前面········这一道题只要理解01背包、完全背包、多重背包,就很快可以做出来。/* * 1711_2.cpp * * Created on: 2013年7月30日 * Author:
2013-08-27 22:09:33 1138
转载 hdu 1076
题目大意:输入n,m。其中n为其实年份。然后输出以n作为其实年份的第m个闰年生日所在的年份。解题思路:常识题。闰年的判断条件为:(Y%4==0 && Y%100!=0) or Y%400==0.代码如下:/* * 1076_1.cpp * * Created on: 2013年8月10日 * Author: Administrator */
2013-08-27 22:08:48 1408
原创 ACM Runtime Error (STACK_OVERFLOW)
堆栈溢出.递归层数过多;没有在全局开比较大的数组;这些会出现STACK_OVERFLOW
2013-08-27 22:08:18 4144
原创 (step 6.1.9)hdu 1162(Eddy's picture——最小生成树)
题目大意:输入一个整数n表示表示有n个点。在接下来的n行中,每行有两个整数x , y 。分别表示一个点的横坐标以及纵坐标。求距离最小的连线解题思路:1)二维----->>一维for(i = 1 ; i <= n ; ++i){ scanf("%lf%lf",&point[i].x,&point[i].y); point[i].id = i; }2)求
2013-08-27 19:02:01 1040
原创 (step6.1.8)hdu 3367(Pseudoforest——最小生成树的逆应用)
题目大意:这也是一刀不需要知道题目什么意思的题。只要能看懂样例就行了解题思路:类似于最大生成树.1)最大生成树体现在:bool compare(const edge& a, const edge& b) { return a.weight > b.weight;}2)对于两棵树。如果都有环,不可合并。如果有一个环,标记后合并。如果没有环,直接合并。这主要体现在if
2013-08-27 18:23:13 1168
原创 (step6.1.7)hdu 3371(Connect the Cities——最小生成树)
本题还没有AC。TLE了。。。。先贴上TLE代码:/* * 3371_1.cpp * * Created on: 2013年8月26日 * Author: Administrator * 我喜欢章泽天!!!! */#include using namespace std;struct edge{ int begin; int end; int
2013-08-26 21:43:39 972
转载 OJ提交结果的整理
Waiting:你的程序刚刚提交,正在等待OJ评测你的程序。Compiling:OJ正在编译你的程序。Accepted:OK!你的程序是正确的 ^_^。Wrong Answer:你的程序运行的结果和正确结果不同。状态页面CASE那一览显示的是你的程序在第几个样例上出错的。Time Limit Exceeded:你的程序
2013-08-26 21:36:51 1402
原创 acm中c++与g++ 有什么区别?提交时,要注意什么?(详细一点...)
没有本质上的区别:C++是windows下的编译器给你判的。G++是linux下的G++编译器给你判题的。不过我也遇到过好多题目G++能过C++不能过,一般用G++提交比较稳妥。
2013-08-26 21:24:36 1811
原创 (step6.1.5)hdu 1233(还是畅通工程——最小生成树)
题目大意:输入一个整数n,表示有n个村庄,在接下来的n*(n-1)/2中,每行有3个整数beigin、end、weight,分别表示路的起始村庄,结束村庄和村庄之间的距离。求索要修的路的最短距离解题思路:最小生成树(克鲁斯卡尔算法实现)。。。PS:更详细的说明在上一篇博客中有代码如下:/* * 1233_1.cpp * * Created on: 201
2013-08-26 21:22:38 938
原创 (step6.1.6)hdu 1301(Jungle Roads——最小生成树)
题目大意:我可以说,做这道题的时候,我根本没有去读题吗。我只是看了图以及输入样例及输出。就写代码了。。。其实有些题真心不需要知道它是什么意思。。解题思路:最小生成树(克鲁斯卡尔算法实现)1)本题的关键在于把村庄编号由字符变成数字。for(j = 1 ; j <= m ; ++j){ char e1; int w;// scanf(" %c %d",&
2013-08-26 19:32:11 1052
原创 (step6.1.4)hdu 1102(Constructing Roads——最小生成树)
题目大意:输入一个整数n,表示村庄的数目。在接下来的n行中,每行有n列,表示村庄i到村庄 j 的距离。(下面会结合样例说明)。接着,输入一个整数q,表示已经有q条路修好。在接下来的q行中,会给出修好的路的起始村庄和结束村庄。。输入样例说明如下:解题思路:最小生成树(kruscal算法)1)以前的题会直接给村庄编号以及村庄距离。而这道题,这是给出村庄的距离矩阵。村庄的
2013-08-26 18:13:08 1143
原创 (step6.1.3)hdu 1875(畅通工程再续——最小生成树)
题目大意:本题是中文题,可以直接在OJ上看解题思路:最小生成树1)本题的关键在于把二维的点转化成一维的点for (i = 0; i < n; ++i) { scanf("%d%d", &point[i].x, &point[i].y); point[i].id = i; }2)可用边的计算int count = 0; for (i = 0; i <
2013-08-26 13:50:55 1019
转载 error:no type named iterator_category in struct
又一个非常非常诡异的一个编译错误。当我第一次遇到这个错误的时候头都晕了。还是先把代码贴上来吧:#include #include #include using namespace std;typedef struct TagPoint{ int x, y;}Point;inline double distance(const Point& a, const Point& b
2013-08-26 10:51:42 4649
原创 (step6.1.2)hdu 1863(畅通工程——最小生成树)
题目大意:输入两个整数m、n,分别表示道路数和村庄数。在接下来的m行中,每行有3个整数begin end weight,分别表示道路的起始村庄、结束村庄,以及修建这条道路所需要的费用。解题思路:最小生成树1)题目中所指的所谓的"数据不足"其实就是指,还有孤立节点(除了根节点)。只要对其进行判断即可for( i = 1 ; i <= n ; ++i){ if(fathe
2013-08-26 09:54:18 1167
原创 (step6.1.1)hdu 1879(继续畅通工程——最小生成树、kruscal)
题目大意:输入一个整数n,表示有n个村庄。在接下来的n(n-1)/2行中,每行有4个整数begin end weight flag。分别表示从begin到end之间可以连通,他们之间的费用为weight,flag表示这条路是否已经修好。求修路让所有村庄都连起来的最小费用解题思路:最小生成树代码如下:/* * 1879_4.cpp * * Created
2013-08-25 22:52:55 1302
原创 hdu 2095
题目大意:给你n个数字,已知只有一个数字出现了奇数次,其他数字都出现了偶数次,要求你找出这个特别的数字。解题思路:1、题目内存限制:1024K,所以不能简单地用数组存然后再处理。为了节约内存,可以用STL里面的set,map等容器。当容器里没有这个元素的时候,就插入这个元素,否则,删除这个元素。最后,容器中肯定只剩下一个元素,便是我们所要的结果。2、
2013-08-25 17:17:56 1273
原创 (step5.1.3)hdu 1213( How Many Tables——1213)
题目大意:输入两个整数n,m。分别表示点数、对点的操作的次数。在接下来的m行中,每行有两个整数a,b。表示a和b是好朋友。(不是好朋友的不能坐在同一个桌子上)。求需要多少张桌子解题思路:并查集1)用total来记录所需要的桌子数。如果没合并一次total就减1.代码如下:/* * 1213_1.cpp * * Created on: 2013年8
2013-08-24 21:35:52 892
转载 JAVA ACM 基础
Java做ACM-ICPC的特点: (1) 在一般比赛中,Java程序会有额外的时间和空间,而实际上经过实验,在执行计算密集任务的时候Java并不比C/C++慢多少,只是IO操作较慢而已。 (2) Java 简单而功能强大,有些东西用Java实现起来更为方便,比如高精度。 (3) 用Java不易犯细微的错误,比如C/C++中的指针, “if (n = m) ... ” 等 (4
2013-08-24 19:36:54 955
原创 (step5.1.2)hdu 1305(Immediate Decodability——字典树)
题目大意:输入一系列的字符串,判断这些字符串中是否存在其中的一个字符串是另外一个字符串的前缀。。如果是,输出Set 。。 is not immediately decodable否则输出Set .. is immediately decodable说的通俗点,就是判断一个字符串是否是两外一个字符串的前缀解题思路:这是一道字典树的题。一开始的时候,我用c/c++来写,然后
2013-08-24 18:59:13 1004
原创 (step5.2.1)hdu 1251(统计难题)
题目大意:本题是中文题。可以直接在OJ上看解题思路:其实就是求某个节点的使用的次数代码如下:/* * 1251_3.cpp * * Created on: 2013年8月24日 * Author: Administrator */#include using namespace std;struct node{ int count;
2013-08-24 15:26:21 953
git-1.8.1.3-intel-universal-snow-leopard.dmg
2015-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人