![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Topcoder
L_0_Forever_LF
一个热爱OI的OIer
展开
-
SRM500
A 最大概率输的一定是最多人投的那个,模拟code: …好像被我自己不小心删掉了…….B 看不懂aC 枚举2,4,8,9的个数后可以知道所有数的个数,预处理1+10+100+..1000..的和后直接算贡献code:class ProductAndSum { public: ll s[maxn]; int u2,u3,u5,u7,u; ll pw(ll x,in原创 2017-10-20 14:29:39 · 351 阅读 · 0 评论 -
SRM 548
A 二分加贪心 code: class KingdomAndTrees { public: int n; bool judge(const int x,vector<int>heights) { int las=0; for(int i=0;i<n;i++) { int now=heights原创 2017-10-23 11:47:44 · 330 阅读 · 0 评论 -
SRM 549
A 看不懂..B 事实上由于wizard可以调换硬币,所以你拿到的k个硬币一定是最小的k个硬币,将硬币排序后相当于求最多能拿多少枚硬币 发现n很小,可以状压,用0表示这个帽子还未翻开,1表示这个帽子翻开了有硬币,2表示翻开了没硬币。 先2^n预处理出所有合法的放硬币情况,再把翻开了的,没翻开的帽子加进去处理出所有合法的三进制状态,转移时先手枚举取哪一个帽子,对取所有帽子的情况取max,对于取原创 2017-10-31 20:56:41 · 388 阅读 · 0 评论 -
SRM550
A 模拟 B 观察性质,发现每次放子,是在上一个人的基础上走2步,所以横纵坐标和的奇偶性始终不变 且根据(x+y)/2的奇偶性可以判断如果这个位置有棋子,这个棋子是谁放的 而且因为只有可能放在(x,y)的(x+1,y+1)和(x+2,y),所以有子的格子也满足x>=y 在这个基础上,观察能放子的格子(x,y)还满足什么性质: (x-1,y-1)和(x-2,y)中有且仅有1个格子有棋子,原创 2017-10-31 21:01:34 · 438 阅读 · 0 评论 -
51nod 1487
注意到只能建2个塔,暴力枚举是k(n*m)^2的 但可以发现我们枚举了第一个塔后,第二个塔没有必要枚举,可以预处理第二个塔放在每个位置的价值,塞进一个堆里(事实上不需要堆…排个序就行了,还省个log…) 考虑到两个塔覆盖了重复的点只算一次,如果堆顶的塔与当前枚举的塔冲突就把他取出来算一下贡献,把所有冲突的拿出来后计算完贡献再把他们放回去,最多k^2个重复,复杂度 O(nmk2log(nm))O(原创 2017-11-19 17:19:57 · 428 阅读 · 0 评论 -
51nod 1450
得到2颗星的期望次数可以解方程算但得到1颗星的算不了。 因为每关都要通过,我们按Yi从小到大处理,f[i][j],pi[i][j]表示玩了i关,获得了j颗星的期望次数,概率 如果(n-i)*2=m-j,那接下来每关都要玩2星,也只会在这些关弄2星因为他们的Yi最大 否则我们只要求通过就行了 通过的期望次数是能算的,通过了后获得1/2颗星的期望是Xi:Yi,就可以dp了code:#includ原创 2017-11-19 17:22:58 · 323 阅读 · 0 评论 -
51nod 1448
倒着考虑印的过程,最后一次印的区域一定是K*K的同色区域 然后在之前的操作这片区域里印成什么颜色都行,定义为杂色,每次找一个K*K的全0/1+杂色区域印,(nm)^6code:#include<set> #include<map> #include<deque> #include<queue> #include<stack> #include<cmath> #include<ctime> #inc原创 2017-11-19 17:24:27 · 287 阅读 · 0 评论 -
51nod 1446
一个good点如果只和bad相连就不计算他的价值,否则算入总价值记作great点,要求总价值<=maxval这些good点之间除了权值没啥区别,生成树计数容易想到用矩阵树定理去统计,但是用矩阵树定理,只能通过让他们之和bad间有边限制i个点一定不是great点,对于其他点有可能还有不是great点的情况统计 于是用g[i]表示至少i个good点非great,f[i]表示恰好i个good点非grea原创 2017-11-20 21:46:23 · 356 阅读 · 0 评论 -
51nod 1397
根据增广路的性质(未匹配匹配未匹配交错路),画图贪贪贪感觉能搞出来?我们先把图中的m对匹配点连上,得到这个东西蓝色的为匹配边,上方为集合A,下方为集合B,不妨设|B|>=|A| 先不考虑匹配点的度数够不够,我们尝试补并尽量添加非匹配点的度 因为m个匹配已经存在,所以A集和B集中的非匹配点之间不能有边 我们先为B集某个未匹配点添加边(这里假定度数要求为2,所以这个未匹配点至少要添加2条边,与匹配原创 2017-11-20 22:12:50 · 269 阅读 · 0 评论