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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

沉鱼落雁

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

題源:https://www.cometoj.com/contest/65/problem/B?problem_id=3683

題目描述

?

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

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

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

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

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

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

?

輸入描述

?

第一行一個整數(shù)?n?(1<=n<=1e5),表示成語序列長度為?n。同一個成語最在序列中最多出現(xiàn)?3?次。

接下來?n?個整數(shù) a1,a2,...,an(a<=ai<=1e9) 表示一個成語序列,每個正整數(shù)都代表一個成語,兩個成語不同當且僅當值不同。

?

輸出描述

?

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

?

樣例輸入 1?

9 5 4 3 1 3 1 1 5 5

樣例輸出 1

2

樣例解釋 1

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

樣例輸入 2?

5 1 2 3 4 5

樣例輸出 2

5

題意:給n個數(shù),可以重新排序,不過要相同元素最小間隔最大
反正當時沒做出來,手動滑稽
題解:唉,不想了,復(fù)制官方的,看完后感覺太坑了

?

?

?

?嗯,應(yīng)該是沒腦子的人

#include <math.h> #include <iostream> #include<cstring> #include <algorithm> using namespace std; int a[100009]; int b[100009]; int main() {int n;cin>>n;for(int i=0; i<n; i++){cin>>a[i];}sort(a,a+n);int ans1=-1;int ans2=-1;int k=0;int x=0,y=0,z=0;for(int i=0; i<n;){if(a[i]==a[i+1]&&a[i+1]==a[i+2]){i+=3;x++;}if(a[i]==a[i+1]&&a[i+1]!=a[i+2]){i+=2;y++;}if(a[i]!=a[i+1]){i++;z++;}}if(x!=0)cout<<x+y+z/2-1;if(x==0&&y!=0)cout<<y-1+z; if(x==0&&y==0)cout<<n; } View Code

?

完結(jié),撒花,沒腦子的先溜了

轉(zhuǎn)載于:https://www.cnblogs.com/RE-TLE/p/11494570.html

總結(jié)

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

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