HDU 4747 Mex 维护(2013 ACM/ICPC Asia Regional Hangzhou Online 1010)
彩笔请多指教!
转载请注明出处__谢谢! http://www.cnblogs.com/HaibaraAi/articles/3340092.html by---HaibaraAi 求认识大神(ˇ^ˇ),目前只会水题- -#~~~!
1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 #define maxn 200005 6 #define ll __int64 7 int p[maxn]; 8 int mp[maxn]; 9 int a[maxn]; 10 int main(){ 11 int n; 12 while(scanf("%d",&n)&&n){ 13 ll ans=0,now=0,pre=0; 14 memset(p,0,sizeof p); 15 memset(mp,0,sizeof mp); 16 for(int i=1;i<=n;i++)scanf("%d",&a[i]); 17 for(int i=1;i<=n;i++){ 18 if(a[i]<=n){ 19 pre=p[a[i]]; 20 p[a[i]]=i; 21 for(int j=a[i];j<=n;j++){ 22 if(j)mp[j]=min(mp[j-1],p[j]); 23 else mp[j]=p[j]; 24 if(mp[j]>pre)now+=mp[j]-pre; 25 else break; 26 } 27 } 28 ans+=now; 29 } 30 printf("%I64d\n",ans); 31 } 32 return 0; 33 }
浙公网安备 33010602011771号