自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 我的新博客地址

www.ay27.pw

2013-09-26 20:58:11 462

原创 王爽《汇编语言》实验8

实验8是要求阅读一个很奇葩的代码:assume cs:codecode segment mov ax, 4c00h int 21h start: mov ax, 0s: nop nop       ;下面这段代码主要是把s2的内容复制到s处 mov di, offset s mov si, offset s2 mov ax, cs:[si]

2013-04-26 19:55:47 932

原创 王爽《汇编语言》实验7

因为实验7中的数据太多,我就对其缩减了一些。 因为其中用到很多的寄存器,但是每个寄存器都有限制规则,所以要精心分配寄存器。最先分配的是两个段寄存器,data用ds存放, table用es存放。然后要确定循环使用的寄存器cx;然后要精心分配指向table和data地址的寄存器,由于能够指向地址的寄存器只有bx, si di, bp,选其中三个进行地址的指定,我的选择是:     

2013-04-26 19:55:45 586

原创 用汇编进行大小写转换

最近学习了一下8086的16位汇编语言,学习了一种比较奇葩的进行字母大小写转换的方法。不必用CMP语句进行判断,一步到位。当然前提要求是输入的数据必须是字母哈。把字母的ASCII码用二进制查看:大写        16进制        二进制                                             小写            16进制         

2013-04-26 19:55:43 1358

原创 CRC循环冗余校验码的生成

众所周知,不可能有永远都不会出错的人,同样也不可能有永远不出错的计算机,永远不出错的数据。   人有知错能改的觉悟,计算机也有,不过计算机没有人类聪明,只能通过一个特定的方法进行自我改正,这就是校验码存在的必要了。   一般用得比较多的校验码有奇偶校验码,CRC循环冗余校验码,海明校验码等。   这里只介绍用的最多的CRC循环冗余校验码。   何为校验码   校验码是通过一种计算方法,

2013-04-26 19:55:38 1255 2

原创 学会调试

调试的重要性不必多说。 这里以Microsoft Visual Studio 2012为例,其他的IDE调试方法类似,具体以IDE为准。 这是Visual Studio 2012的下载地址: http://download.microsoft.com/download/B/0/F/B0F589ED-F1B7-478C-849A-02C8395D0995/VS2012_ULT_chs.iso

2013-04-26 19:55:36 428

原创 POJ-1860

来源:http://poj.org/problem?id=1860   题目的大意,就是要通过多次交易,使得回到开始节点时的钱数增加。 类似于寻找负权回路,但是这里要走回到开始节点。 而对于负权回路,可以用bell-manford或者SPFA,这里用了SPFA。 在SPFA时,当开始节点的钱数>原始钱数,我们就可以退出SPFA,直接输出了。 对于原始的SPFA,这里的relax操作要改

2013-04-26 19:55:34 397

原创 USACO-Spinning Wheels

来源:http://ace.delos.com/usacoprob2?a=ahwL0nwmf1s&S=spin     暴力,水水的过了。 耗时估计是:360*360*n,n为总的缺口数。 由于n越大,缺口数越多,通光的几率越大,故根本不必在意时间的消耗。   #include #include #include using namespace std;st

2013-04-26 19:55:31 363

原创 USACO-Factorials

来源:http://ace.delos.com/usacoprob2?a=5LTgWx8eTT9&S=fact4   这题有什么好说的呢?不必麻烦的数学证明,不必高精度。 每次阶乘时把最后的0去掉,并且只需保存两三位数就够了,这样就不用担心只保存一位时相乘后只剩下0的情况。   /*ID:ay27272PROG:fact4LANG:C++*/#include

2013-04-26 19:55:29 387

原创 USACO-Stamps

来源:http://ace.delos.com/usacoprob2?a=5LTgWx8eTT9&S=stamps   一个简单的DP题。 F[i] = min(F[i], F[i-value[j]]+1) F[i]表示凑出i所需的最少钱的张数,若F[i]>n,自然就不能用n张钱凑出i来了。 最后的结果就是i的最大值了。   /*ID:ay27272PROG:stamp

2013-04-26 19:55:27 373

原创 USACO-Contact

来源:http://ace.delos.com/usacoprob2?a=5LTgWx8eTT9&S=contact   这题的想法是,把01串转换成二进制,用hash表存储。 为了区分0和00等类似的情况,将所有的子串的高位加个1,例如: 0就用10来存储,00用100存储。 hash表统计子串个数,然后排序输出就是了。 不过如果用string存储输出的数据,直接输出string,总

2013-04-26 19:55:25 441

原创 POJ-1008

来源:http://poj.org/problem?id=1008这题没什么的,先算出总的天数,再算出另一种日历的表示就是了,没什么技巧可言。需要注意的是一个特殊的数据:4. uayet 259 ,应输出13 ahau 364基本上样例过了,再把上面的特殊数据过了就行了。 #include #include #include string>#include

2013-04-26 19:55:22 378

原创 POJ-1007

哎,这是手贱了,用java写一点都不爽,可能是我不会用java吧T_T。 这题由于数据范围小,水水就过了。 import java.util.*;public class Main { public static void main(String[] args) { Astruct[] s = new Astruct[105];

2013-04-26 19:55:20 349

原创 POJ-1006

手痒了用java A了这题。 import java.util.*;public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); int count = 0; int p =

2013-04-26 19:55:18 336

原创 C和C++中的数字与字符串的转换

用过java的人都知道,java众多的方法能够非常方便的进行数字和字符串之间的转换,而C和C++就麻烦多了。 其实不然,C和 C++也是提供了方便的方法进行转换,不必手写。   1.字符串格式化函数:sscanf和sprintf(stdio.h) 函数原型: int sscanf( const char *, const char *, ...); int sscanf(const

2013-04-26 19:55:16 443

原创 POJ-1005

来源:http://poj.org/problem?id=1005 怎么POJ前面的题都那么水= = #include #include #include using namespace std;#define pi 3.1415926int main(){ int N; cin>>N; for (int Ncase=1;Nc

2013-04-26 19:55:13 338

原创 POJ-1004

来源:http://poj.org/problem?id=1004 唉,还有什么好说的,如此水题都让我等遇上了 #include using namespace std;int main(){ double sum=0.0,x; for (int i=1;i12;i++) { scanf("%lf",&x);

2013-04-26 19:55:11 373

原创 POJ-1002

来源:http://poj.org/problem?id=1002&lang=zh-CN 这题用C++的string来写真的很蛋疼,效率低不说,输入输出真的麻烦。由此看出,C++的STL效率不行,不过除非是那种特别卡时的题,一般STL还是不错的。 这是C++的代码: #include #include #include #include string>#include

2013-04-26 19:55:09 394

原创 POJ-1003

来源:http://poj.org/problem?id=1003 这题真的是意外的简单啊,看清楚了数据规模后已经没什么疑问了,水水的过了。 提交的时候还是有点忐忑啊,怎么会有这么水的题= = 我这代码居然用了196K内存,真不知道那些大神怎么可以做到0K秒杀,难道他们不使用变量= = #include using namespace std;int main(){

2013-04-26 19:55:06 398

原创 POJ-1001

来源:http://poj.org/problem?id=1001&lang=zh-CN 这题没什么算法可言,主要是各种情况的处理。 思路:先忽略小数点,算完后输出时在适当的位置输出一个小数点就行了,完全按照高精度乘单精度的方法。至于小数点的输出,因为每乘一次带小数点的数,小数位数相加就是了。 给出几种特殊情况: 25         2 25.0      2 0.1       

2013-04-26 19:55:04 562

原创 最短路

Dijkstra算法 朴素的Dijkstra算法和prim算法在代码上惊人的相似。 而Dijkstra算法的思想是:在待扩展边中取出最小边,利用此边进行松弛操作,然后更新待扩展边集。重复以上步骤直到所有结点都已访问过。 Dijkstra算法只对没有负权回路的图有效,当然对带负权边,但没有负权回路的图依然有效。 for (int i=1;i){ minn=INF;

2013-04-26 19:55:01 420

原创 MST-最小生成树

prim算法 prim算法说白了就是贪心,每一步都是取出待扩展的最小边进行扩展。 每次取出待扩展的最小边进行扩展,然后更新待扩展边集,重复以上操作直到所有点扩展完毕。 for (int i=2;i){ min=MAX; for (int j=1;j) if (f[j] && dist[j]min) min=dist[h

2013-04-26 19:54:59 357

原创 USACO-Shaping Regions

来源:http://www.nocow.cn/index.php/Translate:USACO/rect1 很明显灌水法是行不通的。 什么是灌水法?就是把每一个矩形都标记一遍,最后扫描整个大矩阵,算法的时间复杂度是O(N^2),看数据规模就知道肯定死翘翘了。 这题我选用了漂浮法,也称碰撞法。 漂浮法在nocow上是这样描述的: 漂浮法 以逆序来进行放置,即n to 1。逆序的好处在于

2013-04-26 19:54:57 396

原创 USACO-Humble Numbers

来源:http://www.nocow.cn/index.php/Translate:USACO/humble 这题看数据规模,只能用O(NlogN)算法了,而且只能逐个数生成。 如何从已经生成的丑数中生成新的丑数,并且严格按照递增规律生成,这是主要解决的问题。 很明显,把已有的丑数乘上一个质数p就得到了新的丑数,这样一个BFS的算法很容易想到,但是判重和判断是否按照严格递增的顺序生成,这个

2013-04-26 19:54:55 519

原创 USACO-Score Inflation

来源:http://www.nocow.cn/index.php?diff=next&oldid=2732&title=Inflate_translate 这是一题非常标准的完全背包问题,不会的参见DD神牛的背包九讲 /*ID:ay27272PROG:inflateLANG:C++*/#include using namespace std;#defi

2013-04-26 19:54:52 351

原创 USACO-Agri-Net

来源:http://ace.delos.com/usacoprob2?a=ecro6SKAJN4&S=agrinet 这题明显的最小生成树,说多了都侮辱我的智商了= = /*ID:ay27272PROG:agrinetLANG:C++*/#include #include #include using namespace std;#define

2013-04-26 19:54:50 377

原创 USACO-Fractions to Decimals

来源:http://ace.delos.com/usacoprob2?a=ecro6SKAJN4&S=fracdec 这题主要是处理循环节的问题。 先考虑竖式除法: 1.设被除数为A,除数为B,试除一次有:B/A=C……D 2.令B不变,被除数变成D*10,再进行试除 3.明显竖式除法是递推定义的,而出现循环节则表示被除数重复出现了,由此算法已经很明显了,不再多说。 唉,明明很简单的东

2013-04-26 19:54:48 410

原创 USACO-Cow Tours

来源:http://ace.delos.com/usacoprob2?a=ecro6SKAJN4&S=cowtour 看到题目的数据范围就知道这题应该用O(n^3)的算法做了,明显图论中Floyd算法就符合要求。 算法: 1.floyd求出任意两点的距离; 2.对于连通块A和连通块B,添加一条边e(u,v),把A和B联通,新的连通块称为C,则:           dist[C]=dis

2013-04-26 19:54:46 453

原创 USACO-Bessie Come Home

来源:http://ace.delos.com/usacoprob2?a=aazEDPQYeki&S=comehome 图论水题 主要注意下题目的条件就行了。 注意a和A可以同时出现,因为边数最大是10000,所以边必有重复给出的。 其他的没什么特别的,dijkstra模板秒杀 /*ID:ay27272PROG:comehomeLANG:C++*/#incl

2013-04-26 19:54:43 286

原创 USACO-Overfencing

来源:http://ace.delos.com/usacoprob2?a=M7C67j8aT97&S=maze1 这题构图是个麻烦。 声明一点:我的构图法不值得借鉴 我把图中的每个点编号,记录每个点与上下左右的连通性,然后用DFS搜索距离。 效率很低,而且构图时特别烦。 但是好处就是DFS很容易写,而且算法也很简单。 当然这题解法很多,DFS能行的BFS一般没问题,当然Dijkstra

2013-04-26 19:54:41 303

原创 USACO-The Tamworth Two

来源:http://ace.delos.com/usacoprob2?a=F5gG3hMiHdO&S=ttwo 这题是简单的模拟题,当然你也可以用数学的方法做,我个人推崇KISS原则。 这题的唯一亮点就是无解的判断,我敲代码也懒得想,因为递归到43000左右就爆栈了,所以我到40000时就掐断,这是我的战果: 现在,给出判断无解的方法: 1.无解则无论牛还是农夫,他们的路线都是有周期

2013-04-26 19:54:39 371

原创 USACO-Controlling Companies

来源:http://ace.delos.com/usacoprob2?a=HMnSiF441c0&S=concom 这题光看数据,很容易判断是O(n^3)的算法,很容易想到Floyed算法。 但是直接用三重循环做,基本上不能AC,可能会对很多个点,但是AC就很困难,至少我WA了6次,主要是第七个和第八个点出错,至于为什么,我也不是很懂。 但是如果把三重循环中的第三重写成递归的形式,就AC了,

2013-04-26 19:54:36 498 1

原创 UVa-11292

来源:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2267 第一题在UVa上AC的题。 题本身简单,但是UVa的数据很凶残。 提交了20来次,终于发现了点东西。 首先,UVa肯定是用了linux的系统评测,因为数组初始化了和没初始化是完全不同的,

2013-04-26 19:54:34 378

原创 USACO-Money Systems

来源:http://ace.delos.com/usacoprob2?a=pazq26JBLUl&S=money简单的背包问题把题目再描述一遍:给出V种货币面值,和需要构造的金额数N,问有多少种构造方法。1.这里涉及货币的种类和金额数两个量,所以状态的表示要有这两个量;2.设F[i][j]表示用前i种货币构造金额为j的构造方法数,则:             F[i][j]=F

2013-04-26 19:54:32 322

原创 USACO-Zero Sum

来源:http://ace.delos.com/usacoprob2?a=UGksUWcO9ZG&S=zerosum 简单的DFS,秒杀。 主要是不清楚C++中是否有函数可以直接计算表达式,所以自己写了个简单的计算函数。 搜索时按照空格,加号,减号的顺序,连排序都省了。 /*ID:ay27272PROG:zerosumLANG:C++*/#include

2013-04-26 19:54:30 352

原创 USACO-Cow Pedigrees

来源:http://ace.delos.com/usacoprob2?a=T9Gq2i9yzJN&S=nocows 题目要求的是,用N个结点能够构造多少个高为K的二叉树,要求二叉树的结点的度为0或2。 首先,我们要关注的是树的高度和结点数。再者,这题的所有结点的度都为0或2。 考虑到结点度的特殊性,如果把高为K的树的根结点删去,则生成两个高为K-1的子树T1和T2,它们的结点数和为N-1

2013-04-26 19:54:27 390

原创 C语言中的格式控制

C语言确实很强大,很自由,特别是输入输出时的格式控制,熟练这些格式控制问题,可以很方便的解决很多奇怪的问题。当然,scanf和printf两个函数也因它们的自由度和安全性而备受批评,特别是在大型程序设计中,一般是尽可能避免用这两个函数的。但是对于习惯用C和参加ACM/ICPC的人来说,这两个函数的重要性无可替代。 (sscanf和sprintf这两个函数和scanf,printf类似,但是ssc

2013-04-26 19:54:25 541 1

原创 USACO-Longest Prefix

题目来源:http://ace.delos.com/usacoprob2?a=eORCKYsuBVM&S=prefix 水水的DP,水水地过。 定义布尔数组F[],F[i]表示第i个字符的可匹配性,如果能匹配到i,则F[i]为true,否则为false,最后的结果就是f[k]为true时的最大的k。 方程:F[i]=F[i] || F[i-size[j]]   ,其中,size[j]表示第j

2013-04-26 19:54:22 306

原创 USACO-Party Lamps

题目来源:http://ace.delos.com/usacoprob2?a=eORCKYsuBVM&S=lamps 说真的,不怎么喜欢这题,主要是题意描述不好。 想了很久,终于明白,输入的亮着的灯,关着的灯,没有输入的就是未知的,状态可以随意。 这样,题目大意就是:      给出最后状态要满足的条件,然后求出从初始状态转换到最后状态过程中,所有满足要求的状态。 这么说来,就是一个简单

2013-04-26 19:54:20 386

原创 USACO-Runaround Numbers

http://ace.delos.com/usacoprob2?a=UkLvQCyPwKH&S=runround 这题给跪了。。。谁出的题?题意太模糊了。。。理解错了n次题意。。。。。 这是所谓的翻译(这个翻译还算不错): Runaround Numbers 循环数 循环数是那些不包括0 这个数字的没有重复数字的整数 (比如说, 81362) 并且同时具有一个有趣 的性质,

2013-04-26 19:54:17 366

空空如也

空空如也

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

TA关注的人

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