NOIP2007 初赛赛后总结

黎明杀稽

错误题号

选择题:

2,5,9,12,13,20

第二题

  这道题完全是道常识题。然而……我不知道……答案是E,二维表。

第五题

  这道题的关键是^的优先级高于|,因此先计算^。运算符优先级

第九题

  这道题是一道图论题,对于D有如下反例,这题我完全靠懵
  反例

第十二题

  漏了一个选项,还是不够细心

第十三题

  算错了ORZ!!!都是不该失的分。

第二十题

  玄学常识题

问题求解

  全错……全错……全错……
  很强

第一题

  鬼知道这是DP。。。
  搞事
  定义S(n,m)是前n个球放在m个盒子里且没有空盒的方案。
  转移的方程:S(n,m)=S(n-1,m)*m+S(n-1,m-1).考虑第i个放置位置,如果当前m个都不是空的,i可以放在m个中的任意一个位置,如果第m号是空的,那么i只能放在第m号上。
  这道题我第一反应是组合!然后发现错的一塌糊涂。如果有能够递推的方法,就尝试着用递推来做,而且……正确性显然!!!!

第二题

  这道题啊,我也不想说什么了,很难受,找规律没找出来,我模拟半天没模拟出来,后来才发现不对,但时间就剩一点了,很无奈。

程序阅读

  前两题,一道是强搞,一道是指针,全都错了,不过第三题和第四题的堆写出来了,还是小有成就的,可惜,没什么用,最基本的第一题都错了,很伤。

第二题

  首先,应该知道x,y分别代表a,b的地址,fun函数的功能是交换两个地址。指针交换地址,值是不变的ORZ。

程序完善

  主要还是没有时间了,看半天,看不懂,浑身难受。最后只能把能想到的都写上去了。其实还是策略出了点问题,第一步不应该是看代码,而是想一想自己碰到这个问题会怎么做,顺便可以带一点小数据算一下。

第一题

  第一个空显然不能错啊ORZ,乘号打成x,这种低级错误千万不能再犯了。后两个空一个是规律没找对,太急了,另一个又是大意了,应该倒序输出的,结果我正序输出了。都是低级错误堆起来的啊。

第二题

  看!不!懂!
  黑人问号
  1.backtrace函数就是爆搜找到最优解,i是还未确定面值的一层,i-1是已经确定面值的一层,先用i-1去更新y数组,即达到k这个值用的最小的邮票数。当前数的范围在[0,x[i-2]×(m-1)]中,因为还未使用x[i-1],且至少有一张要用作x[i-1].因此最大值是X[i-2]×(m-1);
  2.3两个空的答案都是j+x[i-1]×k.利用dp的思想,更新y数组。表示原来的数是j,用k张y数组,数变为j+x[i-1]×k时的最小邮票数量。
  4.答案:r-1.r是用当前邮票不能达到的最小的总值。
  5.答案:x[i-1]+1.因为邮票的面值是按照下标递增的,所以下一个至少会比上一个大1.
  6.backtrace(i+1,r).当前层确定好之后,去下一层。

总结

  这次很不理想,不过也习惯了,也不是第一次了,这些小错误都要及时去除,争取一次过初赛!!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: NOIP(全国信息学奥林匹克联赛,National Olympiad in Informatics in Provinces)是中国的一项计算机编程竞赛,分为普及和提高。2007年的NOIP普及初赛试题是一道编程题。 此题要求编写一个程序,统计一个给定整数的位数,并输出结果。例如,给定数字156,程序应输出3,因为156有3位数字。 解决这个问题的一种方法是,将给定数字转换为字符串,并计算字符串的长度。具体做法如下: 1. 首先,从输入中接收一个整数。 2. 将整数转换为字符串,可以使用内置的str()函数,它可以将整数转换为字符串类型。 3. 使用内置的len()函数获取字符串的长度。 4. 输出字符串的长度,即该数字的位数。 以下是一个简单的示例代码: ``` num = int(input("请输入一个整数:")) # 接收一个整数 num_str = str(num) # 转换为字符串 count = len(num_str) # 获取字符串长度 print("该数字的位数为:" + str(count)) # 输出结果 ``` 这段代码首先接收一个整数,然后将它转换为字符串。接着,通过使用len()函数获取字符串的长度,并将结果输出。 总结来说,2007年NOIP普及初赛试题要求编写一个程序,统计给定整数的位数。我们可以将整数转换为字符串,然后使用len()函数获取字符串的长度,即得到该数字的位数。以上是一个简单示例代码,实现了该功能。 ### 回答2: NOI(全国青少年信息学奥林匹克竞赛)是中国举办的一项重要的计算机竞赛,包括高级普及两个级别。而NOIP 2007普及初赛试题是该比赛中一道典型的问题。以下是对这个试题的300字中文回答: NOIP 2007普及初赛试题要求我们计算一个数的阶乘结果中末尾0的个数。阶乘,即一个数的所有正整数的乘积。题目给出了一个整数N,要求计算N的阶乘结果末尾0的个数。 我们可以观察到,N的阶乘结果末尾零的个数,取决于N中因子5的个数。因为每枚一次因子5,就会多一个末尾零。通过这个规律,我们可以将问题转化为计算N中因子5的个数。 首先,我们从1到N遍历每个数,看其是否能被5整除,如果可以,则计数器加一,代表多了一个因子5。接着继续判断当前数是否能被5整除,重复上述操作,直到当前数不能被5整除为止。最终,计数器的值就代表了N的阶乘结果中末尾0的个数。 通过这种方法,我们可以在O(logN)的时间复杂度内求得结果。值得注意的是,如果N特别大,超出了整型数所能表示的范围,需要使用更大的数据类型来存储结果。 总而言之,NOIP 2007普及初赛试题通过计算一个数的阶乘结果中末尾0的个数,考察了我们对数学规律的理解和代码的实现能力。我们可以通过观察规律,将问题转化为计算因子5的个数,并在较低的时间复杂度内求解。这是一个典型的数学问题,需要我们在解决过程中运用数学思维和编程技巧。 ### 回答3: noip 2007 普及初赛试题是全国信息学奥林匹克竞赛的一份初级试题,旨在考查学生在计算机编程和算法方面的基本能力。 该试题包含多个题目,其中一个例题是求最大公约数。该题要求给定两个正整数A和B,计算它们的最大公约数。最大公约数是指能够同时整除A和B的最大正整数。 解答这个问题的一种常见算法是欧几里德算法。该算法的基本思想是通过连续进行取模运算,将较大的数变成较小的数,直到整除为止。具体步骤如下: 1. 如果A能够整除B,则B就是最大公约数; 2. 否则,将B取模A,得到的余数记为R; 3. 将A赋值为原来的B,将B赋值为原来的R; 4. 重复步骤1和步骤2,直到B能够整除A为止。 通过使用欧几里德算法,可以快速地求出A和B的最大公约数。 除了求最大公约数之外,试题还包含其他题目,如字符串处理、排序算法、简单的图论等。这些题目旨在考察学生的编程能力、算法设计和实现能力。 参加noip 2007 普及初赛试题的考生需要具备一定的编程基础知识和算法理解能力。通过解答这些问题,学生不仅可以提高自己的编程技能,还可以锻炼自己的逻辑思维和问题解决能力。 参加noip 2007 普及初赛试题的考生需要认真学习相关的编程知识和算法理论,多进行编程练习和模拟考试,提升自己的编程水平和应试能力,为将来参加更高级别的信息学竞赛做好准备。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值