自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

李へいてい

This innocence is brilliant.

  • 博客(52)
  • 收藏
  • 关注

转载 ubuntu中查看各种设备和资源的命令汇总

转自这里:http://washion2008.blog.163.com/blog/static/144227201001193149528/一、系统信息    1.查看内核信息:                                           $uname -a    2.查看操作系统版本:

2012-03-29 19:59:00 9207 1

原创 dead beef

<br />缓冲区溢出的实验终于做好了。。。。 <br /> <br /> 用gcc编译的exe文件调试时最后总是会出现栈溢出错误(尽管处理了gs:0x14的验证),表示gcc很强大。所以最后还是在vc6.0++里完成的。<br />vc6.0里只是多了个__chkesp函数,它是用来在函数返回前测试他的栈指针是不是在正确的位置的。在这个实验中感觉没什么用—_—。 <br /> <br /> <br /> <br />最后回忆下栈帧的组成:<br /> <br />---------------------

2011-04-26 00:25:00 1203

原创 POJ 3076 16×16数独

<br />我把代码改得更具通用性了, 你可以试试把XSIZE改成5,那么就是25×25的数独了(阴笑。。。)<br /> <br />#include <cstdio> const int XSIZE = 4;const int SIZE = XSIZE * XSIZE;const int WIDTH = 4 * SIZE * SIZE;const int HEIGHT = SIZE * SIZE * SIZE;const int MAXN = WIDTH + 4 * HEIGHT

2011-04-22 21:26:00 2147

原创 用dance linking 解数独

<br />很强大,比一般的回溯法快了很多。ZOJ 2580的瞬间解出。调试的时候把注释都去掉了—_—<br /> <br />明天试试POJ的那个16×16的数独看....(那个还能被称为数独么—_—)<br /> <br />#include <cstdio> #define MAXW 324 #define MAXN 3240 #define INF 800 #define ROW 81#define COL 162#define BLOCK 243int C[

2011-04-21 23:26:00 791

原创 配置notepad++

<br />看到别人的代码编辑器都配置得很漂亮,无奈自己找不到具体的配置方案。 <br /> <br />今天无意中发现notepad++还可以更换主题, 于是乎我的希望就来了~~~~<br /> <br />首先是这个网站<br /> <br />http://www.lfyzjck.com/2010-03-14/308.html<br /> <br />下载并转化好主题后,就能用啦。但是感觉跟<br /> <br />http://wiki.macromates.com/Themes/UserSubmi

2011-04-14 20:10:00 672

原创 ZOJ - 3324 Machine

线段树还真是纠结了我好几天。由于几乎0基础,所以先研究别人AC的代码。链接如下:http://hi.baidu.com/forverlin1204/blog/item/5b0b533110d9d595a8018e5b.html开始不懂:为什么一个区间的高度不是0,就直接不去判断它的子区间中是否有满足题意的连续块了。后来才发现原来是题意理解错了,一个push对应一个release。所以如果父区间的height不为0的话,子区间的height就不可能为0。最后自己跌跌撞撞得写好了代码, 发现提交WA。对比那AC

2011-04-13 23:34:00 1209 3

转载 集中注意力的方法(转)

<br />在正常情况下,注意力使我们的心理活动朝向某一事物,有选择地接受某些信息,而抑制其它活动和其它信息,并集中全部的心理能量用于所指向的事物。因而,良好的注意力会提高我们工作与学习的效率。注意力障碍,主要表现为无法将心理活动指向某一具体事物,或无法将全部精力集中到这一事物上来,同时无法抑制对无关事物的注意。造成这种情况的原因比较复杂,许多较严重的心理障碍都可以引起注意力障碍。而对于学生来说,主要是由于学习负担重,心理压力过大,而造成高度的紧张和焦虑,从而导致了注意力无法集中的障碍。另外,睡眠不足,大脑

2011-04-12 23:09:00 968

原创 ZOJ - 3212 K-Nice

浙大省赛时总会出些类似的题目, 想到了很容易写出来。想不出了就。。。be careful ! 输出可能会给我们些提示。#include int main(int argc, char* argv[]){ int T, n, m, k, i, j; scanf("%d", &T); while(T--) { scanf("%d%d%d", &n, &m, &k); { k = (n-2)*(m-2) - k; for(i = 1; i 0) { pri

2011-04-11 18:32:00 1208

原创 ZOJ - 3209 Treasure Map

Dance Linking很早就想写下Dance Linking了。那个时候用一般的搜索方法解了数独。之后在网上看到说能用 Knuth 发明的 Dance Linking 高效地解决。所以找了一些资料来看(当然也包括momodi的《Dancing Links 在搜索中的应用》)。最后看懂了,但是不知道怎么构造这个十字链表 T_T 。后来不知怎么地就不了了之了。 现在重新来看还是很容易就看懂了,不过构造十字链表还是有点困难。现在比起以前网上关于dance Linking的资料多了。遂,寻一参考之。^_^链接如

2011-04-11 18:10:00 787

原创 ZOJ - 3203 Light Bulb

<br />这里加了点人工的分析,写出这个判断的流程。 为了避免比较时的浮点数误差,我都改成乘的了。<br />不过我试了下,这里不用这样也是没问题的。但是我还是觉得这样会好些。<br /> <br /> <br />影子的公式,我是根据两对全等三角形得出的。数学太差了。。 看不懂javaman的解题报告上说的 “<br />  设影子打到墙上长为L,则有<br />(D-x)*H+L*x=h*D  (这个式子就是定比分点)”<br /> <br />#include <cstdio>#include

2011-04-11 10:14:00 847

原创 ZOJ - 2976 Light Bulbs

<br />得密切注意题目的规模,  不承诺放弃一切暴力手段!<br /> <br />#include <cstdio>#include <cmath>struct bulb { int x, y, z, I;};bulb bb[101];double dist(int x, int y, bulb& b) { return sqrt((double)(b.x-x)*(b.x-x)+(double)(b.y-y)*(b.y-y)+(double)b.z*b.z);}in

2011-04-10 22:06:00 938

原创 ZOJ - 3179 Calculate With Abacus

简单题, 不过蛮有意思的,所以贴出来下。  算盘是小时候的事了~~~#include #include int main(int argc, char* argv[]){ int T, x, y, a, i, j, cnt; char c; scanf("%d", &T); getchar(); while(T--) { cnt = 0; scanf("%d%d", &x, &y); getchar(); a = (x+y)*(y-x+1)/2;

2011-04-10 21:14:00 847

原创 ZOJ - 3175 Number of Containers

<br />不知道怎么写: 这么大的数据量线性肯定不行的。<br />这是我参考的链接:http://hi.baidu.com/auhsr2346/blog/item/e35b5c8cdff76e1ab31bba86.html<br />这题感觉很有意思,mark一下。 <br />这题其实就是求 n(1+1/2+1/3+...+1/n) - n 等于多少。这里的求值跟一般不一样的是:n/2等于结果的整数部分(如5/2 = 2,而不等于2.5)。<br /> <br />有趣的是<br />欧拉在1734年

2011-04-10 21:12:00 1131

原创 ZOJ - 3180 Number Game

开始的第一想法:难道是搜索题?但是感觉数据比较大,会爆。后来没想法了,偷偷瞄了解题报告几眼。说是要倒推,而且每一状态都是满足 其中两个的和等于其中一个数加上1。于是, 有思路了: 那个比其他两个数的和小1的数肯定是最大的。所以擦掉的肯定是这个数所在的位置。而擦掉之前的那个状态肯定又是满足“其中两个的和等于其中一个数加上1”这个状态的。所以这样就可以一直递推下去。为了方便我们可以给每次的状态排序。这样最大的就固定在第三位了。还有一点还要注意的是,初始状态不一定满足这个状态。所以我们要先从初始状态构造出它出发的

2011-04-10 19:07:00 1109

原创 ZOJ - 3176 Rounding or Truncation

<br />给你一些数据,让你判断数据小数点后面的方式是什么。<br /> <br />大致说一下思路:对于每组数据,和一种给定的舍入方式(舍弃或者进位)。我们可以求出相应满足该方式的文件数量的数据范围。然后如果这组的所有数组范围有交集的话,那么说明他可能是按这种方式舍入的。<br /> <br /> <br />#include <cstdio>#define min(a,b) (a < b ? a : b)#define max(a, b) (a > b ? a : b)#define IN

2011-04-10 12:25:00 1073

原创 ZOJ - 3204 Connect them

<br />赤裸裸的最小生成树。只是要求输出字典序最小的连接方案。所以在边的排序时要注意了,有可能存在边的权值是相同的边。所以在这种情况下,要按他们的顶点序列排序。直接把STL搬上了,很好很强大。<br /> <br />#include <cstdio>#include <vector>#include <algorithm>#define MAXN 10010using namespace std;int v[MAXN], u[MAXN], w[MAXN], r[MAXN], par

2011-04-10 12:02:00 859

原创 ZOJ - 2975 Kinds of Fuwas

<br />暴力也是得暴准方向的。  之前我那愚蠢的想法就不说了。<br />另外说一句,复杂度分析还是十分精准的。所有的乘起来,10^9左右的,1秒的时限是决定没问题的。还有对于循环,总规模就等于每层的规模乘起来,不要期望内层一些判断能帮你减小规模。将侥幸心理扼杀在摇篮里。<br /> <br /> <br />#include <cstdio>#define MAXN 250char g[MAXN+10][MAXN+10];int r[256];int cal() { int t,

2011-04-10 11:56:00 966

原创 ZOJ - 2974 Just Pour the Water

<br />表示十分无语,本想写个矩阵类的。同时重载它的乘法运算之类的。但总是异常退出,把类里的矩阵开小了后就没问题了。不知道为什么!! 我只开了double[22][22]大小的数组啊 T_T<br /> <br />最后还是算了, 直接写吧。 只是代码可重用性不怎么好。<br /> <br /> <br />这里在说下这个矩阵的构造:c[i][j] 表示i杯子向j杯子倒入自己原先c[i][j]分之一的水。<br /> <br /> <br />#include <cstdio>#include <a

2011-04-10 11:43:00 1271

原创 ZOJ - 2972 Hurdles of 110m

<br /> 背包问题的变形~~<br />想法很直观,但是我WA了很多次。但是一改状态表示就立马A了。其实不是状态表示的问题,而是在递推的时候出现了问题。由此我得出状态表示的选择也是有学问的。所以就写了那篇 《动态规划思考》 啦~~~<br /> <br />先贴上感觉最简洁直观的代码:(状态表示为跨完前i个栏后,剩余的力量)<br /> <br />#include <cstdio>#include <algorithm>#define MAXN 110#define min(a, b) (

2011-04-09 18:54:00 1071

原创 ZOJ - 3211 Dream City

<br />这个其实是个背包问题,把日期看成背包的容量。然后n棵树当成n个物品。<br />只是在开gao之前要先预处理一下。<br />假设我们取得由某m棵树组成的最优解。如果先砍的树的b值比后砍的树的b值大,那么我们总能交换这两树砍的顺序而得到更多的钱。所以我们按增加钱币量b值升序将n棵树排序。之后就能gao出来了。<br /> <br /> <br />(看来对于物品放置的顺序是随意的 & 物品的value会变的背包总会蕴含那么些贪心性质的东西)^_^<br />#include <cstdio>

2011-04-08 23:59:00 1307 3

原创 动态规划的一些思考

一、初始化问题如何初始化? 这个问题,其实就等同于:该对哪些子问题进行适当的标记。拿01背包问题来说。如果状态表示为将前i个物品放进容量为j的背包中。①如果要求出背包装满情况下的最大值的话,那么在其最终的子问题中,只有将0个物品装到容量为0的背包中是可以供原问题是用的(如果可以将0个物体装到容量不为0的空间中的话,那这块空间就空了,不合题意)。为了避免依赖于这些我们认为不合法状态的解进入最终最优解的备选集合。我们将这些不合法的状态赋一个值,使依赖这个状态的解肯定不会被我们选中为最优解即可。通常的手段有:如果

2011-04-08 16:05:00 599

原创 ZOJ - 2971 Give Me the Number 模拟

好吧,首先申明我略微写繁琐了。其实只要先取输入的一行。然后只用从头到尾检查输入即可。我是把这个输入行拆成3部分,然后分别处理。#include #include #include #include #include using namespace std;map mm;char tmp[100];int pro(string s) { int x = 0; string t; istringstream i(s); if(s.find("hundred") !

2011-04-08 10:40:00 549

原创 ZOJ 2966 Build The Electric System MST

题意抽象一下:初始:一个图中有几个连通分支 。你可以连通任意两个点。求在满足使这个图成为连通图的前提下,使你所连的两点间的边的sum(权值)最小。解题思路:这个很容易让人想到Kruskal算法中,构造到一半的MST。把以有的连通分支各缩为一个点,接下来我们只用继续完成这颗树就好啦。#include #include #define MAXN 125000using namespace std;int u[MAXN], v[MAXN], w[MAXN], r[MAXN], par[MAXN];

2011-04-08 10:27:00 949

原创 遇到的数学公式摘记(持续更新)

表示我数学不好,总结的公式可能在你们看来太水了。请别拍砖,我当做笔记了。^_^一、等差数列求前n项和公式:Sn=(a1+an)n/2 Sn=n*a1+n(n-1)d/2二、等比数列求前n项和公式:Sn=a1(1-q^n)/(1-q) 三、数列:1,3,6,10,15,21,28……(1)第n项公式的推导:方法①:a1=1a2=3=1+2a3=6=1+2+3a4=10=1+2+3+4a5=15=1+2+3+4+5a6=21=1+2+3+4+5+6a7=28=1+2+3+4+5+6+7…………………………………

2011-04-08 10:18:00 671

原创 XTU - 1095 连续自然数之和

又是湘潭大学的,这里贴上来的几题都是昨天湘潭大学新生赛得题目,昨天做完后发现自己智商有问题。于是今天再检验一下,发现还是没问题的。不过中午没睡觉发现影响还是挺大的。根据公式:(a1+an)*n/2 = x 所以我们很容易会枚举a1,然后往后找,如果发现比x还要大的话就枚举a1的另一个位置。这样复杂度还是O(N^2)的。虽然到后面a1和an之间的间隔会变小,但是这题出得比较严格。我用下面O(sqrt(n))复杂度的算法,还是用了600多毫秒。现在说说下面这个代码:a1n+n(n-1)d/2 = x。注意到n^

2011-04-05 23:51:00 659

原创 XTU - 1097 SBB的烦恼

http://202.197.224.59/OnlineJudge2/index.php/Problem/read/id/1097首先可以看出函数是关于y=x对称的。接下。。没了。表示公式不懂,还是打表出来看看。发现很是有规律,1,3,6,10...熟悉吧?隐约记得我初中的时候好像都是被这类的题目虐的。。。。于是就不怕它的输入规模了~~~~ ^_^#include int main() { int T, a, b, cnt, t,pre, tail; scanf("%d", &T); wh

2011-04-05 23:37:00 714

原创 求极大和极小值

好好回味了下,高数求导什么的。表示我的数学很一般— —不知道是不是那题的测试数据有问题,据说比赛时是有问题的。我是比赛后一天才交的,判的是WA。我抱着无比侥幸的心理相信它的数据还是错的。所以就贴上来了,如果有谁发现错误了,请指出来。啊力噶都够杂役马斯~~下面是题目的链接代码: http://202.197.224.59/OnlineJudge2/index.php/Problem/index/p/6/#include #include #define MIN(a, b) (a b ? a : b)

2011-04-05 23:24:00 1122 2

原创 UESTC - 1429 Easy Calculation

 先给出题目:                                                                              Easy Calculation Time Limit: 1000 ms Memory Limit: 65536 kBSolved: 27 Tried: 519 DescriptionKO is a Taobao engineer at infrastructure team. He likes thinking, especially a

2011-04-05 23:18:00 636

原创 ZOJ - 3480 Duck Typing 模拟

代码很清晰的说。 比赛那天对string不够熟,而且关系表示时想歪了 = =` 。其实把map看成二维数组就OK了, 当然map更强大。我先找着网上一个程序打一遍,然后自己在实现一遍。(它用的都是MAP, 我把集合表示这块改SET了)。学到了不少的知识, 下面汇总一下:(下面的string表示string类)string.erase(int i) 删除从i开始到最后的子字符串string.erase(string::iterator it) 在删除中删除it指针所指的字符(it 其实就是char* 类型,即

2011-04-05 23:05:00 886 2

原创 ZOJ - 3485 Identification Number 暴力解

我纯暴力了, 没有任何的减枝。。。。代码写得有点乱,  最后还是对拍出来了:我天真以为月份是偶数的就是小月,奇的就是大月 = =#include #include int s[19] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1};int d[13] = {0, 31, 30, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};char num[24], ans[16], last;

2011-04-04 20:18:00 1009

原创 HDU 1199

离散化原来就是指把每个线段单独提取出来,放到数组里。这样就不用考虑到它覆盖的范围了。我用的是线段切割。。 做得还算顺利。 还可以用线段树做的~~#include #include using namespace std;char op[3];struct Interval { int start, end; bool operator

2011-04-02 23:13:00 1932

原创 祭奠 HDU 1255

事先声明:这题没过。。。 那为什么还要发出来呢?? 答曰:为了纪念我死去的HDU1255。TLE了。我用的矩形切割来做这题, 看来我今天割出瘾了。—_—这样做的话,矩阵其实会越割越多,超时也在所难免了~~~这题让我发现了原先提交的POJ1151的代码是错的,在此再次感慨下,那数据真叫那个弱啊。。正解好像是线段树,不过不会是二维的吧。。。 以后慢慢做了。#include #include #include using namespace std;struct Rectangle { dou

2011-04-02 23:05:00 582

原创 POJ 1151 统计矩阵的并面积

很快就AC了,后来才发现是POJ数据太弱。(真的是太弱了,表示无奈)多处错误都能跑的讲。╮(╯▽╰)╭,原来我还是那么菜—_—参考的薛矛的“算法合集之《剖析线段树与矩形切割》”,只怪没好好看,害的另一道题调了好久,等下发出来说下。T_T#include #include #include using namespace std;struct Rectangle { double x1, y1, x2, y2; bool operator

2011-04-02 22:55:00 571

原创 ZOJ 3077 记忆化动态规划

<br />记忆化搜索是什么?很熟悉的名字~~<br />如果是指动态规划的记忆化方法的话就感觉很不合适了,那哪是搜索啊 —_—<br /> <br />这题其实很水,昨天早上写好,但是到昨天晚上了还没交掉。<br />一直WA,把标程都哪来对拍了,排得我的电脑都烂了,还是没拍出错误来。<br />(对拍也是很烦的事情,因为要生成测试数据,这个一般情况下都不好生成啊~~)<br />晚上睡觉前一看,发现浮点数输出直接“#什么NAN”了。一看初始化,竟然用memset给double类型的赋值了。—_—<br

2011-04-01 21:13:00 634

原创 ZOJ 2864 多条最短路径

好吧, 终于可以缓解下这两天的想砍人的情绪了。开始错了之后就跟别人讨论——以为是数据变态(后来某某学长的一句话更是令我们崩溃):这个小偷能 瞬间移动 or 让时光倒流....(有点科幻了)。纠结了半天发先不是这个问题,因为标程都跑不出这些数据来。最后发现是没加代码中的“红色部分”了(去掉这个,pcnt数组就乱了,除了起点之外,各个点的pcnt都会在求最短路径里被初始化):        我喜欢偷懒,喜欢用一些隐含的条件。比如初始化啦,还有这个函数递归边界啦,能不指出就不指出。好了,于是乎。。各种悲剧。#in

2011-04-01 20:55:00 2000 2

原创 小杂记

<br />看来我骨子里还个不甘寂寞的人呐~~之前由于csdn发表不了文章,老出现问题。就转到了订阅了邮件的51CTO上面(因为那邮件给我的感觉还是蛮不错的)。在那边开了没几天,发表了没几篇文章。看访问量都是0的,而且我从周围发觉不到潜在的观众。算了,我又回来啦。剩下的时间要加油了! 甘巴得!

2011-03-30 23:35:00 486

原创 ZOJ - 3471 Most Powerful

<br /> <br />原来这名叫 mask dp ~~~<br /><br />递推思想:<br />要求求出所有的atom碰撞所产生的能量的最大和。<br />设总的集合为S,假设最优解的第一次碰撞少一个原子X。那么我们必须保证剩下的<br />S-{X}所产生的能量是最大的。<br />由于满足最优子结构,可以从一个小的子集开始,一直递推到最大的集合。<br /> <br />#include <cstdio>#include <algorithm>#define max(a, b) (a

2011-03-30 23:20:00 565

原创 ZOJ - 3468 Dice War

<br />难得的1A,泪流满面。<br />由于规模小,直接brute force。简单,粗暴。<br /> <br /> <br /> <br />#include <cstdio>#include <cmath> int g[9][50];double gg[9][50]; int main(int argc, char* argv[]){ int att, def; for(int i = 1; i <= 6; i++) { for(int j = 1; j

2011-03-30 23:06:00 677

原创 ZOJ - 3467 3D Knight Moves

<br /> <br />一、题目略<br />二、解题思路简介(参考http://watashi.ws/blog/1877/zojmonthly1102/):<br />由于一次移动可以有48个选择,如果移动6次的话48^6就......<br />所以正向bfs三层,反向bfs3层。<br />麻烦的是要记录路径而且还要是字典序的 -_- 。<br />参考代码中是用map对每一个点保存一条路径,我完全模仿了....<br />三、代码<br />下面的代码几乎就是参考代码:<br />不过是我边想,边

2011-03-30 22:57:00 1025

原创 栈溢出测试

<br />好奇之下,做了下栈溢出测试。<br /> <br />#include <stdio.h>void dfs(int cnt) {int i, j, ans;printf("%d ", cnt);dfs(cnt+1);}int main(int argc, char* argv[]){ dfs(1);return 0;} <br /> <br />在我的电脑上,输出的最后一个数字是10345。<br />所以对于这样规模的递归得小心了。

2011-03-30 22:40:00 643

空空如也

空空如也

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

TA关注的人

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