2014-10-23 Xie Jingyi
鉴于U盘中Sublime的配置常常莫名其妙地消失,在此将其记录一下。 Code { "cmd": ["fpc", "-S2", "${file}", "-o${file_path}/${file_base_name}.exe"], "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", "working_dir": "${file_path}", "selector": "source.pascal", "variants": [ { "name": "Run", "c 继续阅读 »
2014-09-27 Xie Jingyi
链接:Link 耗时:0.586s 昨晚做的太急了,没时间写总结,正好下午有空,补上。 这是一道典型的树形动态规划,不是很难,但十分坑语言。思路大致如下: 对于第i个节点,用d(i)表示其上诉所需的最小工人数。若i为叶节点,则d(i)=1;否则,遍历求出i的子节点所对应的d值,并由小到大排序,取出最小的几个相加,即为d(i)。 很容易想到用递归来实现。但对于“子节点的d值的排序”实现起来却十分困难:因为事先不知道有多少个数。当然啦,如果是C++组,用vector可以轻松搞定,可至于P党,实现起来却难上加难。思来想去,决定试试Pascal的动态数组。磕磕碰碰调了近1个小时,终于AC了。 Code: ```pascal // 继续阅读 »
2014-08-20 Xie Jingyi
最近在做一个项目,其中有一段判断一个Extended浮点数是否为整数的代码。我用如下方式实现: pascal function IsInt(F: Extended): Boolean; begin result := Trunc(F)-F = 0; //整数部分等于自身 end; 测试了许多样例都过了,唯独这个没过: pascal IsInt(4.000000002*1000000000); //False 调试时发现: Trunc(F)居然等于4000000001!开始以为是精度的问题,找了许多资料也没能解决。后来将Extended换成了Double,就通过了。百思不得其解中。 继续阅读 »
2014-10-01 Xie Jingyi
今天开始学习数论方面的算法。这部分在NOIP中并不常出现,即使出现了也不会像高联这么难(。。。)。 什么是扩展欧几里得算法 所谓欧几里得算法,实际上就是辗转相除法——求两个数最大公约数的一种高效算法。而扩展欧几里得算法则是来源于于一类方程的解决: $$ax+by=gcd(a,b)$$ 这有点像是裴蜀定理的一般形式。和裴蜀定理类似,这类方程也有无数多个整数解。如何高效率地求得它的一组特解呢? 代码 pascal procedure gcd_ex(a, b: longint; var d: longint; var x, y: longint); begin if b = 0 then begin 继续阅读 »
2012-09-29 Xie Jingyi
0x00 前言 早就想写一个键盘监听器了,学校的电子阅览室设了Administrator屏障,想装软件什么的很麻烦,因此想截获管理员密码。。 花了大概一个星期编写了一个,效果还不错,因此来分享一下。。 0x01 基本概念 首先解释一下什么是键盘钩子: 钩子(Hook)是Windows消息处理机制中的一个监视点,应用程序可以在这里安装一个子程序(钩子函数)以监视指定窗口某种类型的消息,所监视的窗口可以是其他进程创建的。当消息到达后,在目标窗口处理函数处理之前,钩子机制允许应用程序截获它进行处理。 SetWindowsHookEx函数可以把应用程序定义的钩子函数安装到系统中: pascal HHOOK SetWindow 继续阅读 »
2016-08-01 曹强
语法 区分大小写、变量弱类型、行尾分号可有可无、注释为双斜线、括号表明代码块 变量 变量用var声明,变量的命名规则:第一个字符必须是字母、下划线或美元符号;余下的字符可以是下划线、美元符号或任何字母或数字字符。 变量命名规范: Camel标记法:首字母小写,接下来的单词都以大写字母开头。例如:var **m**y**T**est**V**alue=0,**m**y**S**econd**T**est**V**alue="hi"; Pascal标记法:首字母大写,接下来的单词都以大写字母开头。例如:var **M**y**T**est**V**alue=0,**M**y**S**econd**T**est**V**alu 继续阅读 »
2014-09-29 Xie Jingyi
链接:Link 耗时:0.028s 一道简单的动态规划,主要思路就是: 用f[i,j]表示到达(i,j)的最长路径的长度。找到每个最高点,从其开始向四周的低处搜索。如果该点已搜过并且f值大于当前长度则退出回溯。直到达到某个最低点为止。 不多说了,直接上代码: ```pascal const delta :array [1..4, 1..2] of integer = ((-1, 0), (1, 0), (0, 1), (0, -1)); //四个方向向量 var _: Integer; name: string; n, m, i, j, x: Integer; ans: longint 继续阅读 »
2016-01-10 LEo
1 检测系统是否win7 pascal function CheckWin7(): Boolean; begin GetWindowsVersionEx(Version); if Version.Major = 6 then begin Result := True; end else begin Result := False; end; end; 2 检测是否是silent安装 继续阅读 »