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…)