ALL:6
AC:3
补题:1
题意:
给你一个长度为
n
n
n 的序列,且元素两两不同,你需要求出满足
i
<
j
i
n ≤ 1 0 5 , 1 ≤ a i ≤ 2 n n\le 10^5 , 1\le a_i \le 2n n≤105,1≤ai≤2n
思路:枚举每一个 a j a_j aj ,对于该数枚举倍数,即 a i a_i ai ,然后维护一个标记数组即可。
AC代码:https://codeforces.com/contest/1541/submission/178916763
题意:
给你一个长度为 n n n 的序列 { d } \{d\} {d},你需要构造一个有向带权图,使得点 1 1 1 到点 i i i 的最短路长度为 d i d_i di,同时使得所有边的边权之和尽可能地小。
注意:图中不能出现负环和重边。
n ≤ 1 0 5 , 0 ≤ d i ≤ 1 0 9 n\le 10^5,0\le d_i\le 10^9 n≤105,0≤di≤109
思路:如果不考虑连接负边,构建出来的一定是一棵树,要让树边权之和最小,即把最短路从小到大排序,然后连接成一条链即可,差分数组即为连接的边权。
如果要连接负边,我们考虑一棵树,要连接负边,一定是在原树上 i → j ( w ) i\rightarrow j(w) i→j(w) 的一条路径,我们反向连接 j → i ( − w ) j\rightarrow i(-w) j→i(−w) ,这样可以保证连接出来的正边和负边没有产生负环,一共是 n 2 n^2 n2 级别的边。
易知当连接成一条链时,上述两个贡献都是最小的,因此边权之和也是最小的。
AC代码:https://codeforces.com/contest/1541/submission/178917969
题意:
给定一棵
n
n
n 个节点的树。
对于这棵树,我们通过下列方法来生成一个序列:
求生成序列的期望逆序对数对
1
0
9
+
7
10^9+7
109+7 取模后的值。
2
≤
n
≤
200
;
2\leq n\leq200;
2≤n≤200; 给出的是棵树。
思路:一道好的概率期望题目。考虑枚举钦定根,并且枚举每一个逆序对 ( u , v ) (u,v) (u,v) ,计算该逆序对被选中的概率。易知从根节点取到该逆序对的概率,等于 lca(u,v) \text{lca(u,v)} lca(u,v) 取到该逆序对的概率。
我们可以思考用一个容器模拟这个取的过程,虽然这个过程中容器大小在变化,即取到一个点的概率是实时在变得,但是取到两个点方向的节点的概率是相等的。因此可以忽略其他点的影响。
设 d p i , j dp_{i,j} dpi,j 为从 ( u , v ) (u,v) (u,v) 的 LCA \text{LCA} LCA出发,在链上走 i i i 步到 u u u ,在链上走 j j j 步到 v v v ,使得 u u u 在 v v v 前面的概率。可以预处理。
AC代码:https://codeforces.com/contest/1541/submission/178924086