西安集訓day4B層考試題解

2021-09-03 08:06:40 字數 1957 閱讀 9013

大水題2333

用乙個map記錄一下就好了(一定注意資料會重複出現233 30分的慘痛教訓啊

那就直接放**啦

#include

using

namespace std;

#define ll long long

inline ll read()

while

(ch>=

'0'&&ch<=

'9')

return w*s;

}int n;

map<

int,

int>m;

bool mark[

310]

;int

main()

if(m[ans]

) mark[ans]=1

;}}for

(int i=

1;i<=

300;i++)if

(mark[i]

) m[i]--;

}for

(int i=

1;i<=

300;i++

)while

(m[i]

)printf

("%d "

,i),m[i]--;

}

久違的數學題233

要將n拆成若干個不同的正整數,且要乘積最大

顯然相同的數分解為兩個數的乘積要比乙個數大

所以從2(因為1沒用)開始列舉,看看最多能拼出多少個不同的數。

如果有剩餘的,就從最後乙個數開始依次+1知道沒有剩餘就好啦 注意要高精乘

#include

using

namespace std;

#define ll long long

inline

intread()

while

(ch>=

'0'&&ch<=

'9')

return w*s;

}struct node

friend node operator

*(node i,node j)

c.a[ss+lj]

=x;}

return c;

}}s[

110]

;int f[

1010

],ans[

1010

],cnt;

intmain()

if(n==beg-

1) f[cnt]

++,n--

;for

(int i=cnt;i>=

1&&n>

0;i--

,n--

) f[i]++;

for(

int i=

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

node x;

x.a[1]

=1;for

(int i=

1;i<=cnt;i++

) x=x*s[i]

;int z=

100;

while

(x.a[z]==0

)z--

;for

(int i=z;i>=

1;i--

)printf

("%d"

,x.a[i]);

}

出現在b層真的毒瘤233(還好資料範圍水

直接暴力建圖,然後跑dij求出每個點的dis

之後邊上兩端點便有兩種情況

1.兩點dis之差>木棍燃燒時間

2.兩點dis之差 < 木棍燃燒時間

第一種情況,說明在另一端點到達之前已經燒完了木棍。而第二種會在木棍上發生相遇

對於這兩種情況,分別處理出木棍燃燒的時間再將所有求和便是從這一點出發的燃燒時間。

我們再從每乙個節點跑一遍最短路就求出最少燃燒時間啦!

**明天寫,晚安

牛客國慶集訓派對Day4 B 異或求和 按位統計

題目鏈結 刷牛客一戰到底做到的,感覺還挺有趣.求給定 n 及序列 a i 求 sum a i oplus a j a j oplus a k a i oplus a k n leq10 5,a i leq10 9 首先有乙個 o n log 2n 的做法,這裡有,看來是跑不過去.不知道提交記錄裡有沒...

湖南集訓Day4

上午的數論感覺還可以,嗯,感覺。因為畢竟我數學弱,只聽懂一半什麼的,感覺證明還是比較顯然的。話說這金牌爺長得好像我某物理老師啊 下午的題終於不是clj出的了,沒辣麼虐了。第一題疑似回文自動機,然而並不會,於是dp水了60分。第二題想了下應該是樹鏈剖分,然後發現搞不出來,回去水第一題,然後水完回來繼續...

瀋陽集訓day4

憂傷地吐槽 記錄 沒錯,今天已經day5了,因為day4有點失敗,沒寫,大概就是這麼意思,t1寫的正解,t2線段樹,乙個小時可以搞出來的結果非得去寫第三題正解,還寫掛了只得了十分,初三的大佬20行 貪心得了八十,只是感到心累,t4單調棧也沒寫,才得了150 400,離大佬們的距離越來越遠,上去講了兩...