無憂公主 2018-07-10
題目名稱:超級跳棋
檔名稱:super.in / super.out
題目描述
小明是今年超級跳棋比賽的裁判,每輪有三名選手參加,結束時統計的分數一定是正整數,形如 a:b:c。小明的任務是在一塊特殊的計分板上展示分數,他一共準備了
n n
塊寫有正整數 x1
,x2,
……,x
n' role="presentation" style="position: relative;">x1,
x2,…
…,xn
x1,x
2,……
,xn的卡片,可供填寫在 a、b、c 的位置上。此外,小明了解到超級跳棋的規則,他發現 a、b、c 之間最多相差
k k
倍,例如 ca
>
k' role="presentation" style="position: relative;">c
a>kc
a>
k就是不合法的分數。為了檢驗他準備得是否充分,你需要計算小明可以在計分板上擺放出多少種不同的分數,即 (a,b,c) 這樣的三元組有多少個。
限制1s 256m
對於 20% 的資料,3≤
n≤100,
000,k=
1,1≤
xi≤100
,000
3 ≤n
≤100
,000,k
=1,1
≤xi≤
100,
000對於另外 20% 的資料,3≤
n≤100,1≤
k≤100,1≤
xi≤100
3 ≤n
≤100,1
≤k
≤100,1
≤xi≤
100對於另外 30% 的資料,3≤
n≤100,
000,1≤
k,xi
≤109且
所有xi
互不相同
3 ≤n
≤100
,000,1
≤k,x
i≤109
且所有x
i互不相
同對於另外 30% 的資料,3≤
n≤100,
000,1≤
k,xi
≤109 3≤n
≤100
,000,1
≤k,x
i≤109
輸入格式
第一行,兩個整數
n n
和 k' role="presentation" style="position: relative;">kk
第二行,
n n
個整數 x1
,x2,
……,x
n' role="presentation" style="position: relative;">x1,
x2,…
…,xn
x1,x
2,……
,xn
輸出格式
乙個整數,表示 (a,b,c) 三元組的個數
輸入樣例
5 21 1 2 2 3
輸出格式
樣例解釋
小明可以擺出的 a:b:c 有以下這些:1:1:2、1:2:1、2:1:1、1:2:2、2:1:2、2:2:1、2:2:3、2:3:2、3:2:2。由於 k=
2 k=2
,1 和 3 不能同時出現。
題解首先將 xi
x
i排序,對於固定的最小值 xi
x
i,a、b、c 三個數必然在 xi
x
i到 xj
x
j中選(即 xj
+1xi
>
k xj+
1x
i>
k),當然對於
i i
可以掃瞄線快速求得
j' role="presentation" style="position: relative;">j
j。假設 xi
x
i必然取,然後可以根據 xi
x
i選 1 個還是 2 個還是 3 個,分類討論並用乘法原理統計答案。需要同時維護當前 xi
x
i到 xj
x
j有幾個是只出現了 1 次、有幾個是出現了至少 2 次的(用 map 記錄乙個數出現了幾次)。
#include
using
namespace
std;
template
void read(t &t)
do while ('0'
<=ch&&ch<='9'); t*=f;
}typedef
long
long ll;
const
int maxn=100010;
int n,k,x[maxn],a[maxn],sz;
map m;
ll ans;
int main()
sort(x+1,x+(n+1));
for (int i=1;i<=n;i++)
if (x[i]!=x[i-1]) a[++sz]=x[i];
int pos=0,c1=0,c2=0;
for (int i=1;i<=sz;i++)
int v=0;
if (m[a[i]]>=2) v++;
int s=c1+c2-1;
ans+=3*(c1-v);
if (s>1) ans+=3ll*s*(s-1);
if (m[a[i]]>=2) ans+=3*(c1+c2-1);
if (m[a[i]]>=3) ans++;
if (m[a[i]]>=2) c1--; else c2--;
}printf("%lld\n",ans);
return
0;}
ISIJ 2018 奇怪的字串
題目名稱 奇怪的字串 檔名稱 strange.in strange.out 題目描述 考慮字串 s 僅由小寫字母組成,例如 abba 定義 w s 為 s 所有本質不同的連續子串的集合,例如 w abba 定義 y s 為 s 所有本質不同的非連續子串的集合,例如 y abba w abba 顯然 ...
jzoj3294 SHTSC2013 超級跳馬
僅有一行,包含兩個正整數n,m,表示棋盤的規模。output 僅有一行,包含乙個整數,即跳法種數mod 30011。sample input 3 5sample output data constraint 對於10 的資料,1 n 10,2 m 10 對於50 的資料,1 n 10,2 m 10 ...
2023年3月 CCF真題1 跳一跳
問題描述 近來,跳一跳這款小遊戲風靡全國,受到不少玩家的喜愛。簡化後的跳一跳規則如下 玩家每次從當前方塊跳到下乙個方塊,如果沒有跳到下乙個方塊上則遊戲結束。如果跳到了方塊上,但沒有跳到方塊的中心則獲得1分 跳到方塊中心時,若上一次的得分為1分或這是本局遊戲的第一次跳 躍則此次得分為2分,否則此次得分...