- 博客(26)
- 资源 (4)
- 收藏
- 关注
原创 HDU1075
复习种Trie树了最后那个句子分割的时候不好弄,其他的基本就是模板了#include #include #include using namespace std;const int CHILD_NUM = 26;const int BASE = 'a'
2011-08-09 22:08:56 844
转载 分割平面与空间公式
(1) n条直线最多分平面问题 题目大致如:n条直线,最多可以把平面分为多少个区域。 析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条
2011-07-15 14:39:26 5249
原创 hdu 3123 GCC
这个题要求(0!+1!+2!+......+n!)%m其中 n这道题我一开始SB的以为当n!后六位稳定为0的时候就对结果没有影响了,实际上那个只是对模10^k(1然后晓东说这道题应该这样由于n! = n * (n-1) * (n-2) * ....* 3 * 2 * 1 所以 n%m 在n >= m 的时候一定为0,所以最多求10^6个数的和,这个O(n)的效率可以接受。然后用一个变量维护阶乘一个变量维护和即可。(晓东的做法,实践证明比我的快)我的思路是这样的0! = 11! = 1 * 22 ! = 1
2011-03-16 20:54:00 722
原创 解决ubuntu自带DocumentViewer看中文pdf乱码问题 (转载)
<br />sudo apt-get install poppler-data
2011-02-05 18:16:00 557
原创 Ural 1353
<br />啥也不说了,丢人!<br />#include <iostream>using namespace std;int f[10][82];//f[i][j] = E(f[i-1][j-k]) (0 <= k <= j)int main(){ int s; cin >> s; if(s == 1) { cout << 10 << endl; return 0; } f[0][0] =
2010-12-08 09:51:00 506
原创 Ural 1225
<br />题意:由红白蓝按照规则形成的旗帜的种类数<br /> <br />WA点:注意longl long<br /> <br />方法:找了规律才发现,设f[i]表示i段能形成的旗帜的种类数<br /> <br />则f[i] = f[i-1] + f[i -2] ,因为,在f[i-1]后面加一种颜色(红或白)或者在f[i-1]中加上包括蓝的两种颜色即可形成f[i]<br /> <br />代码就不附了
2010-12-01 16:26:00 629
原创 Ural 1033
<br />题意:求游客进入迷宫能看到的墙的面积<br /><br />WA点:注意两个入口可能不连通,所以两边都要搜索<br /> <br />代码:<br /> <br />//============================================================================// Name : Test.cpp// Author :// Version :// Copyright : Your
2010-12-01 16:21:00 583
原创 Ural 1031
题意:在一条铁路上有N个火车站,只有三种票,求两个车站之间的最少花费方法:一开始以为是一道简单题,很NC的开了一个二位数组,很可惜,MLE了,而且中间还很SB的想到了用记忆化搜索可能比构建更快一些。。。 经过大牛们的悉心指导,原来用一维就可以搞定 转移方程为f[j] = min(f[i] + GetCost(i,j)) (start 代码: O(n^2)#include #include #include #include using namespace std;#d
2010-11-25 21:50:00 532
原创 Ural 1029
<br />题意:从大楼的一层任意一间房间开始,从大楼的的顶层任意一间房间出来。<br />方法:网上都说是双重DP,在Crash了N多次以后,终于在晓东的一组数据下A了。。这组数据的检查不仅让我发现了数组越界的原因(dp[M]写成了DP[N]..),更让我明白了什么是双重DP,我原来以为就是DP两次,现在看来与for循环嵌套一般,DP中套DP。。。<br />代码:<br /> <br />#include <iostream>using namespace std;int data[120][5
2010-11-25 15:38:00 590
原创 Ural 1018
<br />题意:一颗二叉苹果树树上结苹果,要求剪掉几棵枝,然后求保留Q根树枝能保留的最多到苹果数。<br />方法:典型的树形DP,第一次做,看不出来。。。。晓东有一种邻接表的常数优化方法以及免建树方法,但我还是觉得建树后思路更加清晰。<br /> 还是老问题,寻找状态。这次的状态是ans[i][j]表示以i为树根,j条边能采摘的最大苹果数。与此同时,因为所有的苹果都结在边上,但是我们可以将之平移到叶子方向的节点上,这样根节点root就要假设有一条虚拟边接在其上,且其苹果数为0.这样不难
2010-11-24 21:33:00 1598
原创 Ural 1081
题意:对于原有到二进制序列,规定连续两位为1的形式不合法,剩下的按字典序排列,如000合法但011不合法101合法。输入位数N和第几个数K输出其二进制形式,若无则输出-1方法:貌似以前做过类似的题,但是本题最终还是在别人到思路下A掉。。 DP关键在于找到状态转移方程,而找方程关键在于找状态。我们从限制条件开始构造
2010-11-24 13:18:00 694
原创 Ural 1017
题意:N个砖块按照严格递增到顺序建造楼梯,且楼梯阶数至少为2,求有多少种方法WA:根本就想不到状态转移方程。。。方法:这是我们戒dota生涯的第一个题目,也彻底证明了咱到DP水平是何其之低。。。刚刚拿过来到时候没有任何思路,如果只是记录i个方块对应的方法数的话,是无法由i-1推至i的,因为这样无法限定条件。后来学习了大牛们到思想,才AC了。。 最朴素的思路是n^3的,令f[i][j]表示i个砖块高度为j可形成到方法数,则可以知道 f[i][j] = Σf[i-j][k] 其中(0 代码:
2010-11-22 21:05:00 1274 1
原创 Y450调整显示器亮度
<br /> 装完ubuntu后竟然可以用fn+左右箭头条件音量大小,但是不能用fn+上下箭头条件显示器亮度。<br /> 百度半天发现这样即可。<br />不用改grub,改显示配置文件xorg.conf就行了:代码:Section "Device"<br /> Identifier "Default Device"<br /> VendorName "NVIDIA Corporation"<br /> Driver "nvidia"<
2010-11-16 00:02:00 1359
原创 poj1023
上午数据结构实验课无聊的搜了一下poj模拟题,发现此题,竟无思路,看Discuss也没看出个所以然来。就问***和****。大水给力个错误算法,上数据结构一直在想这个,竟然被提问了╮(╯_╰)╭,然后很悲剧的囧了半天,唉题意:给予ppnnp...的字符串及长度k表示的二进制系统,其中k表示共有几位,p表示此位位权为正,n表示此位位权为负。如果最右面一位位p则位权为1即2^0若为n则为-1即-2
2010-10-27 15:33:00 1589
原创 全排列生成算法小结
<br />全排列的生成方法有很多,看了网上很多文章,感觉有必要小结一下~<br />1.DFS的方法<br />以下描述引自他人:<br /> 比如可以直接DFS遍历,像走迷宫一样,从起点开始,然后从这n个点选一个走,并打上标记,然后走下一点,走下一点前,看看那个点是不是被标记了,没标记的再走。下一点要是能走的都走过了,就退上一步换另一个点,走到不能走为止。<br /> <br />单纯的文字表达有点抽象,举个例子,123的全排列,生成流程:<br />第一个数选1<br />第二个数,1已选走,跳过<b
2010-10-20 08:53:00 846
原创 poj2826
<br />题意:平面上两条线段,问能接住多少雨水<br />方法:首先看两条线段能否相交,不相交肯定为0。<br /> 如果相交,求得交点后判断4个端点中是否存在两个点其纵坐标大于交点坐标,如果不存在,肯定为0<br /> 如果存在,判断高板是否将低板遮挡,过高于纵坐标的两个端点中较低的那个(p1)做垂线,如果交点存在且纵坐标大于p1纵坐标,<br /> 则被遮挡,为0。否则过p1做一条水平线与另一条线段相交得交点p3则面积就是 fabs(cross(p,p
2010-10-17 09:52:00 1081
原创 poj3347
<br />题意:给予n个正方形,要求45°角放置,最左边的正方形紧贴Y轴,所有的正方形的下面的端点都在X轴上。然后按照正方形不能交错但要尽可能的挨着的原则,摆放,最后输出从上往下看能看到的正方形的编号。<br />方法:看了各种Discuss和解题报告,发现有个人的思路很不错,但他是将坐标纸缩小√2,这样并不能避免小数,其实扩大√2倍就能避免小数了。办法是,每新增一个正方形,就让他与左侧的每一个正方形贴紧,求的其左端坐标,最终结果一定是最大的那个。然后求的相应的最右端坐标。这样就转化为了线段,最后用朴素的
2010-10-16 22:18:00 1359
原创 poj1696
<br />题意:寻找逆时针螺旋线最多能连几个点,典型的贪心,每次都连最外面的点即可。<br />方法:每次找到一个当前点curp,除了第一次是对数组按纵坐标排序得出外,剩下的均按极角排序。效率为O(v2)<br />WA点:sqrt函数如果传int参数,在oj上会CE<br />代码:<br />#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <cmath>using
2010-10-16 00:08:00 1482 1
原创 poj1410
<br />题意,判断线段是否和矩形相交<br />WA点:线段在矩形内也算相交,另外,矩形只给对角线点,但不一定哪个,注意另外两个点的求法是<br />p3.x = p2.x;p3.y = p1.y;p4.x = p1.x;p4.y = p2.y;<br />我的方法是判断线段是否和四边相交,如不,继续判断线段是否在矩形内。<br /> <br />代码:<br />#include <iostream>#include <cstring>#include <algorithm>#
2010-10-15 19:05:00 901
原创 poj1066
<br />题意:一个正方形围墙内有一些交错的内墙,内墙的端点都在正方形上,在正方形内部有一个点,求从正方形外到这个点的最少要走的门数,门只能是线段的重点<br />方法:此题本想宽搜,但是太麻烦,看了Discuss后发现此题甚妙。因为从一个点到终点不可能“绕过”围墙,只能传过去,所以门是否开在中点是无所谓的,只要求四周线段中点到终点的线段与墙的最少交点个数即可。<br /> 更进一步,实际上,只需判断四周围墙的所有点与终点的连线与内墙的最少交点加一即可<br /> <br />代码:<br
2010-10-15 00:23:00 2077
原创 poj2653
<br />题意:按顺序给出一些木棍,输出在最上面的木棍标号<br />方法:用一个链表保存最上面的木棍,每读取一根木棍就将之与链表中的木棍求交,若相交则将链表中相交的剔除,最后将新的木棍加入链表。(此题不必考虑不规范相交的情况,测试数据貌似没有)<br />WA点:开始自己写的简单的链表,老是RE,(看来基本功很差,原因在于p指向一个node,我先把p删除了才p=p->next。大概用了700-800毫秒。改用C++的标准库vector竟然只用了600+而且省代码,但是用list就1200+了<br />
2010-10-14 16:36:00 1907
原创 poj1556
题意:房间里有n堵墙,每面墙上有两扇门,求从房间最左端中点到最右端中点的最短路径心得:解析很简单,简单的计算几何+简单的最短路径WA点:计算几何代码量大,很容易出错,这道题让我恶心了好几天╮(╯_╰)╭。首先是模板敲错了好几处,有很水的,像是2敲成-2,也有因为不熟悉的,比如敲晓东的图论模板head数组中存的是点我敲成了边。然后就是存储方式没有选好,晓东的思路跟我一样,每面墙6个点存好,但是他用的是二维数组,我用的是一维模拟二维,结果最后数据对撞的时候发现,错误的原因是模拟的时候寻址公式错了╮(╯_╰)╭少
2010-10-13 21:17:00 2090
原创 poj1269
<br />题意:判断两直线相交情况,模板题<br />代码:<br />#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;struct Point{ double x,y;};const double eps = 1E-6;int sig(double d){ return (d > eps) -
2010-10-06 21:17:00 740
原创 poj3304
<br />题意:给出n条线段,判断是否存在有一条直线,满足所有的线段在直线上投影后至少有一个公共点<br />方法:原命题等价为存在一条直线穿过所有的线段(易知过公共点且垂直于所求直线的直线符合条件,设为直线a),该命题又等价于从所有线段中任选两端点形成的直线存在可以穿过所有的线段的直线(可将a平移至一条线段端点,然后绕这点旋转,使a过另一条线段端点)<br /> <br />WA点:模板抄错,注意^的优先级比==低<br />代码:<br />#include <iostream>#include
2010-10-06 19:13:00 3777 1
原创 poj2398
<br />这道题是2318的升级版,题意参见2318解题报告,增加了两处难点,一是隔板不按顺序给出,sort一下就行了;二是输出格式有新的要求,要求输出有i个玩具的格子有几个<br />WA点:1、sort的时候sort(array,array+n,MyCmp)时只是对0~n-1个元素进行sort,而据题意该是0~n<br /> 2、这也是最2的地方,Box写成BOX,冒号后没加空格<br />代码:#include<iostream>#include<cstdio>#incl
2010-10-06 16:46:00 797
原创 poj2318
<br />计算几何的解题报告开始了!<br />这是第一道计算几何题,题目不难,但是题水人更水。<br /> <br />题意:有一个大箱子,由n个板分为n+1块,标号为0~n<br /> 已知盒子左上角和右下角的坐标及每个板上下两端的横坐标(板不会交错,且按顺序给出)<br /> 然后给出玩具的坐标,统计每块空间内玩具个数(保证玩具一定落在空间内)<br />方法:叉积+二分,判断点所在的空间<br />代码:#include <iostream>#include <
2010-10-06 09:32:00 1389
算法导论 Introduction to Algorithms, Second Edition
2009-07-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人