摘要:
题目大意:输入自然数n,然后将其拆分成由若干数相加的形式,参与加法运算的数可以重复。这道题目要转化啊……c[i.j]表示将数字i拆成j个数(易知j<=i)那么c[i-j,j]表示的则是从比i小j的数拆分成j个数,将这j个数每个都+1就转移到了c[i,j],另外一种是c[i-1,j-1]添加一个新的数字1也可以转移到当前状态。program Neayo;const inf='number.in'; ouf='number.out';var i,j,k,n:longint; ans:int64; f:array[0..501,0... 阅读全文
摘要:
题目大意:给你n个人以及他们之间的关系,求最多能有多少个互相认识的人以及最多人数的方案数。其实差不多是裸搜,用一个二进制数储存关系,加入的时候and一下就行。但是直接搜的话会有很多重复状态,考虑一种搜索方式绝对不会出现重复状态。于是我们规定外层用一种搜索顺序,内层的搜索顺序与外层相反,这样就保证内层搜的时候可以利用原来的结果。并且新加入一个节点的时候它只能去找那些以前已经搜索过的建环,这样可以保证没有重复的环。这里有个很重要的剪枝,当搜到一个节点的时候,如果当前已经在环里的人数加上这个节点之后能加入的最大人数还小于当前的max,那么就可以直接退出这一层搜索。这个剪枝对于这道题真的非常强……pr 阅读全文
摘要:
吐槽这道题。。。好烦燥。。。goto在pascal里面超时了啊!!!goto你妹啊。。。题目大意:这个游戏是两个人轮流在4*4的格子中放棋子,一个人放满了一行或一列或一个对角线就算赢。现在,小秋秋用X先手,已经下过许多步了。他想知道自己现在是否有必胜策略,以及最小的字典序走法。完全的裸搜,但是要判断它是不是必胜策略的话,不管别人怎么走你都要赢才行。program Neayo;uses sysutils;const inf='chess.in'; ouf='chess.out';var f:array[1..4,1..4]of longint; ... 阅读全文
摘要:
题目大意:一个无限大的平面,给你N种行走方式,从原点出发,能不能走遍整个平面。其实只要能走到(-1,0)(0,-1)(1,0)(0,1)四个点就可以了,可以推测只要在(-100,-100)(100,100)这个正方形里面走就可以了(为什么啊。。。)program neayo;var i,j,k,n,xx,yy,top,closed:longint; x,y:array[0..11]of longint; qx,qy:array[0..50000]of longint; h:array[-100..100,-100..100]of boolean;begin assign... 阅读全文
摘要:
题目大意:给你一个n*m的矩阵,0代表路,1代表墙,给出起点和中点,求最短距离。双向广搜的一个显著特点即是知道初始状态和目标状态,虽然说这道题可能还体现不出双向广搜的优势……具体方法可以望文生义,就是要加一个标记记录这个状态是从起点还是从终点转过来的。 1 program Neayo; 2 const 3 inf='maze.in'; 4 ouf='maze.out'; 5 f:array[1..4,1..2]of longint=((0,-1),(-1,0),(1,0),(0,1)); 6 var 7 i,j,k,n,m:lon... 阅读全文
摘要:
题目大意:对于任何正整数x,其约数的个数记作g(x)。例如g(1)=1、g(6)=4。如果某个正整数x满足:g(x)>g(i) 0<i<x,则称x为反质数。例如,整数2,4,6等都是反质数。现在给定一个数N,求出不超过N的最大的反质数。其实这道题就是根据每个整数都可以拆分成x1p1x2p2...xnpn,(xi为质数)且X1>X2>...Xn则有P1>P2>...Pn,按照质数顺序搜索即可。program Neayo;const inf='input.txt'; ouf='output.txt'; g:array[1.. 阅读全文