a1206. 小z的襪子
時間限制:1.0s 記憶體限制:512.0mb
總提交次數: ac次數: 平均分:
將本題分享到: 檢視未格式化的試題 提交 試題討論
試題**
2010中國國家集訓隊命題答辯
問題描述
作為乙個生活散漫的人,小z每天早上都要耗費很久從一堆五顏六色的襪子中找出一雙來穿。終於有一天,小z再也無法忍受這惱人的找襪子過程,於是他決定聽天由命……
具體來說,小z把這n只襪子從1到n編號,然後從編號l到r(l 儘管小z並不在意兩隻襪子是不是完整的一雙,甚至不在意兩隻襪子是否一左一右,他卻很在意襪子的顏色,畢竟穿兩隻不同色的襪子會很尷尬。
你的任務便是告訴小z,他有多大的概率抽到兩隻顏色相同的襪子。當然,小z希望這個概率盡量高,所以他可能會詢問多個(l,r)以方便自己選擇。
輸入格式
輸入檔案第一行包含兩個正整數n和m。n為襪子的數量,m為小z所提的詢問的數量。
接下來一行包含n個正整數ci,其中ci表示第i只襪子的顏色,相同的顏色用相同的數字表示。
再接下來m行,每行兩個正整數l,r表示乙個詢問。
輸出格式
輸出檔案包含m行,對於每個詢問在一行中輸出分數a/b表示從該詢問的區間[l,r]中隨機抽出兩隻襪子顏色相同的概率。若該概率為0則輸出0/1,否則輸出的a/b必須為最簡分數。(詳見樣例)
樣例輸入
6 4
1 2 3 3 3 2
2 6
1 3
3 5
1 6
樣例輸出
2/5
0/1
1/1
4/15
樣例說明
詢問1:共c(5,2)=10種可能,其中抽出兩個2有1種可能,抽出兩個3有3種可能,概率為(1+3)/10=4/10=2/5。
詢問2:共c(3,2)=3種可能,無法抽到顏色相同的襪子,概率為0/3=0/1。
詢問3:共c(3,2)=3種可能,均為抽出兩個3,概率為3/3=1/1。
注:上述c(a, b)表示組合數,組合數c(a, b)等價於在a個不同的物品中選取b個的選取方案數。
資料規模和約定
30%的資料中 n,m ≤ 5000;
60%的資料中 n,m ≤ 25000;
100%的資料中 n,m ≤ 50000,1 ≤ l < r ≤ n,ci ≤ n。
思路:莫隊演算法,求在給定區間找到2只相同襪子的概率.輸出最簡分數。
總的情況數是n*(n-1)(n為區間長度),記錄的是每種顏色在當前區間內的選擇2只的總的情況數為c(2,x)=(x^2-x)/2
code:
#include
#define ll long long
using
namespace
std;
const
int ax = 5e4+66;
int a[ax];
int b[ax];
int len;
struct nodes[ax];
ll ans ;
int num[ax];
node res[ax];
bool cmp( const node &x , const node &y )
void solve( int x , int add )
int main()
len = sqrt(n);
for( int i = 1 ; i <= n ; i++ )
for( int i = 0 ; i < m ; i++ )
sort( s , s + m , cmp );
int l = 1 , r = 0;
ans = 0;
for( int i = 0 ; i < m ; i++ )
for( int i = 0 ; i < m ; i++ )
return
0 ;}
清橙 A1206 小Z的襪子(莫隊演算法)
a1206.小z的襪子 時間限制 1.0s 記憶體限制 512.0mb 總提交次數 1357 ac次數 406 平均分 46.75 將本題分享到 檢視未格式化的試題 提交試題討論 試題 2010中國國家集訓隊命題答辯 問題描述 作為乙個生活散漫的人,小z每天早上都要耗費很久從一堆五顏六色的襪子中找出...
小z的襪子(莫隊)
description 作為乙個生活散漫的人,小z每天早上都要耗費很久從一堆五顏六色的襪子中找出一雙來穿。終於有一天,小z再也無法忍受這惱人的找襪子過程,於是他決定聽天由命 具體來說,小z把這n只襪子從1到n編號,然後從編號l到r l 儘管小z並不在意兩隻襪子是不是完整的一雙,甚至不在意兩隻襪子是否...
小z的襪子(莫隊)
description 作為乙個生活散漫的人,小z每天早上都要耗費很久從一堆五顏六色的襪子中找出一雙來穿。終於有一天,小z再也無法忍受這惱人的找襪子過程,於是他決定聽天由命 具體來說,小z把這n只襪子從1到n編號,然後從編號l到r l 儘管小z並不在意兩隻襪子是不是完整的一雙,甚至不在意兩隻襪子是否...