均分紙牌題解

https://www.luogu.org/problemnew/show/P1031blog

題目是個水題,可是我以爲其思想仍是很好的ci

首先是個求平均數,這個沒什麼好說的class

其次就用了個相似差分的思想,將離平均數的個數用正負來表示,正的是須要轉移給別人的,負的是須要被轉移的統計

而後就用了前綴和,更準確來講用了dp的思想----狀態轉移,由於這個數要爲正只能被其前面或後面轉移而來,取同一個方向,就只能是同一個方向轉移移動

 for(int i=1;i<=n;i++){cin>>a[i];ans+=a[i];}
 ans/=n;
 for(int i=1;i<=n;i++)a[i]-=ans;
for(int i=1;i<=n;i++) if(a[i]) {a[i+1]+=a[i];k++;}

  而後只有不爲0時纔不用移動(由於是同一方向,具備無後效性,例如從左到右,前綴和時有一個爲0了,那就說明這個數的多餘部分都是給了他前面的(無後效性!!!!)di

而後就很清楚了,統計一下就好了new

相關文章
相關標籤/搜索