【貪心】均分紙牌

來源:互聯網
上載者:User

標籤:

【貪心】均分紙牌題目描述

有N堆紙牌,編號分別為1,2,…,N。每堆上有若干張,但紙牌總數必為N的倍數。可以在任一堆上取若干張紙牌,然後移動。
移牌規則為:在編號為1堆上取的紙牌,只能移到編號為2的堆上;在編號為N的堆上取的紙牌,只能移到編號為N-1的堆上;其他堆上取的紙牌,可以移到相鄰左邊或右邊的堆上。
現在要求找出一種移動方法,用最少的移動次數使每堆上紙牌數都一樣多。
例如 N=4,4堆紙牌數分別為:
① 9 ② 8 ③ 17 ④ 6
移動3次可達到目的:
從③ 取4張牌放到④ (9 8 13 10)-> 從③ 取3張牌放到② (9 11 10 10)->從② 取1張牌放到① (10 10 10 10)。

輸入

輸入檔案中包括兩行資料。
第一行為N堆紙牌數(1<=N<=100)。
第二行為N堆紙牌中每堆紙牌初始數A1,A2,…,An(l<=Ai<=10000)。

輸出

輸出檔案中僅一行,即所有堆均達到相等時的最少移動次數。

範例輸入
49 8 17 6
範例輸出
3
分析:因為每張紙牌只能移到相鄰紙牌,且1隻能移到2,n只能移到n-1,所以每次把最左邊的紙牌變成目標狀態,並轉移成減少一張牌的狀態;
代碼:
#include <iostream>#include <cstdio>#include <cstdlib>#include <cmath>#include <algorithm>#include <climits>#include <cstring>#include <string>#include <set>#include <map>#include <queue>#include <stack>#include <vector>#include <list>#include <ext/rope>#define rep(i,m,n) for(i=m;i<=n;i++)#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)#define vi vector<int>#define pii pair<int,int>#define mod 1000000007#define inf 0x3f3f3f3f#define pb push_back#define mp make_pair#define fi first#define se second#define ll long long#define pi acos(-1.0)const int maxn=1e3+10;const int dis[][2]={0,1,-1,0,0,-1,1,0};using namespace std;using namespace __gnu_cxx;ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}int n,m,a[maxn],ans,sum,now;int main(){    int i,j,k,t;    scanf("%d",&n);    rep(i,0,n-1)scanf("%d",&a[i]),sum+=a[i];    sum/=n;    rep(i,0,n-1)    {        if(a[i]!=sum)a[i+1]+=a[i]-sum,ans++;    }    printf("%d\n",ans);    //system("pause");    return 0;}

 


【貪心】均分紙牌

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.