noip2000提高组题解

事实再次向我证明了RP的重要性。。。

第一题:进制转换

是我最没有把握AC的一道题目却是我唯一一道AC的题目,真是讽刺。看完题目几乎完全没有往正常的解法(取余倒序)去想,直接写了搜索,因为数据范围在2^16,感觉枚举每一位上的数应该就够了,但是在自己的电脑上连样例都用了3、4s,然后想不到任何有效的剪枝,就果断放弃了。最后写完其他三题之后还是回过头看了下这道题,还是没往正常的解法想。。。。结果惊人地AC了。。。RP真的太重要了。

然后经提醒终于想到了正常一点的解法,查了网上的题解之后开始自己写取余,结果犯了一个很逗的错误。。。关于负数的整除取余,C++是无法得到正确的答案的,需要进行处理。比如(-15)÷(-2),在C++里得到的是7...-1,而正确答案应该是8...1,然后。。我就很想当然地给余数加了个绝对值。。真是不能逗比更多。

事实上,当a和b都是负数时,假设a÷b=c...d是实际情况,而计算机得到的应该是a÷b=(c-1)...(d-b),所以应该对所得的商加上1,对所得余数加上b。

第二题:最大乘积

动规。f(i,j)表示在前i个数字中插入j个乘号。

f(i,j)=f(i-k,j-1)+s(i-k+1,i)

s(i,j)表示截取该数字从i到j的子串。

因为循环的边界写错所以WA了几次。

第三题:单词接龙

否决了动规,直接用搜索。对于两个字符串之间预处理他们拼接后字符串长度的增加量。然后深搜。

对于出题人的语文水平真的无力吐槽,歧义太多。首先,题目说“相邻的两部分不能存在包含关系,例如at和atide间不能相连“,这里可以有两种理解:1.相邻的两个字符串不能有包含关系 2.相邻的两个字符串拼接后的长度不能不发生变化,即at和atide这个例子。更坑爹的是一个字符串居然可以与自己相连!按照正常的思维,一个字符串当然是自己的子串了。于是WA了几次。但事实上样例的Hint里出现了tact+tact=tactact的结构,所以只能怪自己题目没看清。。。还有就是,ababa+ababa=ababababa。。。题目应该明确指出重叠部分应尽量小啊!做完此题RP已尽。。。

第四题:方格取数

在杭州讲过的动规,结果还是WA了。。。不能感动更多。。。

理解成两个人同时走,用f(i,j,k)表示两人都走了i步,且两人的横坐标为j和k。

但是弄错了一点:j并非不能等于k,只是j=k时两人相遇的格子上的数只能由一个人取得。

f(i,j,k)=max(f(i-1,j-1,k),f(i-1,j,k-1),f(i-1,j-1,k-1),f(i-1,j,k))+两人各自所在格点的数字

第一次提交时280分感动地滚粗。

noip2000提高组题解

时间: 2024-10-25 07:34:24

noip2000提高组题解的相关文章

noip2004提高组题解

这次有两道题以前已经做过了,所以分数什么的也没有意义了.发现这年的难度设置极不靠谱,前三题都比较简单,最后一题太难,不知道出题人怎么想的. 第一题:储蓄计划 模拟. 第二题:合并果子 贪心.每次选最小的两堆合并. 第三题:合唱队形 两次动规.题目可以转化为找出一个人,使得以他为尾的最长上升子序列的长度最大,并且以他为首的最长下降子序列的长度也最大. 第四题:虫食算 马上想到搜索.但是规模太大,N可能有26位,如果简单枚举那么运算次数是26!≍4e27:剪枝方面只想到一个很弱的剪枝(对于26的规模

[NOIP2000] 提高组 洛谷P1017 进制转换

题目描述 我们可以用这样的方式来表示一个十进制数: 将每个阿拉伯数字乘以一个以该数字所处位置的(值减1)为指数,以10为底数的幂之和的形式.例如:123可表示为 1*10^2+2*10^1+3*10^0这样的形式. 与之相似的,对二进制数来说,也可表示成每个二进制数码乘以一个以该数字所处位置的(值-1)为指数,以2为底数的幂之和的形式.一般说来,任何一个正整数R或一个负整数-R都可以被选来作为一个数制系统的基数.如果是以R或-R为基数,则需要用到的数码为 0,1,....R-1.例如,当R=7时

noip2003提高组题解

这一年的前三题虽然难度不高,但是第二题极为繁琐,想在考场上用较短的时间拿到第二题的分数难上加难.所以必须要调整策略,争取拿其他三题的分数.第四题是比较普通的搜索题,分数比较好拿,但是很容易想成树形DP,就只能拿30~50分. ? 第一题:神经网络 模拟 有几个注意点: 输入层(即第一层)的结点的U(阈值)是没有用的: 题目说输出「最后状态非零的输出层神经元状态」,但实际上输出的是状态大于0的值. 由于没有注意到神经元只有在兴奋状态时才会向下传送信号,所以WA了1次. ? 第二题:侦探推理 模拟+

[NOIP2000] 提高组 洛谷P1018 乘积最大

题目描述 今年是国际数学联盟确定的“2000――世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加.活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字串,要求选手使用K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大. 同时,为了帮助选手能够正确理解题意,主持人还举了如下的一个例子: 有一个数字串:312, 当N=3,K=1时会有以下两

NOIP 2014 提高组 题解

NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法,直接模拟,别读错题. 1 int wn[5][5]={{2,0,1,1,0}, 2 {1,2,0,1,0}, 3 {0,1,2,0,1}, 4 {0,0,1,2,1}, 5 {1,1,0,0,2}}; 6 7 int n,na,nb; 8 int a[222],b[222]; 9 int s1,s

noip2010提高组题解

NOIP2010提高组题解 T1:机器翻译 题目大意:顺序输入n个数,有一个队列容量为m,遇到未出现元素入队,求入队次数. AC做法:直接开1000的队列模拟过程. T2:乌龟棋 题目大意:有长度为n的棋盘,每个格子对应一个分数,1,2,3,4的卡片共m张,给出四种卡片各自的数量,求改变出牌顺序能获得的最大分数. 思路:开了一个四维的f[i][j][k][l]来表示每张牌有了几张时的最大分数: F[i][j][k][l]=max(f[i-1][j][k][l],f[i][j-1][k][l],f

[NOIP2000] 提高组 洛谷P1019 单词接龙

题目描述 单词接龙是一个与我们经常玩的成语接龙相类似的游戏,现在我们已知一组单词,且给定一个开头的字母,要求出以这个字母开头的最长的“龙”(每个单词都最多在“龙”中出现两次),在两个单词相连时,其重合部分合为一部分,例如 beast和astonish,如果接成一条龙则变为beastonish,另外相邻的两部分不能存在包含关系,例如at 和 atide 间不能相连. 输入输出格式 输入格式: 输入的第一行为一个单独的整数n (n<=20)表示单词数,以下n 行每行有一个单词,输入的最后一行为一个单

NOIP2007 提高组 题解

2007 提高组题解 第一题 一开始还想是不是要用哈希表储存呢,但仔细想了一会儿,那个数据量20W 用个快排序,时间是能过的.所以这道题用个STL的快排,再一个循环统计个数就OK了.但最后交上去评测时0分,很尴尬.就是我在数据初始化时从一开始计数,我循环又从一开始,你懂的,多算了一次,爆掉了.改了就100了.200W的话数据就很强了,用哈希好一些. 第二题 额,写得很快,果然这种无脑模拟题最适合我了.但自信没检查,带了3组给的数据就走了.果然错了,过了4个点好像.主要是题没读完,没有判断处于字母

noip2009提高组题解

第一题:潜伏者 模拟 注意点: 不同的密文对应的明文不同,反过来,不同的明文对应的密文也不同,我用了两个hash表来实现: 26个明文字母必须有对应的密文字母,我用了两个计数变量来判断是否26个字母都有匹配. ? 第二题:Hankson的趣味题 数论 对 a0, a1, b0, b1 四个数进行质因数分解,然后确定 x 的各质因数的指数的取值范围,运用乘法原理解决.详细分析见下: (引用自http://wenwen.sogou.com/z/q169562042.htm) Gcd(x,a0)=a1