摘要: 一般的木杆与蚂蚁问题在前面的1025中已经讲过了,此题中的依次掉下木杆的蚂蚁花费的时间可以同理求出,再用一个数组进行保存就可以了,而这个题较难的就是对依次掉下木杆的蚂蚁名字进行输出。首先,我们明确:依次掉下木杆的蚂蚁掉落方向方向可以记录(这在前面求时间的过程中可以完成),然后,我们明白,第一只从左边掉落的蚂蚁一定是一开始在最左边的蚂蚁,右边同理,也就是说,某一时刻从左边掉落的蚂蚁一定是当前最左边的蚂蚁。而自始至终所有蚂蚁的相对位置都不会改变。这样想,处理就非常简单了。将蚂蚁的名字放到一个队列中,根据蚂蚁依次掉落的方向对蚂蚁的名字输出并从相应方向出队!提示:蚂蚁依次掉落的方向可以用时间的正负进行 阅读全文
posted @ 2011-04-16 23:11 nightstaker 阅读(831) 评论(0) 推荐(1) 编辑
摘要: 经典的蚂蚁爬木杆问题!其关键就是:两人相遇之后,如果均往回走,相当于两人继续往前走,只是身份交换而已。而在这道题目中,不需要处理他们的身份信息,所以,他们是否回头可以忽略,都看作是一直朝前走,这样,对结果产生影响的就只有他们的位置与方向(即他们离出口的距离),而性别则成为了一个无关因素,所求最后时间即是最远距离所对应的时间,路程总和即是他们离出口的距离总和! 阅读全文
posted @ 2011-04-16 22:37 nightstaker 阅读(410) 评论(0) 推荐(0) 编辑
摘要: 经典01背包问题,01问题在前面的1298中已经有了详解,本题的状态转移方程为:if(j-a[i]>=0&&dp[i-1][j]<dp[i-1][j-a[i]])dp[i][j]=dp[i-1][j];else dp[i][j]=j-a[i]<0 ? (dp[i-1][j]>4?dp[i-1][j]-a[i]:dp[i-1][j]) : dp[i-1][j-a[i]];式中 i 表示第 i 种菜,j 表示未对第 i 种菜决策前所余下的钱,当然,这一切都是在j>=5时成立,当j<5时,dp[i][j]=j。呵呵!这里给的方程太详尽了!基本就是答 阅读全文
posted @ 2011-04-16 22:23 nightstaker 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 经典01背包问题,没有什么陷阱,唯一要求就是要优化空间复杂度!下面是关于01背包的讲解: 01背包问题是最基础的背包问题,特点是:每种物品仅有一件,可以选择放或不放。用子问题定义状态:即f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}这个方程非常重要,基本上所有跟背包相关的问题的方程都是由它衍生出来的。所以有必要将它详细解释一下:“将前i件物品放入容量为v的背包中”这个子问题,若只考虑第i件物品的策略(放或不放),那么就可以转化为一个只牵扯前i-1件物品的问题。如果 阅读全文
posted @ 2011-04-16 21:28 nightstaker 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 这个题呀!有点无语,被卡了很久!看了一下Board——27/956,有点凄惨,可能这种就是最打击人的题目吧!其实这道题是一道不折不扣的水题,唯一需要注意的就是:文章可能会包括空行!!!你考虑到了吗? 阅读全文
posted @ 2011-04-16 21:26 nightstaker 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 1006 - 遮挡判断(shadow)这个题也比较容易。首先,要找到解题方法:要求有多少柱子没有被遮挡,就要判断每根柱子是否被前面的柱子遮挡,由题意可知:第 i 根柱子没有被遮挡的条件是前面每一根柱子与阳光所构成的三角形斜边在这一坐标上的高度小于第 i 根柱子的高度,而实质上,我们检索被第 i 根柱子遮挡住的柱子要容易得多,凡是在它后面高度低于它与阳光所构成的三角形斜边的柱子就不需要处理了。好了,这个我就不多说了,很容易明白的。而这个题首先要做的就是将每一根柱子按坐标排序,然后处理就行了。至于排序,这个题对刚学C语言的同学来说,是有些难度的,但对学C++的同学来说,却非常简单。下面附上两种AC 阅读全文
posted @ 2011-04-16 21:25 nightstaker 阅读(377) 评论(0) 推荐(0) 编辑
摘要: 1005 点球大战This is also a simple problem. But what you should care is that you may need to judge each string from its tail. because the name of the players may have some trouble in your programming. what's more,you should be careful of the form of output !Ok, next come the AC code! you canrefer to 阅读全文
posted @ 2011-04-16 21:18 nightstaker 阅读(270) 评论(0) 推荐(1) 编辑
摘要: 1001 DotNotationThis is an easy problem. It's just aim to practicestring manipulation, The most important thing is that you should remember thatthe chars in the string of given input is not only "0123456789"、"+ - * /"、"." ,thereare alsosome other chars that you may 阅读全文
posted @ 2011-04-16 21:16 nightstaker 阅读(454) 评论(1) 推荐(0) 编辑
摘要: 1003 真实的谎言这是一个非常有趣的题目,题目描述很简练,但却卡住了很多人。其实,这个题并不难,也没有什么需要注意的地方,只要有了思路,基本就正确了。但是,切忌一一枚举,这样的结果只有一个——TLE。不过只要有了枚举这个想法,在适当思考,加以优化,基本就能AC了。首先,我们来说下暴力枚举的思路:定义一个结构体保存输入,输入完成后,执行bool flag=0;for(int i=n-1;i>=0;i--){ int ans=0; for(int j=0;j<n;j++) if(a[j].min<=i && a[j].max>=i) count++; if 阅读全文
posted @ 2011-04-16 21:13 nightstaker 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 本人只是一个UESTC的ACM新手,感慨于从刚开始学编程到如今所经历的艰辛,故决定为咱们的CDOJ写上一些解题思路,以便帮助刚学编程的新手们!(注意:本版内容只为在同学们实在无能为力时提供帮助,增加大家对ACM的兴趣,也为了提高咱们CDOJ的活跃度,请大家不要在这里拷贝代码提交,此处代码仅供参考!!! 阅读全文
posted @ 2011-04-16 21:09 nightstaker 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 1002 - 解救小Q简单搜索题,求最短路径,优先使用 BFS ,唯一需要注意的地方就是传送阵,传送阵联通的两点的深度一致。为了避免在搜索中寻找传送阵,我们可以在输入过程中,对传送阵两点进行关联。搜索过程中,若遇见传送阵,我们只需把与这一传送阵的另一端入队即可,而当前搜索遇到的这一端无需入队。下面附上AC代码以及注释,希望能帮助到大家:View Code 1 #include<iostream> 2 using namespace std; 3 int vis[51][51],ans,n,m,dx[4]={-1,0,1,0},dy[5]={0,1,0,-1}; 4 struct t 阅读全文
posted @ 2011-04-16 21:06 nightstaker 阅读(477) 评论(2) 推荐(1) 编辑
摘要: 1002 - 解救小Q简单搜索题,求最短路径,优先使用 BFS ,唯一需要注意的地方就是传送阵,传送阵联通的两点的深度一致。为了避免在搜索中寻找传送阵,我们可以在输入过程中,对传送阵两点进行关联。搜索过程中,若遇见传送阵,我们只需把与这一传送阵的另一端入队即可,而当前搜索遇到的这一端无需入队。下面附上AC代码以及注释,希望能帮助到大家:View Code 1 #include<iostream> 2 using namespace std; 3 int vis[51][51],ans,n,m,dx[4]={-1,0,1,0},dy[5]={0,1,0,-1}; 4 struct t 阅读全文
posted @ 2011-04-16 21:02 nightstaker 阅读(225) 评论(0) 推荐(0) 编辑