[TIOJ] 1176 Cows
problem link:http://tioj.infor.org/problems/1176
這題看起來就很"單調",實際上就是要維護遞減,由於有更高的牛的話,之前比它矮的都可以不管了,所以用個當作stack的vector就很好實作了,不過我還是智障到一直寫不好QQ
最後發現我的時間爆多!?好像是因為我亂reverse的關係吧,不過應該也不會多到四十倍有餘吧@@,目前無解,有空去問問看別人好了。
這題看起來就很"單調",實際上就是要維護遞減,由於有更高的牛的話,之前比它矮的都可以不管了,所以用個當作stack的vector就很好實作了,不過我還是智障到一直寫不好QQ
最後發現我的時間爆多!?好像是因為我亂reverse的關係吧,不過應該也不會多到四十倍有餘吧@@,目前無解,有空去問問看別人好了。
#include<bits/stdc++.h> #define pb push_back #define pi pair<int,int> #define all(v) (v).begin(),(v).end() using namespace std; int t; vector<pi> a,inc; vector<int> ans; int main() { cin >> t; for(int i = 0; i < t; i++) { int b; cin >> b; a.pb({b,i}); } reverse(all(a)); int ok = 0; for(auto i:a) { while(!inc.empty() && inc.back().first <= i.first) inc.pop_back(); if(inc.empty()) ans.pb(t-i.second-1); else ans.pb(inc.back().second-i.second); inc.pb(i); } reverse(all(ans)); for(auto i:ans) cout << i << endl; }
留言
張貼留言