11 2012 档案

摘要:题意 给出一个N个结点的无向图,每条边都有一个长度,但是每条边的两端有信号灯。信号灯有两种颜色:蓝色和紫色,并且信号灯有颜色变化的周期。当要走这条路,这条路的两端颜色一样时,才可以走,否则需要等到其中一个等变色后再走(走这条路的中途不用管灯的颜色)。给定两个点st,ed,求从st到ed最少的时间是多少。输入:给出的灯的信息:C R Tb Tp。C表示开始时这个路口的灯的颜色,R表示当前这个颜色还要持续多久才会变成另一个颜色(为了方便描述,在后文记作“预热期”)。Tb表示这个路口的灯持续蓝色持续Tb,Tp同理。其实就是刚开始这个路口的颜色C会持续R秒,之后就开始有周期性的颜色交替了。输出:最短时 阅读全文
posted @ 2012-11-29 20:01 Rinyo 阅读(1006) 评论(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 阅读(1327) 评论(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 阅读(2552) 评论(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 阅读(217) 评论(0) 推荐(0) 编辑
摘要:题意:给出两个大写的英文串,规则:A代表1,B代表2......Z代表26,现在分别计算两个字符串,计算法则例如:ABC=1*2*3。如果两个字符串的得数mod 47相等,则输出GO,否则输出STAY。分析:充分利用ASCII码的对应关系,算每一个字母所代表的数即用s[i]-'A'+1即可,最后别忘了mod 47。 1 #include<cstdio> 2 #include<cstring> 3 4 int calc(char *s) 5 { 6 int len=strlen(s); 7 int ans=1; 8 for (int i=0;i<le 阅读全文
posted @ 2012-11-15 22:21 Rinyo 阅读(179) 评论(0) 推荐(0) 编辑
摘要:题意:给出一个数n,求出从1900~1900+n-1之中,在13号的周一、周二、.....、周日各有几天。分析:对于年月日有个计算公式,叫蔡勒公式,详见百度百科。这里没有用这个公式。先提前开个数组month记录每个月的天数备用,至于2月份,可以根据闰年计算法则:四年一闰,百年不闰,四百年一闰,在单独处理2月的情况。再开个数组week记录答案。用一个变量last表示当前是这个月的1号是第多少天,初始为1,则一上来+12表示这个月的13号,mod 7则能计算出此时为周几,计入答案。再根据是否为闰年的二月来把last加至下个月的一号。以此类推,两重循环(一重循环year,一重循环month)即可。注 阅读全文
posted @ 2012-11-15 06:15 Rinyo 阅读(360) 评论(0) 推荐(0) 编辑