D. Dog Show 2017-2018 ACM-ICPC, NEERC, Southern Subregional Contest, qualification stage (Online Mirror, ACM-ICPC Rules, Teams Preferred)
http://codeforces.com/contest/847/problem/D
巧妙的贪心
仔细琢磨。。。
像凸包里的处理
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cmath> 4 #include <cstring> 5 #include <time.h> 6 #include <string> 7 #include <set> 8 #include <map> 9 #include <list> 10 #include <stack> 11 #include <queue> 12 #include <vector> 13 #include <bitset> 14 #include <ext/rope> 15 #include <algorithm> 16 #include <iostream> 17 using namespace std; 18 #define ll long long 19 #define minv 1e-6 20 #define inf 1e9 21 #define pi 3.1415926536 22 #define E 2.7182818284 23 const ll mod=1e9+7;//998244353 24 const int maxn=2e5+10; 25 26 vector<int>b; 27 vector<int>::iterator j; 28 int a[maxn]; 29 30 priority_queue<int>s; 31 32 int main() 33 { 34 int n,m,i,a,sum=0,g=0; 35 scanf("%d%d",&n,&m); 36 for (i=1;i<=min(m-1,n);i++) 37 { 38 scanf("%d",&a); 39 if (a>=m) 40 continue; 41 while (!s.empty() && s.top()>=m-i) 42 { 43 s.pop(); 44 g--; 45 } 46 s.push(a-i); 47 g++; 48 sum=max(sum,g); 49 } 50 cout<<sum; 51 return 0; 52 }