JZOJ 3025. 選擇客棧(hotel) (Standard IO) NOIP2011
阿新 • • 發佈:2019-01-18
p s text 結果 noi clu code cin standard bsp
題目
分析
還是要先分析
如果按照常規做法我們肯定是先把相同色調的先放在一起然後在全枚舉算出結果
但很明顯會超時
所以我們不能這樣子做
首先我們先預處理
算出前i個中當前顏色的總個數
將每個顏色最後出現的位置記錄下來
結果其實就是等於
將每一個co[f[i]][a[i]]加在一起
代碼
1 #include<iostream> 2 using namespace std; 3 int a[200001]; 4 int co[200001][60]; 5 int f[200001]; 6 int main () 7 { 8 int n,k,p; 9 cin>>n>>k>>p; 10 int b; 11 for (int i=1;i<=n;i++) 12 { 13 cin>>a[i]>>b; 14 for(int j=0;j<k;j++) 15 { 16 co[i][j]=co[i-1][j]; 17 } 18 co[i][a[i]]++; 19 if (b<=p) 20 f[i]=i; 21 else 22 f[i]=f[i-1]; 23 } 24 int ans=0; 25 for (int i=1;i<=n;i++) 26 { 27 ans+=co[f[i]][a[i]]; 28 if (f[i]==i) ans--; 29 } 30 cout<<ans; 31 }
JZOJ 3025. 選擇客棧(hotel) (Standard IO) NOIP2011