2017.8.18 总结
来源:互联网 发布:java解析xlsx文件 编辑:程序博客网 时间:2024/06/05 00:45
今天的题….难到一种境界,有些人做了一半就咸(qi)鱼(liao)了,有些人看了题直接不写了(雾),我虽然坚持到了最后,但我……也才60分qwq…….
T1
题意:有两个人在玩石头剪刀布的游戏。游戏分每轮进行,一轮有
n 局游戏,每局胜者得1 分,平局都不得分,分数高者赢得此轮,分数相同则此轮作废。任意时刻如果A 比B 多赢m1 轮,则A 获胜;如果B 比A 多赢m2 轮,则B 获胜。现在已知B 每一局出石头,剪刀,布的概率,且不同的两轮中的同一局B 出石头剪刀布的概率是相等的,求最优策略下A 的获胜概率。
思路:一般..对于这些求期望与概率的题..我都是不抱有什么希望的,于是…通过
题解:因为
B 每轮策略相同,所以在A 选择最优策略的情况下,每一轮A 和B 的胜率及平局概率就是确定的,设他们的胜率分别为p 和r 。因为平局对局面没有影响,所以我们修改一下轮的定义:一轮是指双方不断游戏,直到有一方赢得一轮为止的一个过程。那么新的一轮A 的胜率q 就是p÷(p+r) 。
接下来先说说20 分:
前20 分n 很小,结合上面的分析我们可以暴力求出每轮的胜率q 。知道了q 之后,设a[i] 表示A 和B 获胜轮数差为i 时A 的胜率,那么有a[m1]=1,a[−m2]=0 ,注意我们是要倒推出a[0] 。所以其他的有a[i]=a[i+1]∗q+a[i−1]∗(1−q) ,用高斯消元求出a[0] 即是答案。
再来说说另外30 分:
因为双方都只要赢一轮就可以赢得游戏,所以我们只要求出赢一轮的概率q 即可,这也是问题的关键所在。观察q 的表达式:q=pp+r=1−rp+r=1−1(1+pr) ,要让q 更大,就要让pr 更大。设k=pr ,k 是一个分数的形式,我们可以考虑用分数规划来求,设当前二分的值为t ,那么我们只要判断p−t∗r 是否大于0 就可以知道t比要求的k 是偏大还是偏小了。这样我们可以定义A 胜一轮得1 分,B胜一轮得t 分(对A 来说是−t 分),倒着DP 一遍就可以找到一个最优策略使p−t∗r 最大了。DP 状态f[i][j] 的含义就是表示第i局时双方胜的局数差为j 时最大的p−t∗r 。
然后其实满分做法就根据上面两个做法来就行了。
T2
题意:有一位神犇想在
n 天内刷k 道题,但他刷的都是神题,一天只能想一道题或者做一道题(同一天内可以想一道和做一道),显然,一道题必须先想再做。假设神题都是一样的,然后这n 天里,第i 天想一道题的代价为a[i] ,做一道题的代价为b[i] 。求花费最小的代价让神犇在这n 天里刷完这k 道神题。
思路:当时我的思路就是
题解:如果把想题看成“(”,把写题看成“)”,则费用流每次增广其实就是加入一对“()”或“)(”,且要保证当前这个括号序列合法,即序列的前缀和
si 在任意位置都大于等于0 。设左括号的位置是posa ,右括号的位置是posb ,假如选择加入“()”,那么[posa,posb) 的si 要+1 ,假如选择加入“)(”,那么[posb,posa) 的si 要−1 ,且这一段减完后要≥0 ,即原来的[posb,posa) 的最小值要>0 。然后用线段树维护几个东西就好了,接下来留给读者一些想象空间,自己想一想改用什么方法qwq(好吧其实是作者太懒…)。
T3
题意:给你一个
n ,表示一共有n 个点,再给你一个半矩阵,即一共n−1 行,第i 行有n−i 个数,第1 行表示从点1 到2∼n 各个点的距离,第i 行表示从点i 到(i+1)∼n 的各个点的距离。现在让你把n 个点分为两个集合,每个集合的值val 为在该集合中的所有点之间两点的距离最大,求两个最大值之和最小。
思路:当时我就打了个
题解:假设我们已经枚举了
D(A) 和D(B) ,我们认为D(A) 是更大的那一个,这就是一个2−SAT 问题。枚举D(A) ,二分D(B) ,再利用单调性去掉log ,可以做到O(n4) 。这个解法有40 分。然后,我们考虑哪些边才有可能成为A 的最大边:
1. 对于图中的一个偶环,其中的最短边才不可能成为A 中的最大边,因为当它的两个端点都在A 时,偶环上一定存在另外一条权值比他大的边,它的两个端点都在A 集合。
2. 对于图中的一个奇环,至少有一条边它的两个端点在同一个集合。所以奇环上的最小边会成为A 最大边的下界。于是,我们将可能成为一个集合最大边的候选边集的大小缩小到了O(n) 级别:把边从大到小排序,考虑加入一条新的边,如果它的两个端点不在同一个连通块,可以直接加入候选边集;如果在同一个连通块且没有形成奇环,直接忽略,如果形成奇环,将它加入候选边集并停止算法,因为这将成为一个集合最大边的下界,套用前面的算法,我们可以做到O(n3logn) ,就可以过了。
- 2017.8.18 总结
- 总结18
- 2017.8.10------总结+感悟
- 2017.8.10~11总结
- 2017.8.11 总结
- 2017.8.12 总结
- 2017.8.12 总结
- 2017.8.12总结
- 2017.8.13 总结
- 2017.8.14 总结
- 2017.8.15 总结
- 2017.8.16 总结
- 2017.8.17 总结
- 自定义总结2017.8.28
- 2010-11-18总结
- 总结2-18
- 总结-2012-3-18
- 2012.4.18总结
- JavaIO流
- 【清华集训2017模拟】Sequence
- 【项目实战】自监控-11-DataFrame索引操作(下篇)
- javaWeb:http协议请求
- CentOS7 升级Docker 最新的版本
- 2017.8.18 总结
- ContentProvider 源码分析---之三
- edittext文本输入控件
- BZOJ2124: 等差子序列
- 人工智能学习轨迹
- Java_18 输入/输出流
- POJ
- hdu 1796 How many integers can you find(容斥原理)
- Unity入门操作_Input_005