2023.10.14 做题记录

发布时间 2023-10-14 17:34:12作者: 单南松

2023.10.14 做题记录

P5595 歌唱比赛

一个非常简单的贪心。

先判断什么时候是 -1 ,将字符串从头开始往后遍历,Z 的右边不能有 X,Y,如果有则直接输出 -1

因为是 SPJ,如果该字符串有答案的话,倒着看,字母是谁的就随便给一个大的数,如果是 \(X\),则小\(X\)的数为 \(5\),小\(Y\)的数为 \(4\),其余情况同理。

CF1428B

若一个房间左边或右边是 -,则其必符合条件,用 \(cnt1\) 来统计。

若一个房间左右都是 <,用 \(cnt2\) 统计。

若一个房间左右都是 >,用 \(cnt3\) 统计。

>< 都存在时,\(2\)\(3\) 类房间都不符合条件,答案为 \(cnt1\)

< 存在且 > 不存在时,\(2\) 类房间符合条件,答案为 \(cnt1 + cnt2\)

> 存在且 < 不存在时,\(3\) 类房间符合条件,答案为 \(cnt1 + cnt3\)

CF743C

\(\frac{2}{n}\) 分为 \(\frac{1}{n}\)+\(\frac{1}{n}\)

再根据裂项公式 $\frac{1}{n}$-$\frac{1}{n+1}$=$\frac{1}{n(n-1)}$ 导出 $\frac{1}{n}$=$\frac{1}{n+1}$+$\frac{1}{n(n-1)}$

所以 $\frac{2}{n}$=$\frac{1}{n}$+$\frac{1}{n+1}$+$\frac{1}{n(n-1)}$

然后 $\frac{1}{x}$+$\frac{1}{y}$+$\frac{1}{z}$=$\frac{1}{n}$+$\frac{1}{n+1}$+$\frac{1}{n(n-1)}$

于是 $x=n,y=n+1,z=n(n-1$)

CF476D

猜结论!

观察两组样例,可以发现共同点

  • 样例一输出的是 1,2,3,5
  • 样例二输出结果中最小的四个数是 2,4,6,10

不难发现,二者具有二倍关系,二者二倍关系刚好是 \(k\)

猜出结论!

cin >> n >> k;
cout << (6 * n - 1) * k << endl;
for (rint i = 1; i <= n; i++)
{
	int x = 6 * i - 5;
	cout << x * k << " " << (x + 1) * k << " " << (x + 2) * k << " " << (x + 4) * k << endl;
}

CF1430C

继续猜结论,一直从右往左删即可,最小值为 \(2\)

因为删到最后状态一定剩两个数,由于不可能剩两个 \(1\),所以最小值为 \(2\)

我们可以将两个数相加除以二看作将两个数消成一个数,那要让剩下的数最小,就应该先去消大的,所以从右边开始消即可。