网站备案信息代码,网站开发语言学习C 吗,沈阳网站建设发布,怎么建设国外免费网站正题
题目链接:https://www.luogu.com.cn/problem/AT2165 题目大意 nnn行的一个金字塔#xff0c;第iii层有2i−12\times i-12i−1个格子#xff0c;每个格子是它左右下的中位数。给出最下面的2n−12n-12n−1个数#xff0c;求第一行的数。 解题思路
我们先二分一个答案第iii层有2×i−12\times i-12×i−1个格子每个格子是它左右下的中位数。给出最下面的2n−12n-12n−1个数求第一行的数。 解题思路
我们先二分一个答案然后变成010101如果它的下方有两个或以上的就是这个格子的。
找到一个离中间最近的相邻的相同颜色这个颜色就是答案因为这两个数顶上连续到中间的都是这个颜色因为只有另一个连续相同的颜色才能隔开这些颜色但是如果找到了这两个那么就有更优的答案案了所以结论成立。 codecodecode
#includecstdio
#includecstring
#includealgorithm
using namespace std;
const int N2e510;
int n,a[N];
int check(int x){for(int i1;in;i){if(a[n-i1]xa[n-i]x||a[ni-1]xa[ni]x)return 0;if(a[n-i1]xa[n-i]x||a[ni-1]xa[ni]x)return 1;}return a[1]x;
}
int main()
{scanf(%d,n);for(int i1;i2*n-1;i)scanf(%d,a[i]);int l1,r2*n;while(lr){int mid(lr)1;if(check(mid))lmid1;else rmid-1;}printf(%d,r);
}