【數論 / 數值】【RQNOJ】羽毛_div

來源:互聯網
上載者:User

題目描述

背景
眾所周知,潘帕斯草原是雄鷹翱翔的地方,那裡有很多的鷹,@潘帕斯雄鷹為了展示自己的與眾不同將自己的羽毛進行了染色,由此給自己引來了麻煩
題目
在潘帕斯草原上牛甚多,他們統治著草原的中心部分,鷹的領地環繞著牛所在的地方,而且每個鷹都有一片自己的領地。在@潘帕斯雄鷹將羽毛進行染色後,其他的鷹紛紛效仿,也想把自己的羽毛染成五顏六色。但是問題隨之而來,相鄰的兩個鷹(1和2相鄰,1和n也是相鄰的)如果發現對方身上有和自己有一樣顏色的羽毛就會和對方進行一場你死我活的空中戰鬥。為了避免這種情況必須要想一種辦法才行。由於@潘帕斯雄鷹是第一個將羽毛進行染色的鷹,他被鷹們指派去買顏料(自費T_T),買顏料當然是要花錢的。@潘帕斯雄鷹想盡量的少買顏料。他發現由於各個鷹的喜好不同,他們想在身上染的顏色種類的個數也是不一樣的,有些鷹喜歡把自己的羽毛塗的顏色多些,有些則少。通過統計得出了第i個鷹想在自己身上塗Ai種顏色。你現在的任務是維護世界和平找到最少的顏色種類使得每個相鄰的鷹身上的羽毛顏色都可以沒有相同的。 輸入格式

第一行n(1<=n<=20000)
第二行開始每行有一個數ai(1<=ai<=100000)表示第i個鷹要在身上塗ai種顏色 輸出格式

一個數,即最少的滿足條件的顏色種類 範例輸入

4 2 2 1 1 範例輸出

4

三維狀態映像

 

 

引用barty的題解:

 數學方法
因為相鄰的不能有重複顏色,所以顏色種數至少是相鄰兩個的羽毛數總和
又考慮一共有m根羽毛,相同顏色的羽毛最多有(N div 2)根,因此顏色至少有m div (N div 2)種{注意是上取整}。
完。

 

#include<stdio.h> #include<math.h> int ans; int a[20001],m,n,i,j; int main() { scanf("%d",&n); for (i=1;i<=n;++i) scanf("%d",&a[i]); for (i=1;i<n;++i) if (a[i]+a[i+1]>ans) ans=a[i]+a[i+1]; for (i=1;i<=n;++i) m+=a[i]; double mm=m,nn=n,tem; tem=ceil(mm/((int)(nn/2))); if ((int)tem>ans) ans=(int)tem; printf("%d/n",ans); 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.