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