Atcoder AGC006D : Median Pyramid Hard

news/2024/7/7 15:26:27

传送门

题解:
二分最终答案,然后转化为0,1串。
发现连续的0,1串每次往左右扩展1,那么我们找到距离中点最近的即可。

#include <bits/stdc++.h>
using namespace std;

const int RLEN=1<<18|1;
inline char nc() {
    static char ibuf[RLEN],*ib,*ob;
    (ib==ob) && (ob=(ib=ibuf)+fread(ibuf,1,RLEN,stdin));
    return (ib==ob) ? -1 : *ib++;
}
inline int rd() {
    char ch=nc(); int i=0,f=1;
    while(!isdigit(ch)) {if(ch=='-')f=-1; ch=nc();}
    while(isdigit(ch)) {i=(i<<1)+(i<<3)+ch-'0'; ch=nc();}
    return i*f;
}

const int N=2e5+50;
int n,a[N];
#define up(i,j) ((a[i]>=v) && (a[j]>=v))
#define dn(i,j) ((a[i]<v) && (a[j]<v))
inline bool check(int v) {
    for(int i=0;i<n-1;i++) {
        if(up(n+i,n+i+1) || up(n-i,n-i-1)) return 1;
        if(dn(n+i,n+i+1) || dn(n-i,n-i-1)) return 0;
    } return up(1,1);
}
int main() {
    n=rd(); for(int i=1;i<n*2;++i) a[i]=rd();
    int l=1, r=*max_element(a+1,a+2*n), ans=0;
    while(l<=r) {
        int mid=(l+r)>>1;
        if(check(mid)) ans=mid, l=mid+1;
        else r=mid-1;
    } cout<<ans<<'\n';
}

http://www.niftyadmin.cn/n/1725186.html

相关文章

LOJ#6436. 「PKUSC2018」神仙的游戏

传送门 题解: 瞎JB猜了个结论居然是对的&#xff0c;看了题解知道为什么对了。 我们考虑先做模糊串匹配&#xff0c;那么长度不大于n2n2的串只需要匹配上就行了。 否则我们判断他的每一个周期子串是否能作前缀即可。 原因是如果有非法的必然是&#xff1a;0→?→?→10→?…

如何使用TabControl控件?

1 如何用代码切换TabControl中的TabPage? 为按钮添加代码&#xff1a; TabControl1.SelectedIndex 1 其中1是TabPage2的索引 private void button1_Click(object sender, EventArgs e){tabControl1.SelectedIndex 1;} 2 如何隐藏TabControl中的TabPage标签&#x…

雅礼集训6.25 : gift (DP)

题意&#xff1a; (n≤2000)(n≤2000)题解&#xff1a; 好神啊。 首先考虑如果序列已知怎么做&#xff0c;我们把(ai,bi)(ai,bi)看做图中的边&#xff0c;那么形成若干环&#xff0c;答案就是 n−环数n−环数。 考虑如果不已知&#xff0c;那么已经有的边肯定形成若干条链…

DataGridView动态的绑定数据

下面的示例将说明如何获取一些数据&#xff0c;并在DataGridView控件中显示&#xff0c;为此&#xff0c;建立一个新的应用程序DisplayTabularData&#xff0c;如图32-1所示。 图http://new.51cto.com/files/uploadimg/20081127/090210168.jpg 这个简单的应用程序从Northwind数…

Atcoder AGC007C : Pushing Balls

传送门 题解&#xff1a; 把每个球的操作一次后的期望具体写出来&#xff0c;发现还是一个等差数列&#xff0c;猜个结论&#xff1a;把之后的局面用这个等差数列算是等价的&#xff08;其实应该也不难理解&#xff09;。 假设现在等差数列为(d,x)(d,x)(d,x)&#xff0c;我们…

C#数据类型命名

ASP.NET编程规范之命名规范都有哪些呢&#xff1f;具体又有什么内容呢&#xff1f;让我们开始吧&#xff1a; ASP.NET编程规范之命名规范1&#xff0e;按钮ID命名&#xff1a; btn按钮操作功能&#xff08;如btnSave&#xff09; ASP.NET编程规范之命名规范2&#xff0e;其它…

Codeforces 866G : Flowers and Chocolate

传送门 题解&#xff1a; 考虑我们已知k步能够拼接出的状态&#xff0c;怎么才能得到答案. 可以DP&#xff1a;fn→fn−bifn→fn−bi这其实是一个多项式取模的过程&#xff0c;我们对Fxmaxbi−∑jx(maxbi)−bjFxmaxbi−∑jx(maxbi)−bj取模即可。 最后再对小的部分做一次DP&…

C# Show() 与 ShowDialog()区别

ShowDialog()弹出模式化的窗体Show()弹出非模式化的窗体模式窗体&#xff0c;在关闭或隐藏前无法切换到主窗体。非模式窗体&#xff0c;变换焦点使不必关闭窗体总结&#xff1a;显示重要的信息&#xff0c;还是用模式窗体&#xff0c;如删除文件&#xff0c;可以确保用户正真想…