设为首页收藏本站喵玉殿官方微博

 找回密码
 少女注册中
搜索
查看: 4252|回复: 11

看算法看到恶心了……

  [复制链接]
发表于 2014-3-22 22:35:37 | 显示全部楼层 |阅读模式
今天听说了POJ这个著名的国内计算机试题网站,然后跑去看题目试试水……:
http://poj.openjudge.cn/practice/R5F/
一开始选了这题试做,做了半天,虽然有了大概的思路但是很多细节不会处理(用什么数据结构存储数据,用什么输入数据——那边已经有好几个上交的答案time out的情况了)……
顿觉这题难度太高,换个题目:
http://poj.openjudge.cn/practice/1009/
这个看起来答题成功率不错的样子?于是开始做……
等等……)尼玛咧我为什么看不懂这题目的输出格式?没奈何,只好去查了半天其他人的答案……
搞半天才弄清楚输出的矩阵横向为背包容量变化,纵向为丢失的物品,内容为放进背包的物品组合可能数量……ok?好像能做了?
不过再等等……这个“放进背包的物品组合可能性”要如何计算啊?那些答案在这方面也都含糊其辞的……啃了半天代码,无法理解啊无法理解……尼玛这玩我呢?!(掀桌
(现状:已然燃尽,化为灰灰了……
发表于 2014-3-22 23:17:06 | 显示全部楼层
矩阵简直sxbk

我正在啃C,还有一周就要考试了,看怎么个作死
回复

使用道具 举报

发表于 2014-3-22 23:40:17 | 显示全部楼层
算法是什么?我表示已被算法设计课虐的不能自理
回复

使用道具 举报

发表于 2014-3-22 23:52:32 | 显示全部楼层
本帖最后由 冰冻西瓜 于 2014-3-25 22:39 编辑

作为曾经的信息学竞赛选手,现在的圈外人士讲一下思路。。
第一题:做法很复杂,我自己不保证写得出来!!
首先按操作分治,写个函数solve(l,r)表示处理第l到第r个操作。那么先分治成solve(l,mid)和solve(mid+1,r),然后我们就只要考虑l~mid中的加点操作对mid+1~r的询问操作所产生的影响。这样就把问题转化成了离线的:已知若干个点和若干个多边形,问每个多边形中包含了多少点。
首先,对于点在边上的情况不太好搞,特判掉。然后我们发现多边形不太好做,就用竖直线剖成若干个纵向的梯形来做,并保证梯形的个数跟多边形点数是一个级别的。(这一步不太好搞,但是是一个经典的梯形剖分算法,代码实现较为复杂,我自己也没尝试过。)后来想了一想不用这么麻烦,我们只要知道对于每条横向或者斜向线段,是它的上方在多边形内部还是下方在多边形内部,也就相当于求出当前这条线段上方有奇数条还是偶数条线段,这个还是比较好做的。
进一步,还可以把求梯形中点的个数问题转化为给定一条线段,求横坐标在这条线段的横坐标范围内且在这条线段下方的点的个数问题。如果这条线段是平行于x轴的话直接用树状数组解决,否则如果是45度角就通过坐标变换变成平行于x轴的情况解决。

第二题:按照经典的动态规划思路,f[j]代表第1~i个物品凑出质量j的方案总数。那么缺第i个物品,凑出质量j的方案数就等于所有凑出质量j的方案数减去必须放入第i个物品凑出质量j的方案数,后者也等于不放入第i个物品凑出质量j-w的方案数。得到递推公式:count[j]=f[n][j]-count[j-w]。
(很久没做题智商真的掉了好多,第二题这种当年可以秒掉的现在还是感觉有些压力!!)

点评

方案数就用跟传统背包类似的方法,不过传统背包的取最大值换成求和。那个答案和我的思路是一样的。  发表于 2014-3-25 22:39
反正我对我搜到的那个答案:dp[j] = (dp[j] + dp[j - nums[i]])%10;dp2[j] = ((dp[j] - dp2[j - nums[i]])%10 + 10)%10;根本没看懂……求算法解释。  发表于 2014-3-25 21:04
话说,第二题,输入的物品体积要怎么遍历出方案数量来?  发表于 2014-3-25 20:25
回复

使用道具 举报

 楼主| 发表于 2014-3-23 00:01:32 | 显示全部楼层
本帖最后由 阿本 于 2014-3-23 00:04 编辑

其实我主要想吐槽的是……尼玛这些“砖家叫兽”只会出题不会教人怎么做题吗?!这也就罢了,怎么连题目都不会好好说明啊?!都该给我滚回中学重读语文去!!!
回复

使用道具 举报

发表于 2014-3-23 00:04:16 | 显示全部楼层
尼玛。你说的这些是什么
每个字我都认识连在一起这是什么玩意儿
跟我做法语阅读一个赶脚啊,哭了
回复

使用道具 举报

发表于 2014-3-23 00:04:49 | 显示全部楼层
阿本 发表于 2014-3-23 00:01
其实我主要想吐槽的是……尼玛这些“砖家叫兽”只会出题不会教人怎么做题吗?!这也就罢了,怎么连题 ...

教人做题不是这种题库网站干的事,基本得靠自己google积累。。然后作为一个有几千道题的网站,题目质量不可能都非常高。。最后第二题题目我看了没有问题。。

点评

那是我没做过这种题目孤陋寡闻了……  发表于 2014-3-23 09:50
很基本的数学表达方式吧。而且知道算法的都能看出来这就是背包问题啊,而且还是简化版。  发表于 2014-3-23 00:20
没有问题,count(i, x)的定义很清楚了,把它列成一个表格输出也是很清楚的事。  发表于 2014-3-23 00:16
那你说你不看答案你能看得懂那题目要求你给出的矩阵是怎么排列的吗?!  发表于 2014-3-23 00:06
回复

使用道具 举报

发表于 2014-3-23 01:18:39 | 显示全部楼层
九度什么的,我做的都快吐了
回复

使用道具 举报

发表于 2014-3-23 10:50:24 | 显示全部楼层
我只是刚啃了JAVA一口!这些啥都不懂啊!!!!
回复

使用道具 举报

发表于 2014-3-23 14:41:12 来自手机 | 显示全部楼层
pku online judge嘛
就是个在线评测平台
不带教学功能的
(能刷动poj就代表有一定水平了加油吧

点评

当然是算法设计方面咯  发表于 2014-3-26 00:31
老实说能刷poj究竟是哪方面有水平……  发表于 2014-3-25 21:51
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|无图版|手机版|小黑屋|喵玉殿

GMT+8, 2025-11-10 03:10

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表