20260910 每日 2.0 2.5 5.0



No.1623 三角形的制作 2.0$

https://yukicoder.me/problems/no/1623

Note

红色,绿色,蓝色棒子各 $N$ 根,第 $i$ 根长度为 $r_i, g_i, b_i$

求使用第 $i$ 个红棒,第 $j$ 个绿棒,第 $k$ 个蓝棒制作三角形且满足,$r_i=max(r_i, g_i, b_k)$ 的整数对数量

  • $1 \le N \le 2 \times 10^5$ $1 \le r_i,g_i,b_i \le 3 \times 10^3$

显然枚举两组然后二分第三组是不能通过的,于是考虑值域

看到了值域可以满足平方复杂度,于是考虑枚举绿和蓝的数量,然后对红棒前缀和,直接相减后统计计数即可。

namespace XK {
	const int MAXN = 3e3 + 1;
  void solve() {
  	int N; in(N);
  	V<int> A(MAXN + 1), B(MAXN + 1), C(MAXN + 1);
  	rep(i, N) {int x; in(x); A[x] ++;}
  	rep(i, N) {int x; in(x); B[x] ++;}
  	rep(i, N) {int x; in(x); C[x] ++;}
  	V<int> pre(MAXN + 1);
  	rep(i, MAXN) pre[i + 1] = pre[i] + A[i];
  	ll ans = 0;
  	rep(i, MAXN + 1) rep(j, MAXN + 1) {
  		if(i == 0 && j == 0) continue;
  		int cnta = pre[min(i + j + 1, MAXN + 1) - 1] - pre[max(i, j)];
  		ans += cnta * B[i] * C[j];
  	}
  	out(ans);
  }
};

No.2462 七人卡农 2.5$

https://yukicoder.me/problems/no/2462

Note

一共有 $N$ 个演奏者,给出 $Q$ 个三元组 $(I_i,S_i,T_i)$ 表示第 $I_i$ 个演奏者在 $[S_i, T_i]$ 时间内演奏。

如果在第 $T$ 秒的时候有 $X$ 个人演奏,那么演奏中的每个人都会在这一秒获得 $\frac{1}{X}$ 的醒目度,求每个人的醒目度之和。

  • 保证给出的三元组满足 $I_i = I_j$ 时,$[S_i,T_i]$ 区间与 $[S_j,T_j]$ 区间不交
  • $1 \le I_i \le N, Q \le 10^5$
  • $0 \le S_i \lt T_i \le 10^5$

可以尝试预处理出每一秒的时候,如果在演奏的话,贡献是多少,因为这个部分是不变量,如果可以预处理出每一秒的 $val_i$ 的话,那么每个人的贡献就可以写成:
$$
\sum_{t=0}^{10^5} val_i [vis_t = 1]
$$
而这一部分可以直接暴力,因为总区间数最大是 $10^5$ 的,可以前缀和搞定。

因为要做两次前缀和,注意下标即可,复杂度 $O(N + Q + \text{max}(T))$

namespace XK {
	const int MAXT = 1e5;
  void solve() {
  	int N, Q; in(N, Q);
  	V<double> val(MAXT + 1, 0);
  	V<V<pair<int, int>>> Seg(N);
  	rep(_, Q) {
  		int I, S, T; in(I, S, T); I --;
  		Seg[I].pb({S, T});
  		val[S] ++, val[T] --;
  	}
  	rep(i, MAXT) val[i + 1] += val[i];
  	rep(i, MAXT + 1) if(val[i]) val[i] = 1.0f / val[i];
  	rep(i, MAXT) val[i + 1] += val[i];
  	rep(i, N) {
  		double ans = 0.0f;
  		for(auto [x, y] : Seg[i]) {
  			ans += val[y - 1] - (x > 0 ? val[x - 1] : 0.0f);
  		}
  		out(ans);
  	}
  }
};

No.981 一般幂乘根 5.0$

https://yukicoder.me/problems/no/981

Note

设 $p$ 是质数,求 $x^k \equiv a \pmod p$ 的一个解,如果不存在,输出 $-1$

题解我真的看不懂,ごめなさい~

请各位自行理解吧😂https://yukicoder.me/problems/no/981/editorial