摘要: 题解:由题目可以知道,如果n和m的最大公约数不为1,那么总有箱子是无法遍历的,所以求一遍GCD就可以判断了。注意点:一定要记住判断是==,在做题时又忘了。#include int gcd(int a,int b){ if (b==0) return(a); else return(gcd(b,(a%b)));}int main(){ int n,m; while(scanf("%d%d",&n,&m),n!=-1||m!=-1) { if (gcd(m,n)==1) puts("YES"); else puts("POOR... 阅读全文
posted @ 2013-12-20 15:04 forever97 阅读(138) 评论(0) 推荐(0) 编辑
摘要: #include int main(){ int cnt,h,d,u; while(scanf("%d%d%d",&h,&d,&u)!=EOF) if (h!=0) { cnt=0; cnt+=(2*((h-d)/(d-u))); if ((h-d)%(d-u)!=0) cnt+=2; cnt+=1; printf("%d\n",cnt); } return 0;}翻译:worm 虫子 阅读全文
posted @ 2013-12-20 14:55 forever97 阅读(97) 评论(0) 推荐(0) 编辑
摘要: 翻译: hexadecimal number 十六进制数 注意点:字符数组是从0开始的,积累字符转化函数toupper,需要用库string。 阅读全文
posted @ 2013-12-14 09:31 forever97 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 最近从pas转向了C++,觉得需要在语言上总结对比一下,以及记录一些注意点,关于STL,还需要之后好好地学习。同时,希望这篇文章对从pas转C++的同学有所帮助。基本类型 首先是基本类型的比较: Pascal ——> C++ Integer ——> short int Longint ——> int(long int) Dword ——> unsigned int Char ——> char Real ——> float Extended ——> double Boolean ——> bool定义 C++的定义法和Pas略有不同,就从整形的定义来 阅读全文
posted @ 2013-12-01 16:30 forever97 阅读(679) 评论(0) 推荐(0) 编辑
摘要: 即使下着雨,天空依旧明亮,因为远方有我的梦想。 ——forever97 阅读全文
posted @ 2013-11-30 17:00 forever97 阅读(134) 评论(0) 推荐(0) 编辑
摘要: int modify(int x,int num){while(x0)s+=c[x],x-=x&-x;return s;} 阅读全文
posted @ 2013-11-29 17:22 forever97 阅读(133) 评论(0) 推荐(0) 编辑
摘要: T1 积木游戏 树状数组的一个简单应用,建立一个维护左节点的树状数组和一个维护右节点的树状数组,对于add操作,只要在维护左节点的树状数组l处加1,维护右节点的树状数组r处加1,那么询问[l,r]的答案就是左节点数组的r前缀和减去右节点数组的l-1前缀和。var q,suml,sumr,i,j,k,l,r,m,n:longint; cl,cr:array[0..60005] of longint;{file}procedure openf;begin assign(input,'block.in'); reset(input); assign(output,'block 阅读全文
posted @ 2013-11-22 19:09 forever97 阅读(307) 评论(0) 推荐(0) 编辑
摘要: 积木游戏(block.pas) 【题目描述】 春春幼儿园举办了一年一度的“积木大赛”。今年比赛的内容是搭建一座宽度为n的大厦,最高的积木的最终需要达到h。 在搭建开始之前,没有任何积木(可以看成n块高度为 0 的积木)。接下来每次操作,小朋友们可以选择一段连续区间[L, R],然后将第L块到第R块之间(含第L块和第R块)所有积木的高度分别增加1。 为了锻炼小朋友们的动手能力,幼儿园准备让他们记录下每一步操作,即记下总步数,和每一次的区间,但是这样的话,幼儿园老师们的统计工作就变得很麻烦,因为还需要通过计算某时刻某区间的操作覆盖次数(即有多少次操作在上面进行过)来分析他们的... 阅读全文
posted @ 2013-11-20 16:31 forever97 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 并查集是一种神奇的算法,利用好可以解决许多高深的问题,尤其是其扩展应用,可以轻松秒掉一些难题。pascal模板基础并查集:初始化for i:=1 to n do father[i]:=i;查找function sf(x:longint):longint;begin if f[x]=x then exit(x) else f[x]:=sf(f[x]); exit(f[x]);end;加权并查集:初始化for i:=1 to n do begin f[i]:=i; r[i]:=0;end;查找同时处理关系(以2取模为例)function s... 阅读全文
posted @ 2013-11-19 17:32 forever97 阅读(254) 评论(0) 推荐(0) 编辑
摘要: 给即将面临Noip的二班同学: 我们共同走过了一年,在这里,真正认识彼此…… 失落过,但更多是欢笑…… 或许我们班的信息学竞赛承受着巨大的压力,但正因为这样,我们才学会了坚持;或许我们得不到他人的认可,但正因为这样,我们才可以真正做我们自己;或许我们最终什么都没有,或许我们会迎来质疑,嘲笑,失败,或许我们不久之后可能离去,但是请记住,我们拥有过,这早已足够。 一直以来,我想你们也可以感觉到,信息学竞赛似乎变成了坏孩子的代名词,作业少了,会怀疑我们,班级成绩不好,质疑是我们的拖累,就连作业都怀疑是抄的…… 我们在成绩与竞赛中煎熬,但是我们一定要咬牙坚持,黎明前,夜是最黑暗的。此外... 阅读全文
posted @ 2013-11-17 20:29 forever97 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 几天时间就把USACO chapter1重新做了一遍,发现了自己以前许多的不足。蒽,现在的程序明显比以前干净很多,而且效率也提高了许多。继续努力吧,好好的提高自己。这一章主要还是基本功的训练,没多少的思维难度,不过基础也是很重要的。——2013年11月17日1.1.1 Your Ride Is Here 题目很简单,长字符串读入,按位相乘,同时取模即可,一开始的时候居然忘记了给d1和d2赋值1,结果无论是什么字符串读入计算结果都为0,虽然是水题,还是要记住初始化!{ID: jiangyi10PROG: rideLANG: PASCAL}var d1,d2,i,j,k,l,m,n:l... 阅读全文
posted @ 2013-11-17 15:52 forever97 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 二叉堆在各种竞赛题目中通常都有涉及,主要是可以灵活地取出和插入,是一种在线的数据结构,对于几种基本操作和原理一定要烂熟于心。pascal模板放入操作procedure put(x:longint);var fa,son,tmp:longint;begin len:=len+1; heap[len]:=x; son:=len; while(son1)and(heap[son]len)or (heap[fa*2]heap[son] then begin tmp:=heap[fa]; heap[fa]:=heap[son]; heap[son]:=tm... 阅读全文
posted @ 2013-11-17 12:02 forever97 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 线段树其实复习的不是什么思想,主要应该是自己的代码风格与边界处理,就直接由题目来复习吧。另外,重新理解一下线段树的操作原理对于做题时很有帮助的。比赛前一定要耐心看一下每一种线段树的建树与维护方式。pascal模板不修改的RMQ:例题:vijosP1514 天才的记忆var x,y,i,j,k,l,m,n:longint; tree,a:array[0..1200000] of longint;function max(a,b:longint):longint;begin if a>b then exit(a); exit(b);end;{建树}procedure build_tree.. 阅读全文
posted @ 2013-11-17 11:52 forever97 阅读(272) 评论(0) 推荐(0) 编辑
摘要: LCA就是求解一棵树上两个节点的最近的共同祖先,主要运用倍增思想来解决问题。pascal模板倍增算法for j:=1 to k dofor i:=1 to n do f[i,j]:=f[f[i,j-1],j-1];(注:k:=ln(n)/ln(2),循环顺序一定不可以错)节点深度(计算节点深度同时计算出从根到节点路径上数字的和)procedure dfs(x:longint);begin if d[x]>0 then exit; if f[x,0]>0 then begin dfs(f[x,0]); d[x]:=d[f[x,0]]+1; sum[x]:=sum... 阅读全文
posted @ 2013-11-17 11:39 forever97 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 首先,复习一下矩阵运算,运算为c[x,y]:=a[x,i]*b[i,y],也就是说答案矩阵的第 i行第j个数就是a矩阵第i行所有数与b矩阵第j列所有数一一对应相乘的和。实现为程序语言:function mul(a,b:matrix; l,m,n,modnum:int64):matrix;var c:matrix;begin fillchar(c,sizeof(c),0); for i:=1 to l do for j:=1 to m do for k:=1 to n do inc(c[i,j],((a[i,k]mod modnum)*(b[k,j] mod m... 阅读全文
posted @ 2013-11-17 11:29 forever97 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 简单地复习一下排序,虽然说常用的只有几种但还是把所有的排序都复习一下,所有算法的存在都有它的理由,也都承载着许多人的智慧,再理解一遍对OI的学习或许有一些启发作用。pascal模板冒泡排序最早学习的就是冒泡学习,原理最简单,当然速度也是最慢的,不过在一些特殊的题型中会有一些独有的作用,首先,是它的交换原理的应用,比如一些只能左右交换的数据就只可以用冒泡排序,题目就像熟知的车厢重组求步数,是非冒泡排序不可的。在冒泡的过程中,一定要注意记录当前循环是否发生交换,如果无则结束,也算一个剪枝吧:i:=1 repeat bo:=true; for j:=1 to n-i do if a[... 阅读全文
posted @ 2013-11-17 10:51 forever97 阅读(263) 评论(0) 推荐(0) 编辑
摘要: pascal模板字符串转数组procedure change(var s:ansistring; var a:arraytype; var a1:longint);var t:longint;begin t:=length(s); for i:=t downto 1 do val(s[i],a[t-i+1]); a1:=t;end; 这段一般来说用处不大,但是初学时的一些程序常用的。高精加法procedure c1(var a,b,c:arraytype; var a1,b1,c1:longint);var i,j,k,x:longint;begin i:=1; x:=0; w... 阅读全文
posted @ 2013-11-16 11:39 forever97 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 决定成绩的,很多时候可能不是实力,而是心态,一年走来,承受着一次次失败,怀疑,背负着希望与压力,突然发现,只有拥有过,失去过,才可以真正去超越,我希望完成我的梦想,但是唯有放下梦想,才可以走向它。心情调整 首先,我要摆脱我的紧张,毕竟这是我第一次Noip,紧张肯定是有的,但是我一定要调整好心情,去年是什么心情去参加省选,今年也要用一样的心情去面对Noip,一次考试不是全部,Noip只是我计算机历程的开始,而不是结束。拿不拿奖是CCF的事情,而我只是为了自己的梦想而努力。放低姿态 我不是神牛,没有任何理由骄傲,也不会有任何理由去轻视每一道题目,考试时从最简单的题目开始认真读题认真做,多考... 阅读全文
posted @ 2013-11-15 20:55 forever97 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 关于调试技巧,个人觉得还是很重要的,于是把自己之前写过的总结拿出来,修修补补再复习一下。F7 单步跟踪法 这是大家都最常用的调试方法,可以一步一步去跟踪程序的运行方向,以及各种变量的变化情况,当发现错误后,用 ctrl+F2 结束调试,更改错误,注意的是 F7 调试时数组不要开得过大,虚拟内存占用过多时,程序运行会非常慢,甚至死机。Watch 的小技巧 首先,不用说都知道 ctrl+F7增加 Watch 变量至最下端,鼠标指向可以添加至 watch任意位置,其次,对于数组,在 watch时一定特别麻烦,很长很长,其实有一种很巧妙的方法,就是 watch a[i],也就是说, watch... 阅读全文
posted @ 2013-11-15 20:52 forever97 阅读(472) 评论(0) 推荐(0) 编辑
摘要: 很多的时候,我们会说,这道题我会做,算法想出来了,但是这里那里少了一些判断,导致一分未得,或是说变量名错误,或者说干脆是文件名错误。这些都不是理由,如果火箭发射半空爆炸,可以说是控制器中一个运算符错误就可以逃避所有责任吗?不可以,同样,OI也不行,所以只有提升自己,使自己成为一个严谨的人!基本操作 1.读题一定要仔细,特别是长题目,千万不要主观臆断,一定要完全理解题目再去编程。A good reader is what he reads! 读题时要注意用样例模拟一下自己所理解的题目意思,若正确才开始编程。 2.文件读入与输出检查很重要,最好指定路径在自己电脑上试一下,不过不要忘记将路径... 阅读全文
posted @ 2013-11-15 20:45 forever97 阅读(277) 评论(0) 推荐(0) 编辑