BestCoder 31 簡要題解

2021-06-28 21:07:50 字數 2130 閱讀 6440

zhw神犇出題就是強啊。。。

john 在

x 軸上擁有

n個點,他們的座標分別為(x

[i],

0),(i=

0,1,

2,…,

n−1)

。 他想知道有多少對

b>

滿足 |

x[b]

−x[a

]|≤k

(a。

題解

對於每個點,二分它右邊離他最遠、但是又在距離 k

內的點,然後加到答案裡,這樣做複雜度是nl

ogn的,由於pretest太水,最終ac的人竟然並不是很多

#include 

#include

#include

#include

#include

#define maxn 110000

using

namespace

std;

typedef

long

long

int ll;

ll ans=0;

int x[maxn],n,k;

int main()

ans+=(ll)(tmp-i);

}printf("%lld\n",ans);

}return

0;}

令 a=

∑ni=

1ai∗

10n−i

(1≤a

i≤9)

(n為a

的位數)。若

a 為「漂亮的數」當且僅當對於任意1≤

ia[i]

≥a[i

+1] 且對於任意1≤

i≤n,

in ,滿足a[

i]mod a[

j]=0

(例如931是乙個「漂亮的數」而87不是),求在區間[l

,r] (包含l和r)裡「漂亮的數」的個數。

題解

#include 

#include

#include

#include

#include

using namespace std;

int digit[11],len; //digit陣列儲存數字(個位在1),len陣列儲存x的長度,digit陣列剛開始我開成10然後過了pretest最終fst有木有!!!!掉rating有木有!!!!!

int num[10][11]=,,,

,,,,

,,

};int ans=0;

void dfs(int

last,int

pos,bool danger)

for(int i=1;i<=num[last][0];i++)

else

if(last==digit[pos+1]&&digit[pos]>=next)

}}int work(int

x) //求[1,x]中美麗的數的個數

for(int i=0;i<=9;i++)

if(digit[len]>=i)

return ans;

}int main()

return

0;}

在n∗n的西洋棋中,放置若干個國王和k個車,使得國王之間不互相攻擊,車之間不互相攻擊,車不可攻擊到國王(這並不代表國王不能攻擊到車)。國王能攻擊到它上下左右,左上左下右上右下八個位置的棋子,車可以攻擊到同一行或同一列中的棋子,求方案總數對1000000007取模後的值。

現在你有乙個棧和

n 個數1,

2,3,

…,n。這

n 個數依次進入棧頂,且在某個時刻在棧頂中彈出。你可以參見樣例獲得更多的資訊。

這個問題非常簡單,因此我想給你一些限制條件。

這裡有m

個限制,每個限制形如

b>

,表示 a

必須在b之前先彈出。

你能告訴我有多少種合法的彈出棧的方案嗎?

我知道這個答案或許非常大,你只需告訴我這個答案 m

od1000000007(10

9+7)

就行了。

BestCoder 33 簡要題解

真是傷心。這場比賽我兩個題在20min中全部做完,全部因為忘了特判導致fst,我是sb。最水的題,純比手速,結果我為了搶時間忘記特判,最後fst掉了。要特判的情況就是輸出的答案為0的情況。include include include include include define maxn 500 ...

題解 CF1485 簡要題解

奇怪的難度。當 b 2 的時候再操作,操作次數是一定的。因此 b 的變化量很小,暴力列舉。考慮哪個數不同,然後不同後可以選擇的區間是什麼。會發現中間夾著的區間選兩遍,旁邊的選一遍。做字首和好了。簡單轉化發現一定要滿足 a k b 1 k。列舉 b 貢獻式帶有乙個 min 找到其分割點,前一部分直接求...

走迷宮 簡要題解

走迷宮,帶起點終點 有傳送門,傳送門個數不超過 26 個 不會 我們可以考慮把每個點能到的點連邊 二維壓到一維,常見 trick 於是我們有乙個很顯然的想法 點到傳送門連 0 權值的邊 但是這樣是錯的,因為我們經過傳送門必須得進去 紅色是邊,藍色是最短路 於是如果乙個點能到傳送門,我們就直接把傳送門...