1 条题解
-
0
自动搬运
来自洛谷,原作者为

Purslane
AFO搬运于
2025-08-24 23:15:30,当前版本为作者最后更新于2025-06-11 10:45:16,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Solution
唯一的难点在于想到可以从左到右逐位确定每个数是否是 。
显然我们可以找到左边和右边第一个 。
我们在 中从小到大决策每个 是否是 。
我们已经确定了 之前有 个 ,同时也能知道 及之后有 个 。记 表示 的众数出现次数。
- 如果 在 中作为众数出现。
即 。那么 是 的一个充分条件是: 且 。( 保证了 在 中作为众数出现。但是 的众数不一定唯一,我们通过 限制)
- 如果 在 中作为众数出现。
发现充分条件就是 。
- 如果 在 中不是众数,在 中也不是众数。
显然 和 中的众数不交,都不是 ,所以分别是 和 。一个必要条件是 且 ,容易证明也是充分的(在这种限制下)。
把三个充分条件拼一起就是充要条件。
放一个主播写的 的代码:
#include<iostream> #define F(i,a,b) for(int i=a;i<=b;i++) #define y (a[1][n]-x) using namespace std;int n,x=1,l=1,a[2001][2001];int main(){cin>>n;F(l,1,n)F(r,l,n)cin>>a[l][r];while(a[1][n]==a[l+1][n])++l;while(a[1][n]==a[l][n-1])--n;if(l!=n)cout<<l<<' ';F(i,l+1,n-1)if(a[l][i]-x&a[l+1][i]==x|a[i+1][n]<y|a[i][n]==a[i+1][n-1]&a[l][i]==a[l][i-1]&a[l][i-1]>x)cout<<i<<' ',++x;cout<<n;}
- 1
信息
- ID
- 12225
- 时间
- 2000ms
- 内存
- 256MiB
- 难度
- 6
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者