上一页 1 2 3 4 5 6 ··· 44 下一页
摘要: A.外教 Michale 变身大熊猫 对每个i求出以它结尾的[1,i]中的LIS长度f1与个数g1,和以它开头的[i,n]中的LIS长度f2与个数g2,若f1+f2-1=整个数列的LIS长度,那么它出现在LIS中的概率就是g1*g2/整个数列LIS的个数。发现可以用线段树优化朴素DP转移,维护下区间 阅读全文
posted @ 2019-06-17 09:06 HocRiser 阅读(249) 评论(0) 推荐(0) 编辑
摘要: A.直接模拟。 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 typedef 阅读全文
posted @ 2019-06-09 17:59 HocRiser 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 类似维护括号序列,给每个点建两个点,然后所有操作都能轻松支持了。注意sum和lastans是long long。 阅读全文
posted @ 2019-06-09 09:17 HocRiser 阅读(181) 评论(0) 推荐(0) 编辑
摘要: A.(n-2)*180 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 6 type 阅读全文
posted @ 2019-06-02 13:00 HocRiser 阅读(169) 评论(0) 推荐(0) 编辑
摘要: A.2c+2min(a,b)+(a!=b) 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #define rep(i,l,r) for (int i=(l); i<=(r); i 阅读全文
posted @ 2019-06-02 12:49 HocRiser 阅读(180) 评论(0) 推荐(0) 编辑
摘要: $D1T1$:$n$个村庄,第$i$个村庄的人要去第$p_i$个村庄(保证$p_i$为排列),每次可以将相邻两个村庄的人位置交换直到所有人都到达目的地。再给定一个长为$n-1$的排列$a$,表示第$i$次在第$i$个和第$i+1$个村庄中间增设一个关卡,当一次交换发生时,若交换中间存在一个卡,或交换 阅读全文
posted @ 2019-06-01 08:35 HocRiser 阅读(734) 评论(1) 推荐(0) 编辑
摘要: https://www.luogu.org/blog/user50971/solution-p5401 阅读全文
posted @ 2019-05-23 09:44 HocRiser 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 先考虑外向树的做法,显然一个点在其子树内第一个出现的概率等于它的权值除以它子树的权值和。于是f[i][j]表示i的子树的权值和为j时,i子树内所有数的相互顺序都满足条件的概率,转移直接做一个背包卷积即可。 现在考虑反向边,通过容斥变成“至少有i条边不满足条件”的满足题目条件的概率,这样一来那些反向边 阅读全文
posted @ 2019-05-22 10:37 HocRiser 阅读(154) 评论(0) 推荐(0) 编辑
摘要: https://www.cnblogs.com/cjyyb/p/10900993.html 阅读全文
posted @ 2019-05-22 10:02 HocRiser 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 根据旋转卡壳,当逆时针遍历点时,相应的最远点也逆时针转动,满足决策单调性。于是倍长成链,分治优化DP即可,复杂度O(nlogn)。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l); i<=(r) 阅读全文
posted @ 2019-05-21 19:22 HocRiser 阅读(359) 评论(2) 推荐(0) 编辑
上一页 1 2 3 4 5 6 ··· 44 下一页