摘要: 几天前我在我空间里写过,这里,我觉得需要完善一下:这里以NOIP2011普及组第四题为例:为什么选择这题呢,因为我在NOIP2011惜败!至今都忘不了我这题爆0!http://www.rqnoj.cn/Problem_663.html还有一题 计算练习:http://www.rqnoj.cn/Problem_307.html话说写错一个数字才导致有两点进入死循环。。其实,我觉得难度最大的在于模拟,它考察选手的编程实现功底,模拟最难的在于字符串处理。像这样的题目其实就是处理我们平常书写的计算式,如“3+8*(4-2)”。而处理的难点在于优先级的运算和层层括号嵌套的麻烦。因此,我们必须利用递归来解 阅读全文
posted @ 2013-08-10 14:25 use_nature 阅读(1848) 评论(0) 推荐(0)
摘要: 优先级运算符名称或含义使用形式结合方向说明1[]数组下标数组名[常量表达式]左到右()圆括号(表达式)/函数名(形参表).成员选择(对象)对象.成员名->成员选择(指针)对象指针->成员名2-负号运算符-表达式右到左单目运算符(类型)强制类型转换(数据类型)表达式++自增运算符++变量名/变量名++单目运算符--自减运算符--变量名/变量名--单目运算符*取值运算符*指针变量单目运算符&取地址运算符&变量名单目运算符!逻辑非运算符!表达式单目运算符~按位取反运算符~表达式单目运算符sizeof长度运算符sizeof(表达式)3/除表达式/表达式左到右双目运算符*乘表 阅读全文
posted @ 2013-07-14 11:10 use_nature 阅读(218) 评论(0) 推荐(0)
摘要: 这题说白了也就是田忌赛马问题。解决方法有很多,以贪心最为常见,除此之外还可以用DP解决,甚至于二分图爆搜……这里我就不说了,DP好说,二分图实在不会… 网上对于这个问题的讨论已经举不胜数了。那么我在下面讲一下我觉得需要注意的地方。 首先介绍一下最为简单的贪心方法,只需记住三句话:如果田忌最快的马比齐王最快的马快,则进行一轮比赛。如果田忌最慢的马比齐王最慢的马快,则进行一轮比赛。其他情况,一律用田忌最慢的马比齐王最快的马。下面说一下我最开始的思维漏洞。 刚开始我以为只要枚举齐王的从快到慢的马,而田忌只需要从两边取马来进行对战就可以了,不过后来发现这种想法有反例: 田忌的马:5 3 齐王的马:5 阅读全文
posted @ 2013-07-08 16:00 use_nature 阅读(230) 评论(0) 推荐(0)
摘要: 这个问题我们可以用漂亮的递归来完成。 这个九连环我其实玩过……所以对这个题目理解的比较透彻…… 首先,要套上第i个环(假如我们设第一个环为可自由移动的环),前提条件是第i-1个环已经被套上,且1…i-2上的环全部卸下。 假如我们设第i个环被套上,同时1…i-1的环全部卸下所需要的步数为s[i]由前提条件不难得到:s[i]=2*s[i-1]+1这是因为套上和卸下是一个相逆的过程,这样所需要的步数会相等。如果我们要让第i个环被套上,首先要第i-1个环套上,故先加上s[i-1],然后把第i个环套上,再加1,然后把第i-1个环卸下,需要s[i-1],故总代价为s[i-1]*2+1。从而使其变成00…. 阅读全文
posted @ 2013-06-28 23:47 use_nature 阅读(189) 评论(0) 推荐(0)
摘要: 题目链接:http://www.rqnoj.cn/Problem_624.html 显然,这是一个典型的背包问题。乍一看上去像分组背包,但其实它应该属于背包问题的一个变形。 问题等价于:将一群物品分为k组,要求每组至少选一个且每个物品只有一个。在背包容量有限的情况下,求如何选择物品,使得物品的总价值最大。 可以看出,我们明显多出一维状态:第多少组。 我们不妨先将其按照组别排序,然后按照组的顺序来操作。 然后可设s[i][j]表示前i组都至少选一个,代价为j得到的最大值。 于是,有如下转移方程: s[i][j]=max(s[i][j],s[i][j-b]+c); s[i][j]=max(s[i] 阅读全文
posted @ 2013-06-22 14:51 use_nature 阅读(197) 评论(0) 推荐(0)