06 2015 档案
摘要:题意: 给出一个图的所有边,每次从图中删除一条边,求任意点对的路径总和(求完了就将边给补回去)。(有重边)思路: 1 #include 2 using namespace std; 3 const int N=105, INF=0x7f7f7f7f; 4 int mapp[N][N]; ...
阅读全文
摘要:题意:中文题目思路:spfa+SLF优化。关于SPFA的详情请戳我 1 #include 2 using namespace std; 3 const int N=105, INF=0x7f7f7f7f; 4 int n, m; 5 bool vis[N]; //标记是否在队列中 6 int...
阅读全文
摘要:题意:中文题目思路:匈牙利算法解决二分图最大匹配问题。 1 #include 2 using namespace std; 3 const int N=505; 4 int mapp[N][N]; //矩阵 5 int girl[N]; //记录该女已分配的男编号 6 int vis[N];...
阅读全文
摘要:题意: 有两台不同机器A和B,他们分别拥有各种运行模式1~n和1~m。现有一些job,需要在某模式下才能完成,job1在A和B上需要的工作模式又可能会不一样。两台机器一开始处于0模式,可以切换模式,但是仅在0模式才有切换权,可以通过重启机器回到0模式。现在有一堆job,要多少次重启机器才可以完成任...
阅读全文
摘要:最小边覆盖= 最大独立集 = |V| - 最大匹配数 这个是在原图是二分图上进行的 最小路径覆盖和最小边覆盖不同,不要求给的图是二分图,而是要求是N x N的有向图,不能有环,然后根据原图构造二分图,构造方法是将点一分为二,如,i分为i1和i2然后如果i和j有边,那么就在i1和j2之间连一条边。...
阅读全文
摘要:转自:http://blog.csdn.net/dark_scope/article/details/8880547【书本上的算法往往讲得非常复杂,我和我的朋友计划用一些简单通俗的例子来描述算法的流程】匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名。匈牙利算法是基于Hall定理中...
阅读全文
摘要:题意: 其实就是让你判断一个图是否为树,要求不能有孤立的点(没有这中情况),且只能有1个连通图,且边数+1=点数,且每个点都有边(不可能只有1个点出现)。思路: 有可能出现连续的4个0,也就是有测试例子是完全没有点的,也没有边,要打印Yes!记录下所有点(去重),记录下每个点的度数,如果有n个点...
阅读全文
摘要:题意: 给出图的边和点数,要求最小生成树的代价,注:有些点之间是不可达的,也就是可能有多个连通图。比如4个点,2条边:1-2,3-4。思路: 如果不能连通所有的点,就输出‘?’。之前以为每个点只要有边连着就一定能生成树,其实还可以是每个点虽然有边可达,但是给的其实是两个图,比如上例。其他按照常规...
阅读全文
摘要:题意:中文题目思路:prim实现,因为有n*(n-1)/2条边,已经是饱和的边了,prim比较合适。(1)将点1置为浏览过,点1可以到达其他每个点,所以用low[i]数组记录下目前到达i点的最小长度。(2)在low数组中找出到达未浏览过的点且距离最近的,置为浏览过,记该店为pos。(3)将pos点可...
阅读全文
摘要:题意:中文题目思路:按照HDU1213来做。http://www.cnblogs.com/xcw0754/p/4607813.html 1 #include 2 #define LL long long 3 using namespace std; 4 const int N=1005; 5 in...
阅读全文
摘要:转自http://blog.csdn.net/dellaserss/article/details/7724401 并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起party了。(party:我靠,关我嘛事啊?
阅读全文
摘要:并查集基本知识看:http://blog.csdn.net/dellaserss/article/details/7724401题意:假设一张桌子可坐无限多人,小明准备邀请一些朋友来,所有有关系的朋友都可以坐同一张桌,没有关系的则要另开一桌,问需要多少张桌子(小明不坐,不考虑小明与其他人的关系)?思...
阅读全文
摘要:题意:给出一个自然数x,要求找两个自然数a和b,任意多个a和b的组合都不能等于x,且要可以组合成大于x的任何自然数。如果找不到就输出两个0.(输出任意一个满足条件的答案)思路:x=偶数时,无法构成,输出两0。x=奇数时,必定能构成,且a和b中必有一奇,因为要构成奇数,必定要有奇数,可以偶+奇、奇+奇...
阅读全文
摘要:题意:有n个女孩围成一个圈从第1号女孩开始有一个球,可以往编号大的抛去(像传绣球一样绕着环来传),每次必须抛给左边第k个人,比如1号会抛给1+k号女孩。给出女孩的人数,如果他们都每个人都想要碰到球一次,那么这个k应该是多少(满足1 ≤ K ≤ N/2且 k必须尽量大)? 例如:n=7,那么1号开始...
阅读全文
摘要:题意:根据这种进制的算法,例如,给你一个左式,要求推出右式。(其实右式就是一个十进制数,根据这种进位的方法来转成特殊进制的数。)思路:观察转换特点,有点类似于二进制,但是其在后面还减一了。比如25-1、24-1 ...21-1。如果我们不减1会怎样?如上式,从左边看起,就会多加了(25-1)*1+1...
阅读全文
摘要:题意:有些数字是可以这样的:abcd*k=dabc,例如179487 * 4 = 717948,仅仅将尾数7移动到前面,其他都不用改变位置及大小。这里会给出3个数字b、d、k,分别代表b进制、尾数、第2个乘数。既然是尾数,必有d 2 #define LL long long 3 using name...
阅读全文
摘要:题意: 求一个数n的阶乘,其往后数第1个不是0的数字是多少。思路: [1,n]逐个乘,出现后缀0就过滤掉,比如12300就变成123,继续算下去。为解决爆long long问题,将其余一个数mod,过滤掉前面过大的部分,因为计算出来也没用。这个mod应该是多少? 10亿就行。 1 #includ...
阅读全文
摘要:题意:根据这个式子来递推求得每个随机数x,step和mod给定,seed(0)=0。如果推出来的序列是mod个不重复的数字(0~mod-1)则打印good,否则bad(因为不能产生所有的数)。思路: 用一个数组记录所产生过的数,当出现数字已记录过时,判断是否个数为mod个。若是就返回good。 1...
阅读全文
摘要:题意:给定Z,I,M, L,根据随机数产生式k=(Z*L+I)%M。但是L表示的是上一个产生的数,比如根据产生式产生了序列{2,5,4,3}那么5是由L=2算来的,4由L=5算来的..第1个所产生的数所需的L由系统给定。那么肯定会产生一个环,到某个位置就会开始产生重复的序列,比如1234534534...
阅读全文
摘要:题意: 给出两个数字a和b,求a的阶乘转换成b进制后,输出 (1)后缀中有多少个连续的0? (2)数a的b进制表示法中有多少位?思路:逐个问题解决。 设a!=k。 k暂时不用直接转成b进制。(1)阶乘后缀0问题。先看这个十进制后缀0的例子:http://www.cnblogs.com/x...
阅读全文
摘要:题意:2-3树的每个结点(除了叶子外)有2或3个孩子(分支),假设是一个满2-3树,那么给出叶子的数量,求这样的树有多少棵。(注:有2个孩子的结点视为相同,有3个孩子的结点视为相同,比如倒数第2层有4个结点,且叶子有4+6=10个,即2个有2孩的结点在前面,2个有3孩的结点在后面,那么头两个结点的孩...
阅读全文
摘要:题意: 给一个数n,返回其阶乘结果后缀有几个0。思路: 首先将n个十进制数进行质因数分解,观察的得到只有2*5才会出现10。那么n!应含有min(2个数,5个数)个后缀0,明显5的个数必定比2少,所以后缀0的个数为质因数后的5的个数。 为何这么说?例如n=15,那么{1 2 3 4 5 6 7 ...
阅读全文
摘要:题意: 给一个数n,返回该数的阶乘结果是一个多少位(十进制位)的整数。思路: 用对数log来实现。 举个例子 一个三位数n 满足102 2 #define LL long long 3 using namespace std; 4 const int N=1e-7; 5 int a; 6 ...
阅读全文
摘要:题意:给多个字符串,返回这些字符串的最长公共前缀。思路:直接逐个统计同一个位置上的字符有多少种,如果只有1种,那么就是该位是相同的,进入下一位比较。否则终止比较,返回前缀。可能有一个字符串会比较短,所以前缀最长也只是最短字符串的长度。 1 class Solution { 2 public: 3 ...
阅读全文
摘要:题意:给一个数n,返回小于n的素数个数。思路:设数字 k =from2 to sqrt(n),那么对于每个k,从k2开始,在[2,n)范围内只要是k的倍数的都删掉(也就是说[k,k2)是不用理的,若能被筛掉早就被筛了,保留下来的就是素数)。最后统计一下[2,n)内有多少个还存在的,都是素数。 要注...
阅读全文
摘要:Problem Description娜娜好不容易才在你的帮助下"跳"过了这个湖,果然车到山前必有路,大战之后必有回复,大难不死,必有后福!现在在娜娜面前的就是好多好多的糖果还有一些黑不溜秋的东西!不过娜娜眼中只有吃不完的糖果!娜娜高兴地快要蹦起来了!这时有一位挥着翅膀的女孩(天使?鸟人?)飞过来,...
阅读全文
摘要:题意: 写出一个环,环上有2^n个格子,每个格子中的数字是0或1,相连着的n个格子可以组成一个数的二进制,要求给出这2^n个数字的序列,使得组成的2^n个数字全是不同的。(即从0到2^n-1)思路: 构造一个图,但是只需要考虑边,每条边假设为n个0/1组成的串,即此图有2^n条边,每边代表1个数...
阅读全文
摘要:题意:给出一个0≤N≤1018,求其二进制中有几处是具有1的,假设相连的1只算1处,比如1101011就是3处。思路:一个个数,当遇到第一个1时就将flag置为1;当遇到0就将flag置为0。当遇到1时,flag=0就统计,当flag=1时就不统计。 1 #include 2 #define LL...
阅读全文
摘要:题意: 给定一个序列,对于q个询问:(L,R)之间有几个逆序对?序列元素个数<=1000,q<=100000。只有1个测试例子。 思路: [L,R]的逆序对数量可以这么算,假设L<=K<R,将区间拆成两部分,那么[L,k]中的逆序对要算上, (k,R]中的逆序对也要算上,还有一些逆序对假设为(l,r
阅读全文
摘要:题意:给一个字符串A,只含小写字符数个。再给一个字符串B,含小写字符数个。规则如下:1、字符串B从左至右逐个字符遍历,对于每个字符,如果该字符在A中存在,将A中所有该字符删掉,若不存在,则错误次数+1。2、当错误次数达到7时,游戏结束,输了lose。3、当串A中已经没有字符了,游戏结束,赢了win。...
阅读全文
摘要:题意:a,b,c三种棍子长度分别为20,28,32,现需要这三种棍子数根,欲买长为75的棍子来剪成这三种(不够长的就废弃) ,问需要买多少根。思路:将所有棍子尽可能和其他搭配起来,使得数量减到最少。分情况: 结果(按最坏情况考虑):2a+c=72 要么c=0,要么a=1或a=02a+b=68...
阅读全文
摘要:题意: 给出n个人的师徒关系,如有 a是b的师傅,b是c的师傅,c是a的师傅,这样则不合法,输出NO,否则输出YES。思路: 每段关系可以看成一条有向边,从师傅指向徒弟,那么徒弟的徒子徒孙都不可能再指向其师傅或自己,所以不可能构成环。两种方法 :1,用拓扑的方法,每次去掉一个入度为0的点,全部点...
阅读全文
摘要:题意: 给定一个图,要求打印出任一条欧拉路径(保证图肯定有欧拉路)。思路: 深搜的过程中删除遍历过的边,并在回溯时打印出来。在深搜时会形成多个环路,每个环都有一个或多个结点与其他环相扣,这样就可以产生欧拉路径。 1 #include 2 using namespace std; 3 const...
阅读全文
摘要:题意:给出n个岛,每个岛都有桥到达其他岛,且桥数可多可少(即使两岛有多桥),判断是否是欧拉路(即每条桥只能走一次,所有桥都能遍历1遍)。思路:满足如下条件之一者即为欧拉路:1、连通图,每个岛的度数为偶数。2、连通图,其中仅两个岛的度数为奇数,其他都是偶数。 1 #include 2 using n...
阅读全文
摘要:题意: 给出一个有n个点的无向图,每个点上有石头数个,现在的游戏规则是,设置某个点A的度数为d,如果A点的石子数大于等于d,则可以从A点给每个邻接点发一个石子。如果游戏可以玩10万次以上,输出INF,否则输出最多能玩几次。思路: 暴力枚举每个可以玩的点,假如可以玩无限次,且当前状态为Z(指所...
阅读全文
摘要:题意: 给出一个序列,对每两个数求异或结果后取最低位的1出来作为一个数,然后求这些数字的和。比如:{a,b,c},结果是lowbit(a^b)+lowbit(a^c)+lowbit(b^a)+lowbit(b^c)+lowbit(c^a)+lowbit(c^b)。若不剔除结果为0的,应该有n*n个...
阅读全文
摘要:题意:计算Bestcoder四题的得分。思路:直接模拟,4项分数直接计算后输出。注意不要低于百分之40的分。 1 //#include 2 #include 3 #include 4 #define LL long long 5 using namespace std; 6 const int...
阅读全文
摘要:Problem Description娜娜费劲九牛二虎之力终于把糖果吃完了(说好的吃不完呢?骗人,口亨~),于是,缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷,娜娜甚异之。复前行,欲穷其林。林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十...
阅读全文
摘要:Problem Description娜娜离开了这个王国,走向远方,在旷野上,娜娜看到了一个大时钟,上面的时针分针秒针都在缓缓转动,那只挥着翅膀的天使又出现了,天使说:“外面天已经亮了,娜娜你别睡过头哟~”,娜娜问:“我怎样才能醒过来呢?”,天使说:“只要这个钟的时针和分针重合,你就可以进入时光隧道...
阅读全文
摘要:Problem Description娜娜好不容易才回忆起自己是娜娜而不是什么Alice,也回忆起了自己要继续探索这个世界的目标,便偷偷溜出皇宫。娜娜发现这个王国有很多个民族组成,每个民族都有自己的方言,更要命的是这些方面差别还很远,这就导致这个王国的人民交流十分困难。娜娜仔细观察并记录了好久,发现...
阅读全文
摘要:Problem Description娜娜觉得钢琴很无趣了,就抛弃了钢琴,继续往前走,前面是一片湖,娜娜想到湖的对岸,可惜娜娜找了好久都没找到小桥和小船,娜娜也发现自己不是神仙,不能像八仙过海一样。正当娜娜发愁的时候,娜娜发现湖上面有一些石头!娜娜灵机一动,发现可以沿着石头跳吖跳吖,这样一直跳下去,...
阅读全文
摘要:题意:给一个数字序列,要求再其中找到两个数,其和再模p的结果是最大的,求此和。思路:先将输入的元素模p,排序。结果可能有两种情况:(1)a+b大于p:肯定由两个最大的数之和来产生。(2)a+b小于p:设b为最大且a+b小于p,那么结果在这两个数的位置之间产生。用两个指针找出来,再与(1)中的ans比...
阅读全文
摘要:题意:设有两个串A和B,现将B反转,再用插入的形式合成一个串。如:A:abc B:efg;反转B先,变gfe;作插入,agbfce。现在给出一个串,要求还原出A和B。思路:扫一遍O(n),串A在扫的时候直接输出,串2在扫的时候反向存储,再输出。 1 #include 2 #include 3 ...
阅读全文
摘要:题意: 给出一个数字n,假设火车从1~n的顺序分别进站,求有多少种出站序列。思路: 卡特兰数的经典例子。n 2 using namespace std; 3 const int N=101; 4 vector vect; 5 void _mult(string num1, string num...
阅读全文
摘要:题意:给出一组含m个点的无向图,再给出n个点,这n个点分别以一条边连接到这个无向图中的某个点。对于每个询问,求出3点连通的最小代价。有可能3个点是不能互通的。如图,最小代价就是红色的边的权之和。思路:先对m个点的无向图进行求两两之间最短路径,用floyd。接下来对于每个询问,穷举m个点,求3个点分别...
阅读全文
摘要:题意: 给一个序列,找出两个数字a和b(可以相等但不可相同),要求(a+b)%p的结果最大。思路: 先将所有元素模p,再排序。要找出a和b,分两种情况,a+b>p和a+b 2 #include 3 #include 4 #include 5 #include 6 #include 7 ...
阅读全文
摘要:7.1.1 Linux管道的实现机制 在Linux中,管道是一种使用非常频繁的通信机制。从本质上说,管道也是一种文件,但它又和一般的文件有所不同,管道可以克服使用文件进行通信的两个问题,具体表现为: 限制管道的大小。实际上,管道是一个固定大小的缓冲区。在Linux中,该缓冲区的大小为1页,即4K字节
阅读全文
摘要:转自http://www.2cto.com/os/201409/339460.html 同步内核缓冲区 1.缓冲区简介 人生三大错觉之一:在调用函数write()时,我们认为该函数一旦返回,数据便已经写到了文件中.但是这种概念只是宏观上的.实际上,操作系统实现某些 文件I/O时(如磁盘文件),为了保
阅读全文
摘要:题意: 给出两个串,串中的数字i 代表编号为i的火车进入车站的顺序,车站如桟一样,先进后出。第二个串是火车出站的顺序,问若按照第一个串那样进站,是否有可能如第二个串一样的出站顺序?火车顶多9辆,即1~9。思路: 用桟模拟,每进入一辆火车就加到桟顶,判断第二个串中开头是否是此车,若是,两者都删掉,...
阅读全文
摘要:题意:给出4个数字a,b,c,d,求出满足算式a*x1^2+b*x2^2+c*x3^2+d*x4^2=0的 (x1,x2,x3,x4) 的组合数。x的范围[-100,100],四个数字的范围[-50,50] ,不能为0。思路:对于每套给出的a,b,c,d四个数字,如果纯暴力的话要穷举100*100*...
阅读全文
摘要:题意: 打字游戏,求所按的最少次数。给出一个串,其中有大小写,大写需要按下cap键切换到大写,或者在小写状态下按shift+键,这样算两次,打小写时则相反。注意:在打完所有字后,如果cap键是开着的,要关它,也就是要算多一次。思路: DP,根据每个字符打完后cap键盘是开着的还是关着的,最后dp...
阅读全文
摘要:题意: 给出一堆单词,如果有一个单词可以分成左右串两个单词,并且在所给的一堆单词中存在,就是hat词,统计所有这样的词,并按字典序输出。思路: 注意定义,一个hat词可以被两部分已经存在的词组成,那么也可以是由两个相同的词组成,比如{abcabc,abc} 这样的abcabc也是满足条件的。解法...
阅读全文
摘要:题意: 有一座电梯,其中楼层从1~n,每层都有一个数字k,当处于某一层时,只能往上走k层,或者下走k层。楼主在a层,问是否能到达第b层?思路: 在起点时只能往上走和往下走两个选择,之后的每层都是这样,那么就类似于二叉树。每个节点就是对应的层,因为有可能碰到循环的层,比如1跳到3,3跳回1,这样使...
阅读全文
摘要:题意: 在一个序列中找到一个连续的子序列,返回其开始位置。思路: 每个数字当成1个字符,长的序列是原串,短的序列是模式串,求next数组后进行匹配。 1 #include 2 #include 3 #include 4 using namespace std; 5 const int N=...
阅读全文
摘要:题意:给出一个带有n*m个格子的矩阵,部分格子中有靶子target,现在要从一个没有靶子的格子中射出飞刀数把,飞刀是可穿透靶子的,同一直线上都可以一刀全射掉。现在问在哪个格子射出飞刀,可以在全部射中的情况下用刀次数最少?有target的格子不可选。思路:穷举所有没有靶子的格子,计算每个靶子的角度,若...
阅读全文
摘要:题意: 给定一个拓扑图,其中部分结点含有1个病毒,每个结点只要收到病毒就会立即往出边所能到达的点传播,病毒数可叠加,求所有结点的病毒数总和。思路: 根据拓扑的特点,每个入度为0的点肯定不会再被传播病毒,而且会将自己的所有病毒向与其相连的结点传播。那么可以从入度味为0的点着手,逐个删除入度为0的结...
阅读全文
摘要:G++261ms13MB题意: 给出n门课程的修读所需要的前置课程的关系,按理说应该是个拓扑图,但是因为某些原因导致了混乱,所以有可能不是一个拓扑图。现在的问题是,判断该图是否为一个拓扑图(即无环图)。思路: 每次删除全部入度为0的结点,一直删下去肯定是没有任何点存在的,如果不是拓扑图的话就必有...
阅读全文

浙公网安备 33010602011771号