摘要: 题意 给出一个n*n的棋盘,现有游戏规则如下: 玩家一开始在左上角的格子里,魔术师给出多条指令,每条指令包含两个信息: 1、玩家走的步数(>=n,且不重复) 2、魔术师要删除的格子 魔术师可以删除一些这一步走不到的格子,并继续发出指令,知道所有格子(除了一个)被删除,并且玩家被逼到了这个格子中。 求发出指令的一组可行方案分析 不难发现,第一条指令肯定是让玩家走n步,之后步数逐渐增加 我们可以将这个棋盘像国际象棋棋盘那样,黑白染色 易证,走奇数步时会走到另一种颜色上,所以我们只需要每次让玩家走到另一种颜色上去,把相反颜色的格子删掉 但是这样删有两点问题:1、如果一开始n就为偶... 阅读全文
posted @ 2012-12-07 22:41 Rinyo 阅读(470) 评论(0) 推荐(0) 编辑
摘要: 题意 定义d(n):d(n)=n+[n的各位数之和] 如果某个数不能由一个数通过多次d(n)得到这个数,那么称这个数为“自我数” 比如:d(12)=12+1+2=15 d(d(12))=d(15)=15+1+5=21 d(d(d(12)))=d(d(15))=d(21)=21+2+1=24 ………… 则15、21、24等数都是可以得到的,不是“自我数” 而例如20,则就不能通过由某个数多次d(n)得到,所以20为一个“自我数” 现在给定一个n和m,求1~n中“自我数”的个数 并且输出其中第a[i]个(i∈[1,m])“自我数”分析 不难想到,通过筛... 阅读全文
posted @ 2012-12-04 23:33 Rinyo 阅读(384) 评论(1) 推荐(0) 编辑
摘要: 题意 求有多少个平方后末尾为987654321的n位数分析 先写个小程序 通过暴力枚举: 当n<=8时,无解 当n=9时 有8个满足要求的数: 111111111 119357639 380642361 388888889 611111111 619357639 880642361 888888889 容易知道,某个数的平方为987654321时,以这个数结尾的数,它的平方也是987654321 所以当n>9时,满足条件的数只能以上述八个数结尾 当n=10时,由于最高位不为0,所以又8*9=72个 n=11时,71*10个;n=1... 阅读全文
posted @ 2012-12-04 21:36 Rinyo 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 题意 There is sequence 1, 12, 123, 1234, ..., 12345678910, ... . Given first N elements of that sequence. You must determine amount of numbers in it that are divisible by 3. 有种数列:1,12,123..给出一个n,求这个数列中能被3整除的数的个数分析先来看看这几组数 第三列数表示1234..n这样的数除以3的余数,第四列数表示能被3整除的个数,即为答案1 1 1 02 12 0 13 123 0 24 1234 1 25.. 阅读全文
posted @ 2012-12-02 18:51 Rinyo 阅读(1005) 评论(0) 推荐(0) 编辑
摘要: 题意 给出n朵花,m个花瓶,第i号花插在第j个花瓶可以得到的权值是w,要求从左向右依次插花,求可以得到的最大权值,并打印插花方案分析 简单的线性dp,记f[i,j]为从第一号花开始插,插到了第i号花,且第i号花插在第j个花瓶,所能得到的权值之和为多少 显然,f[i,j]=max{f[i-1,k]+w[i,j]} k∈[i-1,j) 这样,问题的一部分求解完了,关键是如何记录答案 开个数组ans[i,j,0..1]。表示第i朵花插在第j个花瓶时,它的前一朵花为ans[i,j,0],且这朵花插在了f[i,j,1]上。 这样,写个递归就可以得到插花方案Accepted Code 1 /*... 阅读全文
posted @ 2012-12-02 17:56 Rinyo 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题意 给出一个数n,求出比n小且与n互质的个数分析 欧拉函数模板 通式: 欧拉函数还有几个性质: 1.若p为质数,则φ(p)=p-1 2.若p为质数,则φ(p^a)=(p-1)*p^(a-1) 3.若p,q互质,则φ(p*q)=φ(p)*φ(q)Accepted Code 1 /* 2 PROBLEM:sgu102 poj 2407 3 AUTHER:Rinyo 4 MEMO:Euler's totient function 欧拉函数 5 */ 6 7 8 #include<cstdio> 9 int n;10 int main()11 {12 ... 阅读全文
posted @ 2012-12-02 17:00 Rinyo 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 题意 给出一个N个结点的无向图,每条边都有一个长度,但是每条边的两端有信号灯。信号灯有两种颜色:蓝色和紫色,并且信号灯有颜色变化的周期。当要走这条路,这条路的两端颜色一样时,才可以走,否则需要等到其中一个等变色后再走(走这条路的中途不用管灯的颜色)。给定两个点st,ed,求从st到ed最少的时间是多少。输入:给出的灯的信息:C R Tb Tp。C表示开始时这个路口的灯的颜色,R表示当前这个颜色还要持续多久才会变成另一个颜色(为了方便描述,在后文记作“预热期”)。Tb表示这个路口的灯持续蓝色持续Tb,Tp同理。其实就是刚开始这个路口的颜色C会持续R秒,之后就开始有周期性的颜色交替了。输出:最短时 阅读全文
posted @ 2012-11-29 20:01 Rinyo 阅读(1007) 评论(0) 推荐(0) 编辑
摘要: 题目: 岛上有排列成环行的M个山洞。这些山洞顺时针编号为1,2,…,M。岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi个洞住下来。每个野人i有一个寿命值Li,即生存的年数。奇怪的是,虽然野人有很多,但没有任何两个野人在有生之年处在同一个山洞中,使得小岛一直保持和平与宁静,这让科学家们很是惊奇。他们想知道,至少有多少个山洞,才能维持岛上的和平。分析: 首先分析两个野人i,j的情况。如果i,j在x年相遇并且在第x年时俩人都活着,则可以得到一个同余方程:ci+x*pi≡cj+x*pj (mod M).现在我们要求不能使野人们相遇,则需要让这个.. 阅读全文
posted @ 2012-11-25 23:45 Rinyo 阅读(1360) 评论(0) 推荐(0) 编辑
摘要: 一、题意:给出a,b,c,x1,x2,y1,y2,求满足ax+by+c=0,且x∈[x1,x2],y∈[y1,y2]的整数解个数。二、分析:对于解二元一次不定方程,容易想到利用扩展欧几里得求出一组可行解后找到通解,下面来介绍一下欧几里得以及扩展欧几里得。1、欧几里得:又名辗转相除法,是用来计算两个数... 阅读全文
posted @ 2012-11-25 12:22 Rinyo 阅读(2577) 评论(4) 推荐(2) 编辑
摘要: 题意:给出n个人,及每个人要送出去多少钱以及送出的名单,求最后的收入-支出。分析:因为给的钱也许不能整除要给的名单,所以自己可以留着tot & num这么多钱,再把要给钱的名单中的名字的钱数+tot / num,至于名字的查找,可以用strcmp解决。最后别忘了每个人要减去送给别人的钱,复杂度O(n3)。 1 #include<cstdio> 2 #include<cstring> 3 struct rec 4 { 5 char na[15]; 6 int money; 7 }a[15]; 8 int main() 9 {10 freopen("gif 阅读全文
posted @ 2012-11-15 22:27 Rinyo 阅读(219) 评论(0) 推荐(0) 编辑