neerc 2009/2010 简要解题报告
by wangzhihao
分类: 几何,中等
题目大意:给你两个三维凸包,如何放置使得他们的质心相距最近?(每个凸包只给你它的顶点,无序),求最近距离
思路:肯定是把两个凸包的两个面叠在一起,这样就转化成单独求质心到凸包每一面所在的平面的距离,然后再相加即可.
接下来主要问题是求质心位置. 我们可以随便取一个顶点,以它基点把凸包剖分成若干个四面体,分别求每个四面体的重心,然后加权的加起来即可.
分类: 数学,简单
题目大意:有n座电梯,你只能从中选择一辆乘,中途不能换乘,每一座电梯只有两个键,要么上a层楼,要么下b层楼,假设楼无限高,电梯不能低于0楼,你最开始在0楼,你连续按n次,最低会在第几楼?
思路:理解上直接用实数解 x * a + y * b = 0 && x + y = n; 然后把x取上整即可.实际做的时候可以用取模避免使用实数
分类: 数学,偏难
题目大意:这是一个交互题, 告诉你有一个1-n的排列(n < 200),但你不知道这个排列的样子,你可以询问第i , j, k位的中值是谁, 最多询问2000次,给出那个不知道的排列, 有些排列是通过这种询问不可能区分的, 这种情况下输出任何一个都可以.
思路:这道题的解法很巧妙,貌似交互题的解法都很妙.
首先如果我知道1的位置,那么我可以很快确定其他数的位置.假设现在有三个数的位置为x, y, z. 分别ask(1, x, y) ask(1, y, z) ask(1, x, z)这样必定有且只有两个ask是一样的值, 而且这个值的位置就是公共的那个位置,这样问3次就可以确定一个数.
上面只是举了个例子, 实际上对于一个排列,知道了最小值,或者最大值,都可以用上面的方法快速的确定其他的值.
当然直接找1或者n的位置比较困难,可以随便找一对a,b.不妨设 a < b, 对所有的x去ask(x, a, b), 这样对于(a< x < b)直接一次询问就可以确定了 ,对于(x<=a)询问会返回a, 对于(x >= b)会返回 b. 然后分别处理两端即可
分类: Hash,简单
题目大意:给你一个n*m的表,(1 <= n <= 10 000, 1 <= m <=10),问是否有两行他们满足下面条件: 他们中有两列相同.
思路:枚举列,然后hash判重
分类: 集合DP,偏难
题目大意:每种进程需要两种资源, 一共有最多15种资源. 但是为了避免冲突,使用某种资源前要申请,使用时要加锁.这样又有可能会造成死锁, 改变进程对自己的两种资源的申请顺序,使得不会发生死锁,且等待链最长的最短.
思路:
分类: 优先队列,简单
题目大意:给你一个字典,字典里有m个单词, m <1000. 你需要再找n个单词,这n个单词要求能够尽量多的能从字典里派生.单词a能从单词b中派生意味着a是b删掉若干字母(也可不删),再按一定排列形成的.
思路:用一个优先队列去不断的生成答案,开始是一个空串,每次队首元素必定是当前最优的,然后把它的26个后继加入到队列中,优先级的设置就是该单词能由字典里单词派生的数目.
分类: 找循环 , 中等
题目大意: 题目描述比较长, 定义了若干规则,然后模拟n步(n <= 10^100),然后计数.
思路: 想法比较直接,直接找循环
分类: 概率, 简单
题目大意: 两人在用左轮手枪赌命, 现在对手开一枪没事,轮到自己有两种选择,一是重新转一下再开枪,二是直接开枪,告诉你子弹初始的放置情况,问那种生存概率更大.
思路:直接统计一下两种概率,再比较一下即可
分类: 网络流,中等
题目大意:给你一个有向无环图, 找若干路径把所有点覆盖, 路径直接可以相交
思路:
分类: 动规,中等
题目大意: 题目大概意思是有个人参加考试。这张试卷上有m种题型,共n道题(全是选择题~),最后的成绩上告诉他一共错了k道题,对于每类题型,正确率分别为
Pi% 。现在他想知道每类题里面他分别错了多少道。但是可能会有很多合法的情况。求在所有题型中,最多题目数 - 最少题目数
的差值最小的那种情况。保证至少存在一种合法情况。所有数为整数。(正确率使用一个比较纠结的取整函数,具体见题目)
思路: dp[i][j][k] 表示考虑到第i个题型,一共做了j个题,错了k个题是否可能。转移再枚举第i个题型一共做x个题,错y个题,看是否可行, 由于真正能转移的很少,所以可搞
分类:
题目大意:
思路: