日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Comet OJ - Contest #10 沉鱼落雁

發(fā)布時間:2023/12/14 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Comet OJ - Contest #10 沉鱼落雁 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Comet OJ - Contest #10 沉魚落雁

題目描述

胖頭魚在苦惱“沉魚落雁”是什么好吃的東西,這很顯然是因為他成語沒背夠。

于是他決定開始背成語。胖頭魚身為魚界大佬,背成語的姿勢自然也和常人不一:

他會先將所有要背的成語一字排開,比較難背的成語會重復(fù)出現(xiàn),最多重復(fù) 33 次 (也就是出現(xiàn)次數(shù)可能為 11, 22 或 33)。這樣就得到了一個可能有重復(fù)元素的成語序列,然后他會將這個序列打亂順序,并按打亂后的順序背下去。為了均勻的背所有成語,提高背成語的效率,相同成語在打亂后的序列中出現(xiàn)位置的最小間隔自然是越大越好。 (編號為 aa 和 bb (a<ba<b) 的兩個位置的間隔定義為 b-a-1b?a?1)

現(xiàn)在胖頭魚把打亂前的成語序列給你,你需要幫他打亂順序,使得相同成語的最小間隔最大。

你不需要輸出確切的方案,僅求出最小間隔的最大值即可。

特別地,當(dāng)每種成語都只出現(xiàn)一次時,把最小間隔的最大值視為nn。

輸入描述

第一行一個整數(shù)n(1<=n<=1e5),表示成語序列長度為 n。同一個成語最在序列中最多出現(xiàn) 3 次。
接下來 n 個整數(shù) a1, a2, ……, an(1<=ai<=1e9) 表示一個成語序列,每個正整數(shù)都代表一個成語,兩個成語不同當(dāng)且僅當(dāng)值不同。

輸出描述

輸出一個整數(shù),表示最小間隔的最大值。

樣例輸入 1

9 5 4 3 1 3 1 1 5 5

樣例輸出 1

2

樣例解釋 1

其中一組可行方案是1 3 5 1 3 5 1 4 5,容易驗證沒有比 22 更大的答案。

樣例輸入 2

5 1 2 3 4 5

樣例輸出 2

5

題目一開始很懵,后來發(fā)現(xiàn)最大距離就是個數(shù)為2的種類加個數(shù)為3的種類減1,即:ans=m1+m2-1,個數(shù)為1的種類只需補(bǔ)給m1和m2即可,需特判一下3的種類為0和輸出為n的情況:

#include <bits/stdc++.h> using namespace std; typedef long long ll;int a[100005]; map<int,int>p;//計數(shù) map<int,int>v;//標(biāo)記 int main() {int n;cin>>n;int num=0;int m1=0;//3的種類int m2=0;//2的種類int m3=0;//1的種類for(int i=0;i<n;i++){scanf("%d",&a[i]);if(p.count(a[i])==0) {p[a[i]]=1; num++;v[a[i]]=1;}else p[a[i]]++;}for(int i=0;i<n;i++){if(p[a[i]]==3 && v[a[i]]) {m1++; v[a[i]]=0;}else if(p[a[i]]==2 && v[a[i]]) {m2++; v[a[i]]=0;}else if(p[a[i]]==1 && v[a[i]]) {m3++; v[a[i]]=0;}}if(num==n) cout<<n;else if(m1==0) {cout<<m2+m3-1;}else if(m1){int k=m3/3,i=0,j=0;if(m3==1) {m1++;m2--;}else{for(i=0;i<=k;i++){if((m3-i*3)%2==0){j=(m3-i*3)/2;break;}}m1+=i;m2+=j;}cout<<m1+m2-1;}return 0; }

總結(jié)

以上是生活随笔為你收集整理的Comet OJ - Contest #10 沉鱼落雁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。