2021牛客寒假演算法基礎集訓營6

2021-10-20 07:32:08 字數 1908 閱讀 7162

思路:k1排k2前面滿足

k1.a*(k2.ax+k2.b)+k1.b(k1.ax+k1.b)+k2.b

k2.ak1.b+k2.b>k1.a*k2.a+k1.b

#include

#define ull unsigned long long

#define ll long long

const

int inf =

0x3f3f3f3f

;const

int mod =

998244353

;const

int n =

500005

;const ll ds =

1e15+7

;//const double p1 = 3.141592653589793238462643383;

using

namespace std;

struct nodenode[25]

;//k1排k2前面滿足

>k1.a*k2.a+k1.b

bool

cmp(node k1,node k2)

void

print

(__int128 x)

if(x >9)

print

(x /10)

;putchar

(x %10+

'0');}

void

solve()

sort

(node+

1,node+n+

1,cmp)

; __int128 ans = node[1]

.a*x+node[1]

.b;for

(int i =

2; i <= n; i++

)print

(ans);}

intmain()

思路:仔細一看發現是最小生成樹,現在麻煩的是如何建圖,因為每個點是字母,那就將字母用數字代替。

#include

#define ull unsigned long long

#define ll long long

const

int inf =

0x3f3f3f3f

;const

int mod =

998244353

;const

int n =

500005

;const ll ds =

1e15+7

;//const double p1 = 3.141592653589793238462643383;

using

namespace std;

struct node

}node[n]

;mapint>mp;

int f[n]

;int k,n,q,flag =

0,num =1;

ll ans =0;

intfind

(int x)

void

merge

(int x,

int y)

void

solve()

sort

(node+

1,node+q+1)

;int cnt1 =0;

for(

int i =

1; i <= q; i++)}

if(cnt1 != n-

1) cout <<

"no!"

<< endl;

else cout << ans << endl;

mp.clear()

;}}int

main()

2021牛客寒假演算法基礎集訓營3

三場牛客下來覺得自己越來越不在狀態,思路不清晰,一下手就是bug,每調完一題刷下榜都被甩開十里地,罰時慘不忍睹 傳送門 簽到 include using namespace std typedef long long ll const ll inf 0x3f3f3f3f const ll mod 1...

2021牛客寒假演算法基礎集訓營1

題目描述 請你構造乙個非空的括號字串,包含正好 k 個不同合法括號對。所謂括號字串,是指由 和 這兩種字元構成的字串。要求構造的字串長度不超過100000。輸入描述 乙個整數 k。乙個整數 kk。0 k 1e9 輸出描述 乙個僅包含左右括號字串,其中有 kk 個合法的括號對。如果有多種構造方法,輸出...

2021牛客寒假演算法基礎集訓營3

c.重力墜擊 題解 1.深搜。注意要避免某些圓被多次相交時重複計數的情況。2.暴力。列舉每個圓心相交的圓的數量,存到降序排列的優先佇列中,取前k個即可。include using namespace std struct node a 20 pos 20 int n,k,r int mx bool ...