NOIP2013提高组 day2 2019.7.15

T1 :积木大赛

送分题,简单模拟

一道贪心或者动态规划(如果你愿意的话)。反正我是不想搞所谓动态规划,贪心解之。

#include<iostream>
using namespace std;
const int MAXN=100100;
int n;
int a[MAXN];
int minn;
int ans;
int main(){
    //freopen("block.in","r",stdin);
    //freopen("block.out","w",stdout);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        if(minn<a[i]){
            ans+=(a[i]-minn);
            minn=a[i];
        }
        else{
            minn=a[i];
        }    
    }
    cout<<ans;
}

T2 :花匠

这个题写的时候犯了一个严重笔误。我是万万没想到啊!这个世界上居然有高度为0的花!Noip不仅教你斗地主教你下棋,他还要教你种花你懂吗。

行。我没看清数据范围,我的锅!你狠!(恶狠狠)(出题人盆栽全部高度归零)

#include<iostream>
using namespace std;
const int MAXN= 100100;
int n;
int H[MAXN];
int Delete;

//1864315

//184315->18315/18415->1815/1835?£/1845/1815 ->same 
//186315->18615/18315->1865/1815?£/1835/1815->may same+1 

int main(){
    //freopen("flower.in","r",stdin);
    //freopen("flower.out","w",stdout);
    //cin.sync_with_stdio(false); 
    cin>>n;
    for(int i=1,j=1;j<=n;i++,j++){
        cin>>H[i];
        if(H[i]==H[i-1]){
            //H[i]=0;
            Delete++;
            i--;
        }
    }

    n-=Delete;
    Delete=0;
    bool first=false;
    bool second=false;
    for(int i=2;i<n;i++){
        second=false;
        first=false;
//        if(H[i-1]==0){
//            continue;
//        }
        if(H[i]>H[i+1]){
            first=true;
        }
        if(H[i]>H[i-1]){
            second=true;
        }
        if(first^second){
            //cout<<i<<endl;
            Delete++;
            H[i]=H[i-1];
        }
    }
    n-=Delete;
    if(n<=2){
        n=1;
    }
    cout<<n;
}

直接放AC代码了。那个蠢萌的错误代码我就不贴了(还好只有两组数据含0…)

T3 :华容道

 

posted @ 2019-07-15 16:17  L1ngYi  阅读(144)  评论(0编辑  收藏  举报