自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Jerry I. Huang

Proud to Be an OIer

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

原创 [POJ]2449. Remmarguts' Date

这道题是求一个有向图上的第k短路。这时,可以采用A*搜索,也就是启发式搜索的办法。所谓启发式搜索,是在搜索的时候设置一个启发式函数,以此来确定搜索的顺序,,从而减少无用功。    本题中,启发函数为f(x) = distance_traveled(x) + distance_remaining(x). 前者为搜索到x点时已经走过的路程,后者为到终点还剩的路程。可以在A*搜索之前把后者先全部预处

2015-10-12 14:33:59 606

原创 [SGU]140. Integer Sequences

Analysis   (先吐槽一下自己,AC了好几个月才写题解,题目都忘了……) 一道数论方面的题目(话说那时似乎往dp那儿想了很久啊……)。考虑x和y两个数,ax+by能够组成gcd(x,y)的所有倍数。推广到n个数的情形就是a[1]*x[1]+a[2]*x[2]+...+a[n]*x[n]能够组成x[1],x[2],...,x[n]的最大公约数的任意倍数。那么题目中A和X两个数列,由于X是

2013-02-23 20:42:00 697

原创 [POJ]3233. Matrix Power Series

Analysis    找了几道矩阵乘法的题目练一练,这道是最水的。大意是给定N*N矩阵A,求A+A^1+A^2+....+A^k。那么使用二分的方法,将要求的矩阵变形为A+A^1+A^2+....+A^(k div 2) + A^(k div 2)*(A+A^1+A^2+....+A^(k div 2))就可以在log的时间内出解了。Accepted Codetype

2013-02-06 21:03:49 605

原创 [SGU]139. Help Needed!

Analysis    这道题目建立在十五数码问题的背景上。本来想写搜索的,太懒了上百度搜了一下发现有个很简便的方法OTZ……设状态p的总逆序对数与0到右下角的曼哈顿距离和为T(P),那么T(末状态)=0,因为每次移动对T的奇偶性没有影响,所以当T(初状态)为奇数是肯定无解,否则有解(证明很麻烦……)。Accepted Code#includeusing namespace std

2013-02-06 20:55:16 559

原创 [Codeforces]160D - Edges in MST

Analysis    这道题的大意是在一个无向图中,任意构造一棵最小生成树,求有哪一些边一定出现,哪一些边有可能出现,哪一些边一定不会出现。英语太渣了不敢在Codeforces上写题解(而且那里已经有很好的题解了),就在这里自己理一下思路吧。把所有边按权值由小到大排序,像Kruskal这样做过来,但是权值相同的边要一起做(有一个结论,设T是图G的一棵最小生成树,L是T中各边权值的一个已排

2013-01-29 16:32:06 885

原创 [SGU]138. Games of Chess

Analysis    又是一道构造题。这道题想了很久没想出来……最后根据网上别人的题解构造了一下就AC了……总的比赛场数为每个人的相加除以二,构造方法是,先把人按比赛场次由多到少排序,然后按这个顺序,把每个人除最后一场外安排为胜场,最后一场为负场,直到胜场全部排完,剩下的人都安排负场。Accepted Codevar tot,n,i,j,bag,tmp:longint;

2012-11-04 18:59:47 818

原创 [SGU]137. Funny Strings

Analysis    一道构造的题目。设a[0],a[1],a[2],...,a[n-1]满足题意,设变换之后向左移了i格,则a[0]+1=a[i mod n]=a[2i mod n]=...=a[pi mod n],如果在这个等式之中不存在pi mod n为n-1的情况,则将得到a[0]+1=a[ni mod n]=a[0]矛盾。设pi mod n=n-1,则a[pi mod n]-1=a

2012-11-04 18:40:56 617

原创 [SGU]136. Erasing Edges

Analysis    题目大意为给定一个多边形的各边中点,判断是否存在合法的多边形。题目对合法的定义很宽松,所以变得很水……对n的奇偶性进行分类讨论,若为奇数直接解方程输出,若为偶数则需判断无解还是任意解。Accepted Codeconst zero=1e-8;var p,q,u,v,x,y:array[0..10100] of extended;

2012-11-01 19:43:23 651

原创 [SGU]135. Drawing Lines

Analysis    一道简单的递推题,或许会出现在小学生的数学课上吧。Accepted Codevar n:int64;begin readln(n); writeln(n*(n+1) div 2+1);end.

2012-11-01 19:34:30 434

原创 [SGU]134. Centroid

Analysis    题目大意是给出一棵无根树,求出一些点,去掉这些点后剩下的含结点数最大的连通块的结点数最小。先令树的根为1,令sons[i]为结点i为根的子树的结点数,那么去掉该点后剩下的含结点数最大的连通块的结点数ans[i]=max(n-sons[i],max(sons[j])(map[i,j]=true)),那么对树遍历一次即可求出答案。Accepted Codev

2012-11-01 16:46:29 585

原创 [SGU]133. Border

Analysis    题目大意为给定N个区间(1Accepted Codevar a,b:array[1..20000] of longint; n,i,ans,max:longint;procedure sort(l,r:longint);var i,j,mid,tmp:longint;begin i:=l; j:=r;

2012-10-31 19:00:25 528

原创 [SGU]132. Another Chocolate Maniac

Analysis    还是一道状态压缩题目,与SGU131不同的是,一个要填满,一个不用,这样一来此题中上一行的状态将会影响到当前行,故应在状态表示时记录两行。设f[i,opt1,opt2]是当前为第i行,上一行状态为opt1,当前行状态为opt2时的方案总数,用与前一题相似的方法推到下一个状态。Accepted Codevar f:array[0..1,0..200

2012-10-31 18:43:15 769

原创 [SGU]131. Hardwood floor

Analysis    看到这么小的数据范围就想到是一道状压DP题。用二进制数表示每行的状态,用十进制存储,设f[i,opt]是第i行状态为opt的方案数,由于使用类似g[opt1,opt2]这样的数组来转移会MLE,所以只能DFS解决,不过效率还是很高的。Accepted Codevar f:array[1..10,0..1000] of int64; i,j,n

2012-10-31 18:29:22 891

原创 [SGU]130. Circle

Analysis    一道简单的递推题。首先k条弦最多把圆分成k+1份,设f[k]为有2k个点时的方案数,当k(0,故f[k]=sum(f[j-2]*f[2k-j](0)。Accepted Code#includeusing namespace std;int main(){ long long f[50]; int i,j,n; cin>>n

2012-10-31 18:13:59 711

原创 [SGU]129. Inheritance

Analysis    一道计算几何题,难度的话看看它的AC人数就知道了……卡了我好久终于AC了(虽然似乎对联赛没什么帮助T T)。我的做法是先把所有的点按照在多边形上的逆时针方向排序,然后利用叉积求线段之间的交点,并判断点是否在多边形内部。关于叉积求交点的代码我是从《算法艺术与信息学竞赛》上面差不多抄的,然后犯了一个小错误,就是书上的只求规范相交,要改一改才行……Accepted Cod

2012-10-30 20:50:46 751

原创 [SGU]128. Snake

Analysis    根据题目所给的条件,可知以任意一个点为端点出发的水平和竖直直线都各只有一条,那么最后构造出的多边形就是唯一的。只要在构造完之后判断是否有线段在非端点处相交即可。可以使用线段树判断,但是这题的数据范围暴力枚举判断就可以过了。Accepted Codetype segment=record a,b:longint; end;c

2012-10-30 20:17:05 1275

原创 [SGU]127. Telephone directory

Analysis    还是一道大水题……对于每个数字统计出以它为第一位的号码的个数,然后模一下加一下就可以了。Accepted Codevar a:array[0..9] of longint; k,n,i,ans:longint; s:string;begin readln(k); readln(n); fillchar(a,

2012-10-30 19:46:30 502

原创 [SGU]126. Boxes

Analysis    简单的模拟题。一个有用的结论:把a和b同时除以它们的最大公约数k答案不变。这个结论应当是显然的,可以理解为把k个物品合并为一件大的物品。这样一直模拟下来出解是很快的。Accepted Codevar a,b,k,t:longint;function gcd(a,b:longint):longint;var tmp:longint;

2012-10-30 19:41:33 860

原创 [SGU]125. Shtirlits

Analysis    一道并不难的搜索题,只需要普通的DFS加上简单的剪枝即可。Accepted Codevar a,b:array[-1..5,-1..5] of longint; find:boolean; n,i,j:longint;function check(i,j:longint):boolean;var tmp:longint;

2012-10-30 19:36:04 692

原创 [SGU]124. Broken line

Analysis    判断一个点是否在一个多边形之内。这个多边形不一定是凸多边形,但是所有的边都平行于坐标轴,那么从要判断的点做一条射线,判断与多边形的交点个数是否为奇数即可。我是从该点沿y轴正方向做一条射线,判断相交时注意端点的情况。Accepted Codetype point=record x,y:longint; end;var

2012-10-30 19:21:49 1470

原创 [SGU]123. The sum

Analysis    什么都不用说了,大水题一道。趁机练练C++。Accepted Code#includeusing namespace std;int main(){ int n,i,f[50],sum[50]; cin>>n; f[1]=f[2]=1; for(i=3;i<=n;i++) f[i]=f[i-1]+f

2012-10-30 18:48:05 635

原创 [SGU]122. The book

Analysis    这道题就是求一个图的哈密顿回路,给定的条件满足Ore性质,那么用《组合数学》上的构造方法来构造就可以了。Accepted Codevar map:array[1..1000,1..1000] of boolean; used:array[1..1000] of boolean; chain,tmpchain:array[1..1000]

2012-10-30 18:42:17 1265

原创 [SGU]121. Bridges painting

Analysis    刚拿到这道题的时候也想不出什么算法,然后去搜了一下才发现原来是简单的DFS构造……从任意奇数点开始DFS,对遍历到的边交替染色,如果这么做无解的话那么就No solution,否则输出解。证明似乎不那么容易,不过自己在纸上画一画应当能感觉出来吧……Accepted Codevar map,color:array[0..110,0..110] of l

2012-10-30 18:36:40 721

原创 [SGU]120. Archipelago

Analysis    算法是,先根据给定两点求出圆心,然后使用向量的旋转依次求出各点。Accepted Codetype point=record x,y:extended; end;var p:array[1..150] of point; i,k,n,n1,n2:longint; alpha,beta,r:exten

2012-10-29 10:05:14 689

原创 [SGU]119. Magic Pairs

Analysis    这题要证明一个结论,答案就是所有的 (a0*i mod n,b0*i mod n) i=0..n-1,证明在草稿纸上懒得打出来……应当不难吧。Accepted Codetype lintpair=array[1..2] of longint;var tot,n,i,a,b,x,y:longint; ans:array[1..200

2012-10-29 09:34:58 675

原创 [SGU]118. Digital Root

Analysis    首先,答案必定就是题目给定式子除以9所得的余数,那么求出给定式子的值就行了。我们可以把式子转化为(A1*(1+A2*(1+A3(……(1+An)……))))的形式,边做边模就可以了。Accepted Codevar a:array[1..1000] of longint; testcase,n,i,t:longint;begin

2012-10-29 09:22:43 514

原创 [SGU]117. Counting

Analysis    这道题用到了正整数的唯一分解定理。把给定的K,n表示成p1^a1*p2^a2……的形式,然后如果对于每一个质因数p,若它在K中的次数不超过m倍的在n中的次数,那么就得到了k | n^m 。Accepted Codevar bo:array[1..10000] of boolean; prime,kp,tmpp:array[0..10000]

2012-10-29 08:11:15 1085

原创 [SGU]116. Index of super-prime

Analysis    这道题目只要先处理出所有的super-prime,然后做一个背包就能得到答案了。Accepted Codevar bo:array[1..10000] of boolean; prime,suprime,f:array[0..10000] of longint; i,j,k,l,n:longint;function min(a,b

2012-10-29 07:50:23 1009

原创 [SGU]115. Calendar

Analysis    简单的模拟题,只需知道2001年1月1日是星期一就可以了。Accepted Codeconst mon:array[1..12] of longint=(31,28,31,30,31,30,31,31,30,31,30,31);var days:array[1..12,1..31] of longint; t,i,j,n,m:lo

2012-10-29 07:38:23 363

原创 [SGU]114. Telecasting station

Analysis    这题寻找一个在最中间的citizen输出位置就可以了,证明略(很简单的……)Accepted Codevar n,i,k,sump:longint; x,p:array[1..15000] of longint;procedure sort(l,r:longint);var i,j,mid,tmp:longint;begin

2012-10-28 20:53:57 452

原创 [SGU]113. Nearly prime numbers

Analysis    这题比112还要水……只用从2到sqrt(k)枚举整除的次数就行了。Accepted Codevar n,i,j,k,t,p:longint;begin read(n); for i:=1 to n do begin read(k); t:=k; p:=0;

2012-10-28 20:42:10 398

原创 [SGU]112. a^b - b^a

Analysis    普通的高精乘法和减法,不用压位也能过,就喜欢这样的大水题……注意答案的正负判断吧,我第一个版本的程序就会输出-0…… T TAccepted Codetype largenum=record len:longint; a:array[0..1100] of longint; end;var a,b,

2012-10-28 20:28:56 1573

原创 [SGU]111. Very simple problem

Analysis    不要被标题迷惑了!没那么看上去简单哟!刚看这题总觉得似曾相识,复习初赛的时候才发现是去年初赛完善程序的第一题……不过把那个程序交上去应当是会TLE的吧……因为它没压位……我的AC程序是二分+压位高精。据说还有笔算开方的算法,我果然小学数学没学好T T……Accepted Codevar a,l,r,mid,sqrmid,tmp:array[0

2012-10-28 20:19:43 976

原创 [SGU]110. Dungeon

Analysis    一道计算几何题,反正是NOIP肯定不会考的东西……一直跪在精度上,最后到网上看了看别人的代码,参考了一下还是A了。思路倒是很清晰,只需要把三维空间里的直线用向量一类的东西表示出来,然后应用立体几何平面化的思想把反射的公式推一下就可以了……Accepted Codeconst zero=1e-8;var b:array[1..50,1..4

2012-10-28 20:02:15 483

原创 [SGU]109. Magic of David Copperfield II

Analysis    一道构造题……第一次先走n步,然后把离起点曼哈顿距离大于n的全删掉。然后每次走比上一次大的最小的奇数的步数,直到结束。Accepted Codevar n,i,j,tmp,k:longint;begin readln(n); write(n); k:=n; for i:=1 to n do

2012-10-07 20:41:29 494

原创 [SGU]108. Self-numbers II

Analysis    我的做法是先把输入的k个数排个序,然后找到1..n中的Self-number,对每个输入找到答案,重新按输入顺序排序后输出。因为内存限制较严格,is_sn数组是循环使用的。Accepted Codetype mytype=record data,num,ans:longint; end;var s:array[

2012-10-03 16:59:42 462

原创 [SGU]107. 987654321 problem

Analysis    第一个想法是枚举,然后发现1到9位数中满足这样条件的只有8个……然后就很easy了Accepted Codevar n:longint;begin readln(n); if n<=8 then writeln(0) else if n=9 then writeln

2012-10-01 18:09:54 461

原创 [SGU]106. The Equation

Analysis    使用扩展欧几里德算法……其实是第一次听说这算法,百度了一下才有了思路……程序里有几个是否非零的判断。Accepted Codevar    x1,x2,x,y1,y2,y,a,b,c,d,tmp:int64;    up,down,temp:extended;function extended_gcd(a,b:int64;var x,y:in

2012-09-18 15:50:07 906

原创 [SGU]105. Div 3

Analysis    很简单的找规律题目。在这个数列中第i项不能被3整除当且仅当i mod 3=1。Accepted Codevar ans,n:longint;begin readln(n); ans:=n div 3*2; if n mod 3=2 then inc(ans); writeln(ans);end.

2012-08-25 14:21:14 644

原创 [SGU]104. Little Shop of Flowers

Analysis       本题是一道基础的动态规划题。设w[i,j]为前i种花放入前j个花瓶所能达到的最大值,则w[i,j]=max(w[i,j-1],w[i-1,j-1]+a[i,j])。题目来源是IOI99。Accepted Codevar w,a:array[0..100,0..100] of longint; ans:array[0..1000] of long

2012-08-23 20:57:14 449

空空如也

空空如也

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

TA关注的人

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