這道題可以用貪心的方法把乙個問題的整體慢慢的優化成為更加簡單的問題 在n個數中
先把其從第乙個數開始作為乙個處理開端 求平均就不說了 如果第乙個數是平均數,
就可以直接跳過第乙個數(如程式中的 continue) 如果不是平均數,
把它的值減去平均數向左移動(如果為正本就應該向左,為負可看作後面的數向右移結合它,步數都相同)
#includeusing namespace std;
int main()
sum=sum/n;
int ans=0;
for( i=0;inum[i+1]+=num[i]-sum;
if(num[i+1]==sum)
ans++;
} cout<}
1098 均分紙牌
2002年noip全國聯賽提高組 時間限制 1 s 空間限制 128000 kb 有 n 堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為 n 的倍數。可以在任一堆上取若於張紙牌,然後移動。移牌規則為 在編號為 1 堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌...
天梯 1098 均分紙牌
解題報告 給出n堆紙牌,現在規定 第一堆的牌只能移動到第二堆,然後第n堆的牌只能移動到第n 1堆,然後其他的堆裡的牌可以往兩邊移動,一次可以移動任意張,問最少可以經過多少次移動才可以使得所有堆裡面的牌的數量相同 可以確定的是牌的總數是堆的數的整數倍 這題可以說是貪心,我的做法是定義乙個數,初始化為0...
codevs 1098 均分紙牌
題目描述 description 有 n 堆紙牌,編號分別為 1,2,n。每堆上有若干張,但紙牌總數必為 n 的倍數。可以在任一堆上取若於張紙牌,然後移動。移牌規則為 在編號為 1 堆上取的紙牌,只能移到編號為 2 的堆上 在編號為 n 的堆上取的紙牌,只能移到編號為 n 1 的堆上 其他堆上取的紙...