zoukankan      html  css  js  c++  java
  • 繁华模拟赛 旅行者的笔记

    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    const int maxn = 100005;
    int n,m,cnt,d[maxn],h[maxn];
    int main(){
        freopen("note.in","r",stdin);
        freopen("note.out","w",stdout);
        cin>>n>>m;
        for(int i = 1;i <= m;i++){
            scanf("%d%d",&d[i],&h[i]);
        }
        int ans = max(h[m] + n - d[m],h[1] + d[1] - 1);
        int hg,lw,div,mid;
        for(int i = 2;i <= m;i++){
            div = h[i] - h[i-1];
            if(div < 0) div = -div;
            if(div > d[i]-d[i-1]){
                cout<<"IMPOSSIBLE";
                return 0;
            }
            mid = (h[i] + h[i-1] + d[i] - d[i-1]) >> 1;
            ans = max(ans,mid);
        }
        cout<<ans;
        return 0;
    }
    
    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cmath>
    #include<vector>
    #include<queue>
    #include<map>
    #include<set>
    #include<stack>
    #include<cstdlib>
    #include<string>
    #include<bitset>
    #define INF 200000000
    #define N 100005
    #define fi first
    #define se second
    #define debug(x) cout<<#x<<"="<<x<<endl
    #define MP(x,y) make_pair(x,y)
    using namespace std;
    typedef long long LL;
    typedef pair<int,int> pii;
    int a[N],b[N];
    int main()
    {
        int n,m,ans=0,flag,t,l,r,mid,x,now,i;
        freopen("note.in","r",stdin);
        freopen("note.out","w",stdout);
        cin>>n>>m;
        for(i=1;i<=m;i++)
        {
            scanf("%d%d",&a[i],&b[i]);
            if(i==1)
                ans=b[i]+a[i]-1;
            else
            {
                t=a[i]-a[i-1];
                x=b[i]-b[i-1];
                if(abs(x)>t)
                {
                    printf("IMPOSSIBLE
    ");
                    return 0;
                }
                x=abs(x);
                ans=max(ans,max(b[i],b[i-1]));
                l=0,r=INF;
                now=0;
                while(l<=r)
                {
                    mid=(l+r)>>1;
                    if(mid+abs(mid-x)<=t)
                        now=mid,l=mid+1;
                    else r=mid-1;
                }
                ans=max(ans,min(b[i],b[i-1])+now);
            }
            if(i==m)
                ans=max(ans,b[i]+n-a[i]);
        }
        cout<<ans<<endl;
        return 0;
    }
    // davidlee1999WTK 2015/
    // srO myk Orz
    //ios::sync_with_stdio(false);
    /*
    100 1
    10 10
    */
  • 相关阅读:
    Linux下Subversion的使用
    python3之HTML、CSS学习
    Python成长之路 常用模块与正则表达式
    Css3 列表布局 两列或者多列布局整理
    .net 通过代码控制GridView显示列
    .net 创建一个页面级全局datatable的方法
    .net 将分页展示的GridView的全部数据 导出excel
    .net 如何判断dataset是否为空
    sql 全表结构备份
    sql 把一个表中的某一列赋值到另一个表中的某一列
  • 原文地址:https://www.cnblogs.com/hyfer/p/5875171.html
Copyright © 2011-2022 走看看