思路: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 ...