求调
查看原帖
求调
1359837
Dream_Stars楼主2025/1/2 20:54

RT,60.

# include <bits/stdc++.h>

using namespace std;

inline int read (){int s = 0 ; bool w = 0 ; char c = getchar () ; while (!isdigit (c)) {w |= (c == '-') ,c = getchar () ;} while (isdigit (c)){s = (s << 1) + (s << 3) + (c ^ 48) ; c = getchar ();}return w ? -s : s;}
inline void write (int x){if (x < 0) putchar ('-') ,x = -x; if (x > 9) write (x / 10) ; putchar (x % 10 | 48);}
inline void writesp (int x){write (x) ,putchar (' ');}
inline void writeln (int x){write (x) ,putchar ('\n');}

mt19937 rnd (20241228);

const int N = 1e5 + 10;
int n ,m ,l[N] ,r[N] ;
double w[N] ,ans[N];

signed main (){
  n = read () ,m = read ();
  for (int i = m + 1 ; i <= n ; i ++) l[i] = read () ,r[i] = read ();
  for (int test = 1 ; test <= 400 ; test ++){
    for (int i = 1 ; i <= m ;i ++) {int t = (rnd () % 20241228) ; w[i] = (double) t / 20241228 ;}
    for (int i = m + 1 ; i <= n ; i ++) w[i] = min (w[l[i]] ,w[r[i]]);
    for (int i = m + 1 ; i <= n ; i ++) ans[i] += w[i] / 400.0;
  } for (int i = m + 1 ; i <= n ; i ++) writeln ((int)(1.0 / ans[i] - 0.5));
  return 0;
}
/*19629535*/
2025/1/2 20:54
加载中...