贪心80分求助大犇

P1970 [NOIP2013 提高组] 花匠

这组数据试试: ``` 6 1 1 2 2 1 1 ``` 正确答案:3 你的程序:2
by Hope2075 @ 2018-10-19 16:28:28


@[ALGOBAKE__YE](/space/show?uid=29691) 我还没学过但是我有另一个对的 #include<bits/stdc++.h> using namespace std; int main() { int n,h[1000005],ans=1,c; cin>>n;for(int i=1;i<=n;i++) cin>>h[i]; if(h[2]>=h[1]) c=1; for(int i=1;i<=n;i++) { if(c==0&&i==n) {ans++;break;} if(c==1) if(h[i+1]<h[i]){ans++;c=0;continue;} if(c==0) if(h[i+1]>h[i]) {ans++;c=1;continue;} } cout<<ans; } 额你整理一下吖
by 1111imt @ 2019-08-06 21:07:07


你那种贪心写法我也试过一直过不了(也80)。换一个思路想想 ,这题其实满足两个条件其中一个就可以了。第一个必定选第一个不选的话会少一种 把升的标为1降的标为0。找到101这种有多少个就可以了。还有一个条件是上面我说的一样道理只不过反过来求010就可以了。
by 小小怪下士___ @ 2019-08-08 15:01:09


等于0的情况也要考虑到(卡我很久这个)
by 小小怪下士___ @ 2019-08-08 15:01:36


|