USACO Hamming Codes

注意读题。。 至少有 D 个单位的“海明距离”
按顺序把每个数都转换为二进制,再与以前找到的所有的数比较即可。

/*
ID: djgreen1
PROB: hamming
LANG: C
*/
#include <stdio.h>
#include <stdbool.h>
 
char word[65][10]={{0},{}};
int b,d;
 
void convert(int n, int point)
{
	int i=1,temp=n;
 
	while (temp>0)
	{
		word[point][i++]=temp%2;
		temp=temp/2;
	}
}
bool work(int n)
{
	int i,j,dis;
	for (i=1;i<n;i++)
	{
		dis=0;
		for (j=1;j<=b;j++) if (word[i][j]!=word[n][j]) dis++;
		if (dis<d) return 0;
	}
	return 1;
}
int main()
{
	int n;
	int find,num=0;
 
	freopen("hamming.in","r",stdin);
	freopen("hamming.out","w",stdout);
 
	scanf("%d%d%d",&n,&b,&d);
	printf("0 ");
	find=1; //符合条件的数的个数。。
	while (find<n)
	{
		find++;
		while (true)
		{
			convert(++num,find);
			if (work(find))
			{
				if (find%10==0||find==n) printf("%d\n",num);
					else printf("%d ",num);
				break;
			}
		}
	}
	return 0;
 
	fclose(stdin);
	fclose(stdout);
}

USACO Health Holsteins

简单题。。。DFS

/*
ID: djgreen1
PROB: holstein
LANG: C
*/
#include <stdio.h>
#include <stdbool.h>
int temp[26]={0};
bool used[16]={0};
int num=0,max=999,v,g,min[26],feed[16][26],ans[16];
void work(int n)
{
	int i,j;
	bool ok=true;
	if (n>g) return;
	for (i=1;i<=v;i++)
	{
		temp[i]+=feed[n][i];
		if (temp[i]<min[i]) ok=false;
	}
	used[n]=true;
	num++;
	if (ok)
	{
		if (num<max)
		{
			max=num;
			j=0;
			for (i=1;i<=n;i++) if (used[i]) 
			{
				j++;
				ans[j]=i;
			}
		}
		used[n]=false;
		num--;
		for (i=1;i<=v;i++) temp[i]-=feed[n][i];
		return;
	}
	else
	{
		work(n+1);
		used[n]=false;
		num--;
		for (i=1;i<=v;i++) temp[i]-=feed[n][i];
		work(n+1);
	}
}
int main()
{
	freopen("holstein.in","r",stdin);
	freopen("holstein.out","w",stdout);
 
	int i,j;
 
	scanf("%d",&v);
	for (i=1;i<=v;i++) scanf("%d",&min[i]);
	scanf("%d",&g);
	for (i=1;i<=g;i++) 
		for (j=1;j<=v;j++) scanf("%d",&feed[i][j]);
	work(1);
	printf("%d ",max);
	for (i=1;i<max;i++) printf("%d ",ans[i]);
	printf("%d\n",ans[max]);
	return 0;
}

USACO Sorting a Three-Valued Sequence

自己的想法错了。。第六组过不去,后来参照OIBH了。
可以这样理解,先把3放好,对于1、2位置,如果{1在2上,2在1上}互相交换即可,否则要和新换上的数字交换。。
比如:

3
1
2

要交换两次。

/*
ID: djgreen1
PROB: sort
LANG: C
*/
#include <stdio.h>
int max(int a, int b)
{
	if (a>b) return a;
		else return b;
}
int main()
{
	freopen("sort3.in","r",stdin);
	freopen("sort3.out","w",stdout);
 
	int i,n,num[1002]={0},count[4]={0},ans[4]={0},end;
 
	scanf("%d",&n);
	for (i=1;i<=n;i++)
	{
		scanf("%d",&num[i]);
		count[num[i]]++;
	}
	for (i=1;i<=count[1];i++) 
	{
		if (num[i]==3) 
		{
			ans[3]++;
			continue;
		}
		if (num[i]==2) ans[2]++;
	}	
	end=count[1]+count[2];
	for (i=count[1]+1;i<=end;i++) 
	{
		if (num[i]==3) 
		{
			ans[3]++;
			continue;
		}
		if (num[i]==1) ans[1]++;
	}
	printf("%d\n",ans[3]+max(ans[1],ans[2]));
	fclose(stdin);
	fclose(stdout);
	return 0;
}

USACO Ordered Fractions

求值排序

/*
ID:djgreen1
PROG:frac1
LANG:C
*/
#include
#include
struct num
{
	int a,b;
	double value;
};
bool prime[200];
bool work(int a,int b)
{
	int i;
	for (i=2;i&lt;=a;i++)
		if (prime[i])
		{
			if (a%i==0&amp;&amp;b%i==0) return false;
		}
	return true;
}
int main()
{
	freopen("frac1.in","r",stdin);
	freopen("frac1.out","w",stdout);
	int i,j,n,count;
	struct num frac[25600],temp;
 
	memset(prime,true,sizeof(prime));
	for (i=2;i&lt;160;i++)
		if (prime[i])
		{
			for (j=2;j&lt;=160/i;j++) prime[i*j]=0;
		}
	scanf("%d",&amp;n);
	printf("0/1\n");
	if (n==2)
	{
		printf("1/2\n1/1\n");
		return 0;
	}
	count=0;
 
	//generate all fractions
	for (i=1;i&lt;=n;i++)
		for (j=i+1;j&lt;=n;j++)
		{
			if (!work(i,j)) continue; //gcd
			count++;
			frac[count].a=i;
			frac[count].b=j;
			frac[count].value=(double)i/(double)j;
		}
 
	//sort
	for (i=1;ifrac[j].value)
		{
			temp=frac[i];
			frac[i]=frac[j];
			frac[j]=temp;
		}
	for (i=1;i&lt;=count;i++)
	{
		printf("%d/%d\n",frac[i].a,frac[i].b);
	}
	printf("1/1\n");
	fclose(stdin);
	fclose(stdout);
	return 0;
}

有种方法很简单,根据

a/b<c/d==>a/b<(a+c)/(b+d)<c/d

(通分可证,更深奥的就不懂了- -!)USACO给的答案:

/* print the fractions of denominator <= n between n1/d1 and n2/d2 */
void
genfrac(int n1, int d1, int n2, int d2)
{
	if(d1+d2 > n)	/* cut off recursion */
		return;
 
	genfrac(n1,d1, n1+n2,d1+d2);
	fprintf(fout, "%d/%d\n", n1+n2, d1+d2);
	genfrac(n1+n2,d1+d2, n2,d2);
}
}

期待卡通赛车的再次开放

我曾写过用Sandboxie正常玩卡通赛车,其实后来新浪更新了UT,支持Win7了。

2010年5月18日,新浪再一次更新,推出“视频游戏”,在没有提前告知的情况下(5月14日关闭金币充值),原来的卡通赛车、野菜部落、飞行棋等等都停运了。

用Sandboxie正常玩卡通赛车我写了:

igame里的飞行棋很好玩,igame连连看的背景音乐很好听,卡通赛车我从2005年玩到现在,野菜部落我做完了绝大部分任务。igame中用来买东西的金币可以通过挂银币得到,所以不用花RMB就能买很多东西。

不过,现在网易新闻不错,新浪不愿管不赚钱的igame了。
野菜部落最后维护时间是2007年11月12日。
卡通赛车上次更新是2007年7月13日,曾经的服务器200人频道爆满好久不见了,曾经的组队跑圣诞1刷分也没有了。积分设置不合理,玩得钱越来越少。。虽然这样,还有很多忠诚的老玩家,甚至有日本人、韩国人

卡通赛车可能是我玩的第一个网游。(2005-2010.5.18)
05年初买了新电脑,不再拨号,用上ADSL。下了igame发现的卡通赛车。5年半了。
游戏刚开始玩得比较多,后来一般只在假期玩。也没什么朋友,只对几个ID比较熟悉。#

大批玩家在论坛里抱怨、与QQ客服沟通,可怜的客服只能公式化地回答。

有人向315电子消费投诉网投诉新浪,提到了充值问题,这个方向不错嘛。新浪只是游戏关闭4天前停止金币充值,游戏关闭没有提前通知玩家。

资深玩家“小猫发飙”这样说(在群里),我很赞同。他还提到,“玩家<飓风传说>要用5万元购买版本”。

今晚,我看到了新浪的补充说明。

发表于 3 天前 22:20
[公告] 关于野菜部落、燃烧战车、升级等游戏的补充说明
本帖最后由 gm17777.cn 于 2010-5-21 12:57 编辑

尊敬的各位玩家:

为了提供更好的用户体验,IGAME转型为视频棋牌平台,主要有:疯狂斗地主、火爆斗地主、疯狂双扣、牛牛、扎金花、德州扑克、五子棋、四国军旗、美式八球等20多款视频休闲游戏。另外我们深表遗憾的是IGAME平台原来的部分游戏目前将无法继续提供服务,我们会尽量和韩方及其它相关部门进行沟通,得到技术升级及开放允许,会尽最大努力进行沟通的,敬请大家谅解!

目前新平台还在调试中,稍后将陆续开放金币类游戏及FLASH游戏,同时新平台会有很多活动,相信会更加精彩,敬请期待!

新平台、新玩法、新朋友、新气象,希望大家继续支持IGAME游戏!
igame官方网站:http://www.17777.com

稍稍感觉好了点,毕竟还是有希望的。

我的建议:
1新浪不再开放银币换金币,让大家用RMB买道具,否则像以前那样赚不到钱啊。
2在首页、新闻频道红字推荐igame,现在顶部导航栏都没有链接,谁知道新浪还运营游戏啊?!

发点图吧
足球模式:
足球模式

藏獒9进球了,高手:
藏獒9进球了,高手

比赛开始,准备抢球╰( ̄▽ ̄)╭:
比赛开始,准备抢球╰( ̄▽ ̄)╭

战斗模式:
战斗模式

道具战,与其他游戏不同的是,只能赛前买好4个道具:
道具战,与其他游戏不同的是,只能赛前买好4个道具

战斗模式游戏中:
战斗模式游戏中

PS:新版igame虽然界面很漂亮,连个连连看都下不了。。速度极慢还不停从头下,网站的连连看链接还无效。怒!

中国站前瞻——Williams, McLaren, Mercedes GP等等

原文链接:http://www.formula1.com/news/headlines/2010/4/10648.html

上海国际赛车场有令人惊叹的建筑、高速直道和蜿蜒的弯道,这意味着车队非常高兴地忍受着上海拥挤的交通,享受在中国比赛的机会。接下来车队的高级员工和车手考虑中国大奖赛周末的期望,并解释为什么他们把此赛道看作他们最喜欢的赛道之一。

Rubens Barrichello, Williams
2009 排位赛 – 第4, 2009 正赛 – 第4

”上海赛道是个十分有趣的赛道。弯道和赛道末尾很适合超车的长直道结合得不错。要得到快的圈速,赛车需要更多的空气动力学,而不是机械性能,但两者的精确结合往往很难达到。再加上每圈也很长,影响因素很多,完美的调教赛车是艰难的工作。我赢得了上海的第一场比赛,这对我很特别。我会常常想起那场胜利,这使我想到我随时可以再赢一次。”
Nico Hulkenberg, Williams
2009 排位赛 – 无, 2009 正赛 – 无

”与马来西亚一样,我以前在中国比赛过,那是A1大奖赛两个赛季前。去参加一场对赛道有经验的大奖赛感觉不错。你可以在模拟器里做无数训练,但这比不过真实的赛道经验。这个赛道不是我喜欢的,它缺乏人情味,但它确实有个很长的直道,这是超车的好地方。这里在比赛时要提防被超过,赛道的这个部分会有一些精彩动作。我将在周一飞往中国,虽然没有必要为了适应早点到,我真的想看看风景名胜,这座城市相当酷。我一定会去一趟外滩和附近浦东的东方明珠电视塔。“

Sam Michael, Williams 技术总监

“在马来西亚遇到的问题后,我们带着提升我们表现的明确目标前往中国。有几个我们明显要注意的关键区域。第一,我们要保证两位车手再次在排位赛中进入前十,以便给他们最好的机会在正赛中得到需要的积分。我们也要改进我们的发车。我们解决了 Rubens 在发车时的问题,在周五练习赛我们将要进行一系列发车训练。对于赛车研发,我们正在努力为上海站对前后翼进行一些空气动力学改进。”

Jenson Button, McLaren
2009 排位赛 – 第5, 2009 正赛 – 第3

“去年,他们把比赛从赛季末移到赛季初,周末比以前更冷更湿。天气预报现在不表明今年的赛事会有任何不同——但我乐观地认为周末会干燥,比赛会比去年更加简单。尽管如此,这是一个我喜欢的赛道:这是个典型的现代化赛道——有真正的弯角组合,但它使一些相当精确的、要求技术的区段与一些高速弯和长直道结合。这是个好车手的赛道,这里对平衡良好的赛车有优势。尽管我认为在那个区域我已经有了真正的进步,我对马来西亚的赛车平衡并不完全满意,所以我在 McLaren 科技中心呆了一天,看看我们为什么在雪邦做得不够好,也展望了上海。我认为,和我的机械师们一起,我们已经对MP4-25更加了解。我们知道如何微调赛车的平衡到最好、如何在一个比赛周末搞定它。当然,这是一个连续的过程,但是总体感觉是我们正在进步——这总是积极的。”

Lewis Hamilton, McLaren
2009 排位赛 – 第9, 2009 正赛 – 第6

“很难相信我们正在临近今年的第四场比赛——比赛过得非常快。马来西亚后,我有一点点时间来反思这个赛季(到目前为止),我对 Jenson 和我在一些有挑战性的环境中得到的成绩很高兴。我真想在中国有一个不被打断的周末,这样我们就可以集中注意力到比赛上并与其他在锦标赛中领先的队伍竞争。在这里驾驶真的很享受——2008年我在这里开了我最好的比赛之一,从杆位获胜。在三场比赛后,我们对我们的比赛节奏很满意,我们将要在前排,我们感觉很舒服。在这个赛道上,超车是可能的,尤其是长直道的末端,所以我很自信这又是一个我们有竞争力的周末。最后,我认为在世界上我们去过的所有地方里中国车迷是最激情、热诚的。他们真正地支持我这么多年,我盼望在到达上海后再次见到他们。”

Martin Whitmarsh, McLaren 车队领队

“根据我们自己很高的标准,在前三场比赛中我们没有完全达到我们很高的预期,尽管有我们感觉在前排竞争必要的比赛速度,尽管我们赢了澳大利亚大奖赛。考虑到我们是车队积分榜的第二名,考虑到 Jenson 和 Lewis 都与车手积分榜第一位接近,这听起来或许过于自我批评了。但那仅仅是一个事实的反映—— Vodafone McLaren Mercedes 想在任何时候都出色。所以我把这目标当作积极的信号:我们的愿望是改进并剔除错误,使我们变成更强的锦标赛竞争者。没有否认我们的成功—— Jenson 与车队的融合,他在墨尔本的胜利,以及 Lewis  职业生涯中一些最好的驾驶——给了我们赛季初期的鼓励。现在我们希望长期保持在前列的竞争者,并定期夺得有可能的最多积分。这支车队的最佳特质之一就是可观的发展潜力,当前往中国以及后面的欧洲赛季开始时,我们相信我们将成为更难对付的竞争者。”

Nico Rosberg, Mercedes GP
2009 排位赛 – 第7, 2009 正赛 – 第15

“上海赛道是个好赛道,对于车手是个有趣的挑战。两个长直道提供相当好的超车机会,弯角的组合相当棒,尤其是高速段。上海的天气要比前三站冷,而且还很难预测,所以这将是个有趣的周末。中国车迷十分热情,上海是个很棒的城市,我总是享受我们一年一度的到来。与车队上一站在马来西亚实现我第一个杆位真是难以置信,我希望能持续我们一贯的努力,下周在中国取得好成绩。”

Michael Schumacher, Mercedes GP
2009 排位赛 – 无, 2009 正赛 – 无

“对梅塞德斯-奔驰的热情和车迷的支持在中国很强大,所以我们下周在上海面临一场有吸引力的比赛。我自信车迷是不会失望地离开比赛的。我们在马来西亚看起来合情合理,在上海或许事情将再一次在我们的掌控之中。我很期待比赛,也期待再一次完全享受竞争。不可否认地说上两场比赛对我不太幸运,但我充分意识到了原因。我知道F1中事情怎样发展,如果你仔细看两场比赛的详细过程,我觉得一切仍然按计划进行。你只能一步一步改进,我相信我们正在这样做。”

Ross Brawn, Mercedes GP 车队领队

“在马来西亚与 Nico 夺得本赛季的我们的第一个杆位让人很满意,这对车队是个及时的激励,马来西亚还是是我们冠名赞助商 Petronas 的主场。Michael 也有个强大的周末,每场比赛 Michael 越来越快,尽管在墨尔本和雪邦他不能控制的情况限制了他的比赛发挥。在中国,我们希望继续进步,这将尤其对 Michael 有利,他能开一场没有意外的比赛并展示从赛季开始以来的进步。在实际表现层面,车队在最近三站表现很好,在 Nico 马来西亚的比赛做得很棒,创下了赛季中最短的进站之一的记录。除了马来西亚的车轮螺栓问题外,我们的赛车是可靠的,我对车手们的表现很满意。我们得到了一系列与当前赛车速度相符的合理的结果,但我们需要实事求是并承认我们不够快,现在还不足以在前列竞争。显然这不是个让我们高兴的状况,我们正努力工作以缩小差距。”

Norbert Haug, 副董事长, 梅赛德斯·奔驰汽车运动公司

“中国大奖赛从2004年起举办,是F1赛历中最受认可的赛事之一。处于上海城区外的赛道带给赛车、车手和车队很多挑战。有高速弯也有低速弯,还有两个发夹弯,其中的一个接近起止线。对于上海,长期天气预报不能预测下雨的可能性,就像上一站马来西亚一样。无论怎么样,我们会努力得到好成绩并为接下来的比赛一步一步提高我们的技术套件。”

Pedro de la Rosa
2009 排位赛 – 无, 2009 正赛 – 无

“我真的喜欢并享受上海赛道。我最后一次在这里比赛是2006年,我第五名完赛。这个赛道有很长的直道和很好的超车机会。整体来说这个赛道有各种各样的弯角,包括需要大力刹车的发夹弯和通过顺畅的其他弯角。我们正在努力工作提高赛车的表现。还剩下16场比赛,所以不管怎么说赛季还没有结束。对于可靠性我很放松,在马来西亚发生的不幸极了,这不会再次发生。”

Kamui Kobayashi
2009 排位赛 – 无, 2009 正赛 – 无

“在F1中第一次到上海比赛,我感到很兴奋。2008年10月,在GP2亚洲系列赛我度过了一个不错的周末。我从第二位起跑,创造了最快圈速,却在安全车时期差了一点点丢掉了冠军。赛道很棒,大看台让人印象深刻。事实上我喜欢在大直道后的发夹弯前大脚刹车。我感觉在上海我们会很艰难,但我期待着挑战。一般来说,我喜欢在亚洲比赛,日本也不远了,我常常在这里看到比欧洲多的日本同胞。上海也是个令人兴奋的城市,但不幸的是我们不能看太多,因为赛道离市中心太远了。”

James Key, BMW Sauber 技术总监

“我期盼着和车队的第一场比赛。在复活节周末后我来到了 Hinwil 见了好多人。我对正在发生的事情有了个好印象。显然有要做的工作,但车队团队精神和积极性非常高。现在开始显露的是我们需要前进的方向。每个人都努力工作,我们现在正在做未来方向的计划以继续进步。今年我还没去过赛道,看看到底是怎么样、学学轮胎、与车手谈话会是有趣的事。这将是我第一次看到 C29,与 Willy Rampf 近看它并查看细节会很好。就赛道而言,下压力级别与我们经历的前三站相当相似。这是另一个特制的赛道,有一些有趣的特色。有个很长的直道,因此下压力需要妥协。这是一个高抓地力赛道,这意味着或许要把定风翼角度调大一点点。刹车稳定性和牵引力很重要,还有两个蜗牛一样的弯角,车手对此很棘手。我们要看看赛车和轮胎怎么样。我们希望得到最好的结果,我们会努力得到一些积分。”

Hirohide Hamashima, 普利司通赛车轮胎发展总监

“上海国际赛车场对轮胎要求很高。这里侧向力很大,我们预测左前胎会粒化,尤其是由半径增加的二号弯和倾斜度增大的13号弯造成的。这里后台也会出现粒化。今年的轮胎配置比2009年更硬了一些,因为赛车更沉、赛道耗胎。赛道布局意味着中低下压力的调教将会被使用,尽管有两条长直道,但赛道的很大一部分都很弯曲、技术要求高。对于车队和车手,找到正确的调教以充分利用轮胎是个大挑战。去年挑战是天气,雨胎在比赛的大部分时间里被使用。这不是第一次在中国湿地比赛,所以天空将会是这周末的关注焦点。”

终于弄完了,一下午+一晚上,有些地方自己都不太理解,翻译玩一看全是套话。。然后官网又更新了。。不一定加了。
没有校对,自己都没读。。
以后再写出难懂的地方学习学习~

USACO Superprime Rib

这题和昨天那个差不多,DFS找质数即可。
最开始把prime数组开到10000,出现了很怪异的问题:运行完init()会把n归零。。
还学会了用freopen,否则没法再其他地方输出。还是要写fclose的。

/*
ID: djgreen1
LANG: C
PROB: sprime
*/
#include <stdio.h>
#include <stdbool.h>
#include <math.h>
 
bool prime[10001];
int num[10000],sum;
int n;
void init()
{
	int i,j;
	memset(prime,true,sizeof(prime));
	for (i=2;i<100;i++)
	{
		if (prime[i])
			for (j=2;j<=10000/i;j++) prime[i*j]=false;
	}
	j=0;
	for (i=2;i<10000;i++)
		if (prime[i])
		{
			j++;
			num[j]=i;
		}
	sum=j;
}
bool isprime(long a)
{
	int i;
	for (i=1;i<=sum;i++)
	{
		if (num[i]>sqrt(a)) return true;
		if (a%num[i]==0) return false;
	}
	return true;
}
void search(long a,int depth)
{
	long temp;
	int i;
 
	if (depth==n)
	{
		printf("%ld\n",a);
		return;
	}
	for (i=1;i<10;i+=2)
	{
		temp=a*10+i;
		if (isprime(temp)) search(temp,depth+1);
	}
}
int main()
{
	freopen("sprime.in", "r", stdin);
	freopen("sprime.out", "w", stdout);
 
	scanf("%d",&n);
	init();
	search(2,1);
	search(3,1);
	search(5,1);
	search(7,1);
	fclose(stdin);
	fclose(stdout);
}