标题:[全民编程]76道高难度C++练习题.含NOI竞赛题.欢迎挑战
只看楼主
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 
34题简单分析下好了

规则A:
保证留给对方的棋子数为(k+1)*n

规则B:
留下(k+1)*n+1

后拿棋子的就非常被动了

2007-07-05 15:29
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 

HJin第37题的解答也太复杂了
最大应该是M%N个m/n+1,剩余全部是m/n


2007-07-05 17:38
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
得分:0 
以下是引用smartwind在2007-7-5 17:38:02的发言:

HJin第37题的解答也太复杂了
最大应该是M%N个m/n+1,剩余全部是m/n

Very good answer. +1


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-07-05 18:18
HJin
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:401
专家分:0
注 册:2007-6-9
得分:0 
以下是引用smartwind在2007-7-5 15:08:19的发言:

31题:
解答说明:
甲只要保证第一次取完后留给乙的棋子数是2的n次方,且大于所取走的棋子数就必胜
因此,如果开始的棋子数是2的n次方,则甲无必胜方法
下面的程序演示了甲的策略,(程序包含了出错处理,所以比较长

I arrived at the idea of 2^n. Another observation is:

If at any given time, A is choosing from odd number of stones, A wins. A simply picks 1 stone at that time.

I did not really read your program,


请输入不大于100000的正整数,输入0退出
16
非必胜
我取走10 剩余:6
请问你取走多少个?
2
你取走2 剩余:4
我取走2 剩余:2
请问你取走多少个?
2
你取走2 剩余:0
你胜利了!
Press any key to continue . . .

but here is my thought: you may simulate the moves of B randomly (still following the rules, though). Or when B is choosing from 2^n or odd number of stones, let B use best strategy.

Good work!

[此贴子已经被作者于2007-7-5 19:00:31编辑过]


I am working on a system which has no Chinese input. Please don\'t blame me for typing English.
2007-07-05 18:29
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 

if(t==n)
{
if(k==0)
cout<<\"非必胜\"<<endl;
t=n/2-2; //此处改成+2
}

这样就不会出现拿走超过一半棋子的情况了
或者改成一个随机数

2007-07-06 08:58
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 
第41题链表规并算法,其余部分zkkpkk已经写了,就不重复了

void link(NODE* p,NODE* q)
{
NODE* r;
while(p!=NULL&&q!=NULL)
{
r=p->next;
p->next=q;
p=r;
r=q->next;
if(p!=NULL)
q->next=p;
q=r;
}
}

2007-07-06 09:05
zkkpkk
Rank: 2
等 级:论坛游民
威 望:5
帖 子:489
专家分:28
注 册:2006-6-17
得分:0 
以下是引用smartwind在2007-7-6 9:05:00的发言:
第41题链表规并算法,其余部分zkkpkk已经写了,就不重复了

void link(NODE* p,NODE* q)
{
NODE* r;
while(p!=NULL&&q!=NULL)
{
r=p->next;
p->next=q;
p=r;
r=q->next;
if(p!=NULL)
q->next=p;
q=r;
}
}

呵呵,多谢改进,那是我老早以前写的了,现在翻出来的,其实3个指针是够了,但是貌似你忘记了A表,B表不等长时对余出部分的处理,还有我的那个43题多项式的乘法我觉得运算后应该检查合并同类项的我没有做,我要走了,最后一灌,11点左右的车,88!


Viva,espana!
2007-07-06 09:56
ichigo
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2007-5-27
得分:0 
谁帮我找点简单的题...或者从这里边选道简单的...
2007-07-06 15:00
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
得分:0 
以下是引用zkkpkk在2007-7-6 9:56:18的发言:

呵呵,多谢改进,那是我老早以前写的了,现在翻出来的,其实3个指针是够了,但是貌似你忘记了A表,B表不等长时对余出部分的处理,还有我的那个43题多项式的乘法我觉得运算后应该检查合并同类项的我没有做,我要走了,最后一灌,11点左右的车,88!

已经作了处理


2007-07-06 16:58
野比
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:1627
专家分:516
注 册:2007-5-24
得分:0 
以下是引用allen303alle在2007-7-5 14:29:28的发言:
才发现这个帖子哈,暑假有空做下看,请问这里的人是大学生多还是高中生多啊

这么找NOI的题呢?ACM的似乎更合适哈~~~

这个嘛...多种原因..
1. 我找到的这份习题就只有NOI的...
2. 考虑到有不少朋友都是才接触C++不久(半年,1年多?).....不要搞那么难
3. 考虑到有不少朋友平时学业, 工作都很忙..没有多少时间.不要搞那么难
4. 考虑到NOI的题比较具体形象..难度又不算太高..开发智力练习编程正好...

欢迎整理一份ACM的题目出来..大家研究研究


女侠,约吗?
2007-07-06 21:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-147967-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.205328 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved