2019牛客暑期多校訓練營(第九場)

2022-05-02 15:24:12 字數 1473 閱讀 3738

d knapsack cryptosystem

折半搜尋,晚上又去看了挑戰程式設計,對於時間複雜度高的情況,可以通過犧牲空間來降低時間複雜度。先把前半部分所有可以組合的情況列舉出來,然後對於後半部分依次列舉,那麼複雜度變化為o(2^36)->o(2^18+2^18log^18).顯然就可做了,折半的裸題。

但是用二分寫了一發,沒過,感覺時二分那裡的問題,或者時01字串那裡出了問題。換了map過了。

沒過的二分:

1 #include 2

using

namespace

std;

3 typedef long

long

ll;4

5const

int maxn=530000;6

7int

n;ll m;

8struct

nodepre[maxn];

1213

bool

cmp(node x,node y)

1617 ll a[37

];18 ll b[37

];19

20int

binary_find(ll x)

29return -1;30

}31intmain()

39for(int i=0;i

46else pre[i].s[j]='0'

;47} 48}

49 sort(pre,pre+n2,cmp);

50/*

for(int i=0;i51

cout

52for(int i=0;i

<

5364

else s[j]='0'

;65}66

//cout <67

int ans=binary_find(m-tms);

68//

cout <69

//cout <70

if(ans!=-1

) 7177}

78return0;

79 }

view code

map:

1 #include 2

using

namespace

std;

3 typedef long

long

ll;4

56 ll a[37

];7 ll b[37

];8 map string>m;910

intmain()

22 m[tmp]=s;23}

24for(int i=0;i

<

2531

if(m.count(sum-tmp))

3236

} 37

return0;

38 }

view code

2019牛客暑期多校訓練營(第九場)

給定 p 1000000007 有兩個數x,y,其中 x leqslant y leqslant p x y equiv b mod p x times y equiv c mod p 求 x,y的值 二次剩餘 1 二次剩餘參考資料1 2 二次剩餘參考資料2 知道 x y 和 x times y 那...

2020牛客暑期多校訓練營(第九場)

總結 這一場過了a題,之前用c 各種寫,但是沒想到用 三行 就解決了問題,還是需要學習很多很多。fi 一級目錄 土撥鼠在第1個宿舍,橙子在第n個宿舍。這n個宿舍間有n 1條路並且長度都為1,土撥鼠從第1個房間去第n個宿舍,速度為1m s 橙子從第n個宿舍追趕土撥鼠,速度為2m s。二分時間 t 然後...

牛客網暑期ACM多校訓練營(第九場)

做法 看到下標 xor 這種情況就想 fwt 可是半天沒思路,於是放棄了。其實這個 n 瘋狂暗示啊。設未知數向量為 x 列一下方程組就可以發現有 b k sum a i x j 做法就顯然了吧,把 a 和 b 分別 fwt 對應相除然後反變換即可。表示前天才學的 fwt 就不會使了。include ...