(紀中)2171. 迷宮大門(door)【貪心】

(File IO): input:door.in output:door.out
時間限制: 1000 ms 空間限制: 262144 KB 具體限制
Goto ProblemSet


題目描述
在跳棋遊戲大獲全勝後,小明就開始一個人在校園裏溜達了。突然他在校園角落裏發現了一面神奇的牆壁,牆壁上有一排釘子,每個釘子上都掛着一根兩端繫有小球的繩子,如下圖所示
在這裏插入圖片描述
小明可以調整每一根繩子在釘子左右兩端的長度,當來自不同繩子的相鄰小球高度一樣時(具體可見樣例說明),便可獲得積分1分。當小明的方案獲得最高積分時,迷宮大門就會開啓,小明就可以進去尋找寶藏啦!


輸入
輸入文件door.in第一行爲一個正整數n,表示牆上的繩子數。
接下來n行,每行2個整數a和b,表示繩子左右兩端的初始長度。

輸出
輸出文件door.out僅有一個正整數,表示小明可以獲得的最高積分。


樣例輸入
3
1 1
3 2
1 4

樣例輸出
2


數據範圍限制
在這裏插入圖片描述


提示
在這裏插入圖片描述


解題思路
貪心……


代碼

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,a[1000010],x,y,ans,l,r,maxn,minn;
int main()
{
    freopen("door.in","r",stdin);
    freopen("door.out","w",stdout);
    scanf("%d",&n);
    for(int i=1; i<=n; i++)
    {
        scanf("%d%d",&x,&y);
        a[i]=x+y;
    }
    r=a[1];
    for(int i=2; i<=n; i++)
    {
        if(a[i]<l)
            l=0,r=a[i];
        else
        {
            if(a[i]>r)
                minn=a[i]-r;
            else
                minn=0;
            
            maxn=a[i]-l;
             l=minn;
             r=maxn;
            ans++;
        }

    }
    printf("%d",ans);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章