自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(168)
  • 资源 (8)
  • 收藏
  • 关注

原创 【中北大学2013年第一学期新生程序设计大赛 解题报告】

Problem A小学问题(难)Problem B一元三次方程求根(简单)Problem CVigenère密码(简单)Problem D昂贵的奖励(难)Problem E质数环(中等)Problem FLucky Word(简单)Problem G转圈游戏(中等)Problem H

2013-12-02 21:51:03 1523 1

原创 poj 3686 The Windy's(最小费用最大流)

题意:有n个任务需要用m台机器来完成,给出了第i个任务在第j个机器上需要花的时间。但是,每台机器一次只能工作一个任务,因此有些任务如果非要在某台机器上运行可能需要等待。求任务需要时间的最小平均值。思路:第一眼看到感觉就是网络流问题,但没想到如何表示一台机器完成多个任务的时间如何表示。起初想到用标记边访问的次数来表示,细想是错的。。。。看了别人的想法,原来是用折点来表示。若某台机器按

2013-09-07 21:08:46 590

原创 poj 1486 Sorting Slides(二分匹配)

题意:有n个大小不等透明的幻灯片(只有轮廓和上面的数字可见)A、B、C、D、E…按顺序叠放在一起,现在知道每个幻灯片大小,由于幻灯片是透明的,所以能看到幻灯片上的数字(给出了每个数字的坐标,但不知道这些数字分别属于哪个幻灯片),现在要你根据当前的已知信息,输出能够确定的幻灯片编号和数字的匹配。思路:很明显的二分匹配问题,但求的是确定匹配,先求出最大的匹配。然后依次删除每一条边,再求其最大匹

2013-09-07 10:32:17 805

原创 poj 1637 Sightseeing tour(混合欧拉回路)

第一次遇见混合欧拉回路,不懂。查看了解题报告才了解此类问题的解法。以下摘自:http://zhyu.me/acm/zoj-1992-and-poj-1637.html题意:给出一个混合图(有的边有向,有的边无向),问此图是否存在欧拉回路。先说说欧拉回路吧,起点和终点相同,经过图G的每条边一次,且只经过一次的路径称为欧拉回路。按照图的不同分为:无向图欧拉回路、有向图欧拉回路和

2013-09-02 19:57:02 557

原创 hdu 4635 Strongly connected(Tarjan)

做完后,看了解题报告,思路是一样的。我就直接粘过来吧最终添加完边的图,肯定可以分成两个部X和Y,其中只有X到Y的边没有Y到X的边,那么要使得边数尽可能的多,则X部肯定是一个完全图,Y部也是,同时X部中每个点到Y部的每个点都有一条边,假设X部有x个点,Y部有y个点,有x+y=n,同时边数F=x*y+x*(x-1)+y*(y-1),整理得:F=N*N-N-x*y,当x+y为定值时,二者越接近,

2013-08-02 15:57:54 606

原创 UVA 12299 RMQ with Shifts(线段树)

题意:有一数组A是可变的,支持shift(i1,i2,...,ik),表示把元素A[i1],A[i2],....,A[ik],循环左移一位。query(L,R);是询问区间[L,R]的最小值。思路:这是道比较简单的线段树问题,把循环的更改的值依次单点更新即可。//0 KB 258 ms#include#include#define L(u) (u<<1)#defi

2013-08-01 17:56:46 522

原创 UVA 11987 Almost Union-Find(并查集)

题意:初始有N个集合,分别为 1 ,2 ,3 .....n。有三种操件1 p q 合并元素p和q的集合2 p q 把p元素移到q集合中3 p 输出p元素集合的个数及全部元素的和。思路:并查集操作。1、3步比较容易实现,只要建立一个sum[],cnt[],记录每个结点相应值,和并时把值更新到根结点,输出时只要找到根结点输出其值即可。但2操作有点麻烦,并查集没有删除操作。原先以

2013-08-01 17:06:23 608

原创 UVALive 4329 Ping pong(解法二:树状数组)

思路详解参见:http://blog.sina.com.cn/s/blog_691ce2b70101lolv.html这里用树状数组实现,时间要快很多。//0 KB 113 ms#include #include #define lowbit(x) (x &(-x))const int M = 100005;const int N = 20005;int ar[

2013-07-31 11:51:47 488

原创 UVALive 4329 Ping pong(线段树)

题目:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=13895题意:一条街上住有n个乒乓选手,他们有一个技能值,现在每场比赛要3个人,两个选手,一个裁判;裁判须住在他们之间,且其技能值必须在两选手之间,求一其能组织多少种比赛。思路:首先,每个人能组织的比赛数量为 其左边技能比他小的人的数量*右边比他大的 +左边比

2013-07-31 10:58:48 635

原创 hdu 4612 Warm up(无向图Tarjan+树的直径)

题意:有N个点,M条边(有重边)的无向图,这样图中会可能有桥,问加一条边后,使桥最少,求该桥树。思路:这个标准想法很好想到,缩点后,求出图中的桥的个数,然后重建图必为树,求出树的最长直径,在该直径的两端点连一边,则图中的桥会最少。从这题中学到两点,所以写一下解题报告。1.官方说judge的栈小,得手动增栈 #pragma comment(linker,"/STACK:1024000

2013-07-28 16:12:33 1019

原创 hdu 4607 Park Visit(求树的最长直径)

题意:有n个景点,n-1条边,相连点间的距离为1,问遍历k个点,求最小的步行距离。思路:1.求出这棵树的最长直径,如果k小于最长直径len ,则最小距离为k-1,否则为(k-1en)*2+len-1;2.如何求一棵树的最长直径。从任一个点BFS,最后进队列的点必为直径两个端点中的一个。再以该点为起点DFS求出树的直径。//406MS 2988K#include

2013-07-24 17:17:27 562

原创 poj 3114 Countries in War(Tarjan+floyd)

题目大意是这样说的,在一个有向图中,每两点间通信需要一定的时间,但同一个强连通分量里传递信息不用时间,给两点u,v求他们最小的通信时间。思路:题意比较直白,就是缩点后,重新建图,求其最短路。看了一下点的范围是500,查询次数是100,想了一下,用SPFA求最短路时间会快点,但floyd也可以,代码短。最后发现时间有点多。。。。//2644K 985MS#include#includec

2013-07-24 09:39:12 514

原创 poj 3180 The Cow Prom(强连通分量 Tarjan)

题意:有N个牛,围在一水池边,它们用绳子互相绑着(有方向的)。如果绳子的方向一致,它们就能顺时针转,问有多少组牛可以跳舞。思路:简单有向图的强连通分量。求出强连通分量,且强连通分量里的点数大于等于2的块就能跳舞。//836K 79MS#include#include#includeusing namespace std;const int VM = 10005;

2013-07-23 17:07:26 791

原创 poj 2553 The Bottom of a Graph(强连通 Tarjan)

题意:在一个有向图中,求出 点v能到达的点都能到达v的一个子图,然后把里面的点从小到大输出,没有的话输出空行。思路:题意很明显,求出强连通分量,缩点后,找出出度为0的点然后保存里面的点。//484K 94MS#include#include#includeusing namespace std;const int VM = 5005;const int EM

2013-07-23 12:59:26 470

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

题意:有一块足够长的墙了给竞选人贴海报,后贴的可能会把衣面贴的给覆盖掉,问最有多少不同的海报是能看到的。思路:线段树,因为坐标范围太大,无法表示,得离散化。1.如何离散化。个人觉得 离散化是件危险的事,因为每次都会漏掉特殊情况,如此题若样列为1 61 25 6用unique离散后就得如下对应关系1 1 2 5 6 6 0  1 2  3如此求得的答案

2013-07-18 10:16:43 471

原创 hdu 1394 Minimum Inversion Number(线段树)

题意:有0~n-1数字组成的序列,然后进行这样的操作,每次将最前面一个元素放到最后面去会得到一个序列,每得到一个序列都可得出该序列的逆序数(如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数)。要求求出最小的逆序数。思路:(一直在做线段树的题,看列表里有这一题。想了很久不会,看解题报告做出来的。)说一下自己

2013-07-16 16:19:19 398

原创 UVA 10344 23 out of 5(搜索+全排列)

题意:有5个数和+ - * 三种运算,问5个数经过各种运算能否得到23.思路:简单的搜索吧,用next_permutation 求出各种排列 再搜索一遍。//0 KB 719 ms#include #include #include using namespace std;int a[5];bool flag;void DFS(int pre,int cur){

2013-07-08 11:09:54 713

原创 UVA 539 The Settlers of Catan(图的搜索)

题意:有n个点m条边,求该图的最长一条链。思路:很简单的图的搜索,以每个点为起点都搜一遍过,找出最长的。//0 KB 18 ms#include#include#define M 30struct Edge{ int u,v,nxt;}edge[M*2];int head[M],vis[M*2];int n,m,ep,ans;void addedg

2013-07-05 15:04:10 576

原创 UVA 146 ID Codes(排列)

题意:给你一个字符串,求它的下一个排列,按字典序。思路:水题,用到一下next_permutation 求下一个排列函数。//0 KB 18 ms#include #include #include #define M 55using namespace std;int main (){ char str[M]; while (~scanf ("

2013-07-04 21:48:45 534

原创 UVA 11205 The broken pedometer

题意:计数器有问题,现在给出p和n,p表示用p位二进制数来表示一个数,n表示有n个数分别用二进制给出。问最少用多少列就能把这n个数区别开。列数不一定连续。思路:原来以为是用连续的m列来表示,WA了几次。这里用到了排列,用B[]来表示p位的排列,1表示取这一列,0反之。然后判断取这排列n个数是否相同。刘汝佳 的算法竞赛入门经典 121页#include #include

2013-07-04 21:15:19 665

原创 UVA 10054 The Necklace(euler)

题意:有一堆散落的项链的的珠子,珠子有可能重复的出现,问我们能否连接成一条项链。每个珠子上头和尾都用颜色(用0~50表示)。思路:这是一个无向图的欧拉回路。在输出欧拉回路前要先判断该图是否连通和是否为欧拉图;因为珠子可以重复出现,不适用表边,用矩阵保存。//0 KB 285 ms#include#includeconst int VM = 55;int vis[VM],mat[VM

2013-07-03 17:26:23 1049

原创 uva 674 - Coin Change(dp)

题意:给一个钱数n,有5种硬币,求有多少种组合方法。思路:记忆化搜索。很容易想到状态转移方程:f[i] = sum(f[i-coin[j]),但是有一个问题,一维的无法解决,因为会有重复,比如如f[11] = f[10]+f[6]+f[1] ,  而f[10] 和 f[6]里包含 1 511111、 5 111111 重复。所以用二维表示,避免重复。//0 KB 42

2013-05-03 22:31:00 1052

原创 poj&nbsp;1704&nbsp;Georgia&nbsp;and&nbsp;Bob(博奕)

题意:Georgia and Bob玩游戏,在一条形格子中有N个棋子,他们可以选择任意棋子,往左移到不超过其它棋子和最左边的任意步数。谁不能走谁输。思路:跟Nim很像,把两个棋子的距离看成一堆石子,因为如果你把左边的棋子移动任意步数,右边的棋子跟着移动相同步数就会抵消(例 2 33 等同于 2),这样就转换成Nim游戏了。//176K   16MS#include#includ

2013-04-23 09:28:59 542

原创 poj&nbsp;2960&nbsp;S-Nim(博奕)

题意:跟前一道 Fibonacci again andagain 差不多,对每种S只能取固定的数,下面有m组测试数据,每组开始一个l表明有多少个数,接着输入l个hi,对于每组问先手是赢是输。思路:一样的求SG函数,注意两点,第一,给出S所能取的数不一定是从小到大的,所以得排序;第二,按普通的求SG函数方法,会超时,无耐看也别人的方法才知道得用递归求SG。还有一点不明白,他们为什么都把SG

2013-04-23 09:28:57 502

原创 hdu&nbsp;1848&nbsp;Fibonacci&amp;nbs…

思路:SG函数的应用,可取的值为不连续的固定值,可用GetSG求出SG,然后三堆数异或。//0MS   240K#include#includeconst int M = 1005;int Fibs[M],SG[M],hash[M];void Fib(){    Fibs[1] =1;    Fibs[2] =2;    for (int i =3;Fibs[i]

2013-04-23 09:28:53 510

原创 SG函数模板

/*计算从1-n范围内的SG值。Array(存储可以走的步数,Array[0]表示可以有多少种走法)Array[]需要从小到大排序1.可选步数为1-m的连续整数,直接取模即可,SG(x) = x % (m+1);2.可选步数为任意步,SG(x) = x;3.可选步数为一系列不连续的数,用GetSG(计算)*/int SG[MAX], hash[MAX];void GetSG(

2013-04-23 09:28:51 450

原创 hdu&nbsp;2147&nbsp;kiki&#039;s&nbsp;game(博奕)

题意:在一个m*n的棋盘内,从(1,m)点出发,每次可以进行的移动是:左移一,下移一,左下移一。然后kiki每次先走,判断kiki时候会赢(对方无路可走的时候)。思路:定义状态 P为必败点,N为必胜点。有以下结论(1):最终态都是P(2):按照游戏规则,到达P态都是N的话(3):按照游戏规则,到达当前态的前态至少有一个P的话,当前态是N于是可得如下图:2147 kiki's gam

2013-04-23 09:28:49 477

原创 NOJ的几道经典搜索题题解

因为周六举行月赛,写几个经典的BFS DFS供大家参考,代码是以前写的不是很简洁,有不懂的可留言。注:写搜索时一定要记得访问标记,以免访问过的点再次访问,出现死循环等情况。1、走不出的迷宫:http://acm.nuc.edu.cn/OJ/problem.php?pid=1010数据范围比较小,可以用递归,代码简洁些;#include "stdio.h"#define M 82in

2013-04-23 09:28:43 644

原创 poj&nbsp;2488&nbsp;A&nbsp;Knight…

题意:骑士遍历,在一个p*q的棋盘中,求一条路径遍历完所有的格子,输出其路径(按字典序)。思路:如果能,那必定是从A1这个格子出发(这应该很容易想明白) 一个难点就是要按字典序输出,只要控制搜索的方向就可以了即按字符小的搜索,字符相同的按数字小的搜索。然后就是DFS了。我定义 行为x,列为y(个人习惯)//168K   16MS#include#includeconst in

2013-04-23 09:28:41 479

原创 最小生成树模板

prim算法(矩阵形式):#define inf 0x3f3f3f3fint prim(int n,int sta)//n表示有n个顶点,sta表从sta这个顶点出发生成最小生成树{    intmark[M],dis[M];    int i,sum =0;    //sum是总的最小生成树边权值    for (i = 0;i    {       dis[i] =

2013-04-23 09:28:39 409

原创 poj&nbsp;2457&nbsp;Part&nbsp;Acq…

题意:cows想用自己手上的商品(1)通过多次交换得到想要的商品(k),给出两种商品的交换关系,求出至少有多少种商品经过交换,输出交换的顺序。思路:最短路。相当于求从1商品到k商品的最短路径,中间再记录一下结点信息。我用的是边表实现dij算法//412K   79MS#include#includeconst int EM = 50010;const int VM = 1

2013-04-23 09:28:37 451

原创 如何在自己电脑上搭建一个无线网络

1、请却仍您使用的操作系统是微软的Windows 7或者Windows server 2008 R2,正版盗版皆可。(此方法只在Windows 7和Windows server 2008 R2下验证通过,VISTA下未验证,请安装VISTA的朋友也验证一下)2、以管理员身份运行命令提示符(用快捷键WIN+R调出运行然后输入CMD打开命令提示符的非是管理员权限),右击“命令提示符”,选择以“管理员

2013-04-23 09:28:35 1367

原创 poj&nbsp;3216&nbsp;Repairing&amp;nbs…

题意: 一家维修公司,服务的 Q 街区。每个街区有一定距离,一天公司收到M修理任务,第i个任务发生在第i个街区,并且每个任务都有起始时间ti,完成一个任务需要di时间.修理工必须完成一个任务后,再去另一个.问要完成这M个任务最少需要多少个修理工?思路:有向图的最小路径覆盖。先用floyd求出两点间的最短距离,然后建图 若第j个街区任务的开始时间大于等于第i个街区的任务完成时间+ 路上花

2013-04-23 09:28:33 414

原创 STL常用算法

该篇分为十一部分,分别是:1. vector类的主要成员、2. deque类的主要成员、3. list类的主要成员、4. stack类的主要成员、5. queue类的主要成员、6. priority_queue类的组要成员、7. set类的主要成员、8. multiset类的主要成员、9. map类的主要成员、10. multimap类的主要成员、11. STL算法函数 

2013-04-23 09:28:30 438

原创 HDU&nbsp;4292&nbsp;Food(网络流)

题意:有F种食物 D种饮料 它们都有一定的数量 有N个人 每个人都有自己喜欢吃的食物和饮料 (每个人至少要一种食物和饮料)只有能满足他的要求时他才会接服务 求最大能满足多少人?思路:网络流 建一超级源点 汇点 源点与食物相连 边权为其数量,汇点与饮料相连 边权也为其数量 把人分成两个点 之间的边权为1每个人与之需要的食物和饮料相连 边权为1 ////125MS   2136K#

2013-04-23 09:28:28 612

原创 HDU&nbsp;4289&nbsp;Control(网络流)

题意:有N个城市 M条无向边 有一恐怖分子要从某一城市到另一城市 打算在某些城市安放一些SA 去抓住他但若在某个城市安放SA需要一定费用 求要抓到恐怖分子 最少的费用是多少?思路:网络流问题。建一超级源点和汇点与原源点、汇点相连,然后把一个城市拆成两个点 边权为其费用两相连城市间的边权为无穷大  求其最大流即可。//62MS   1176K#include #include

2013-04-23 09:28:26 468

原创 HDU&nbsp;4279&nbsp;Number

题意:如果A不是B的因子,且A B不互质 则称A是B的特殊数 定义一函数f(x) 为x的特殊数的数量若f(x)为奇数 则 x为real number 给x 和y 求x和y间的real number。思路:只要算出[sqrt(x),sqrt(y)]间的偶数n1和奇数的个数n2,和[x,y]间偶数的个数n3则ans = n3 - n1 + n2;证明:任一个数n 有n = phi(n)+g

2013-04-23 09:28:19 416

原创 HDU&nbsp;4287&nbsp;Intelligent&nbsp;IME

题意:每个数有对应的字母2 : a, b, c 3 : d, e,f   4 : g, h, i  5 : j, k,l   6 : m, n, o  7 : p, q, r, s 8 : t, u,v   9 : w, x, y, z给出一数字和单词 问该数字能组成下列单词中的多少个?#include using namespace std;int a[100

2013-04-23 09:28:17 475

原创 HDU&nbsp;4280&nbsp;Island&nbsp;Transport(网络…

题意:有N个岛屿 M条无向路 每个路有一最大允许的客流量,求从最西的那个岛屿最多能运用多少乘客到最东的那个岛屿。思路:很单纯的网络流,重点是卡时间 模板的高效性很重要啊该模板详解 参见这里  模板题就不注释了//4796MS   8836K#include #include #define VM 100010#define EM 400010const int inf = 0

2013-04-23 09:28:09 421

原创 poj&nbsp;1847&nbsp;Tram(floyd)

题意:有N个点 接下来的N行分别为点i的情况:第一个数字k表示与该点连通的点的个数,接下来输入k个数,表示与点i相连的点的编号,第一个所连的点为不用手动改而直接通过,其余的点通过的话要改一次,求从A点到B点改扳手的最小次数。思路:单源最短路问题。此题注意 Switch in the i-th intersection is initiallypointing in the directi

2013-04-23 09:28:07 454

ACM 内功心法

ACM 内功心法 各种算法,各种优化

2012-07-16

线段树题目

大量线段树题目 zoj 1610 线段覆盖 poj 2777 线段覆盖 poj 2528 需要离散化,建树不同,需要处理不同->注意这组数据 3 1 10 1 3 6 10 the ans is 3. hdu 1754 求区间最大值 hdu 1166 求区间和 hdu 1698 成段更新 poj 3468 成段更新 ural 1019 覆盖加统计最长同一个颜色 zoj 2301 和上一题差不多,但是这个染色染的是点,注意染色为空的状况

2012-07-16

三级网络技术

网络技术 资料 详细 自己总结的资料 很齐全

2011-09-18

PHP中文手册.chm

PHP中文手册 自学必备 分享给大家 PHP中文手册 PHP中文手册

2011-08-09

c、c++ 数据结构排序

c、c++ 数据结构排序 很好的资源 ########

2011-07-08

图 数据结构 BFS DFS

图 数据结构 BFS DFS @@@@@@@@@@@@@@@@@@@@@@@@@@@@@

2011-07-08

树-二叉树

数据结构 二叉树

2011-07-08

空空如也

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

TA关注的人

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