2019銀聯高校極客挑戰賽 複賽

2022-09-17 07:30:14 字數 3346 閱讀 5030

一直不在狀態……

想著各種事情……

a.正常的方法是預處理k!和inv(k!),然後每次詢問o(1)。

然後某同學的方法是dp,o(n*m)也能過。

f(i,j,0)和f(i,j,1)嗎?i<=n,j<=m,0和1分別代表是否已經選擇f嗎。

b.對於a,是x的倍數,且不是y的倍數(其中p%x==0,y%x==0,p%y==0)

x乘上某個數,這個數除以z(z為不可以使用的約數的乘積,詳見**)為r(計算0~z-1)。

則對於b,是(p/x)的倍數

不好寫。。。

時間複雜度:

預處理:k個質因數(<=6),2^k * 對應的大小(<=p)

約數的個數*(k+k)

還有更快的方法

題解:數論方式分析。

a=px+y

y*b=p的倍數

則b是p/y的倍數。

然後列舉y。

寫得很快。。。

看群裡還有使用mobius的,比賽時想過,但沒想到。

對於數字a,b

gcd(a,p)=d

然後b為p/d的倍數即可。

1 #include 2 #include 3 #include 4 #include 5 #include 

6 #include 7 #include 8

using

namespace

std;

9#define ll long long

1011

const

double eps=1e-8;12

const ll inf=1e9;

13const ll mod=1e9+7;14

const

int maxn=1e5+10;15

16///

2,3,5,7,11,13

1718

struct

node

19f[maxn];

2425 ll zhi[maxn],zhi_cnt,maxv=1e5;

26 ll x[300],gx[300],y[130

][maxn];

27bool

vis[maxn],use[maxn];

28ll p;

2930

///10^5*64

31void

dfs(ll i,ll j,ll k)

3249 gx[j]=y[j][i];

50return;51

}52 use[k]=0

;53 dfs(i,j*2,k+1

);54 use[k]=1

;55 dfs(i*zhi[f[p].a[k]],j*2+1,k+1

);56}57

58ll work(ll u,ll v)

5975

else

if (f[u].a[i]>f[p].a[j])

76 i++;

77else

7882}83

while (j<=f[p].g)

84 r=r*2+1,j++;

8586

return v/x[r]*gx[r]+y[r][v%x[r]];87}

8889

intmain()

90102

for (j=1;j<=zhi_cnt;j++)

103117

if (i%zhi[j]==0

)118

break

;119

}120

}121

122 scanf("

%lld

",&t);

123while (t--)

124131 dfs(1,0,1

);132

133 sum=0

;134

for (i=1;i<=p;i++)

135if (p%i==0

)136

141 printf("

%lld\n

",sum);

142}

143return0;

144}

145/*

1465

1471000000000 1000000000 1

1481000000000 1000000000 2

1491000000000 1000000000 10

150100000000 100000000 2

15110 20 15

1521000000000 1000000000 30030

153100000000 100000000 30030

154155

1156

9 9 9

1571

1586 6 12

159160

1161

20 20 11

162163

1164

10 10 6

165*/

場上感覺,然後看了題解,以下想法基本是錯的……

c.a1,b1,c1

a2,b2,c2

要求a1a2有可能要按照某種方式排序

兩組條件,兩者互相約束。

然後就不會做了……

題解:取反求,變成i能贏j的條件,此時的條件可求。

然後就是偏序的子問題。

不同陣列元素的比較,其實還是比較,二維偏序。

cj改為

c,b;b,a陣列 為 同乙個陣列(表示的符號相同)表示即可。

d.一開始以為是圖,覺得不可做,

後面發現是樹。。。

點分治結合題解想了一想,也許可以???

也許可以分為內部處理的 和 通過子根相連的

處理^k(k<=13)

各種多項式操作。 (題解:二項式定理)

看群裡說對於k較小的情況,有更好的做法,cf的某些題???

題解:樹形dp。

樹本身的結構已經提供了層次感???

lca為當前根。

未證實正確的想法:

e.末尾有0的操作。

只可能為

a->b->c->b->c

b->c->b->c

處理每個區間的最小/最大值

每次a->b時進行修改,

提前記錄,也許要額外建一棵樹,

數目不多。

題解的方法,特別是最後一部分沒看懂。。。

f.跟e一樣,怎麼都是各種修改。

沒想法,估計較難。

銀聯高校極客挑戰賽 複賽(A,B,思維 數學)

a 題目描述 現在已經是暑假了!這週日,碼隊的弟弟所在的班級 上海某中學高二 33 班的同學們準備在碼隊弟弟的帶領下 碼隊的弟弟是這個班的班長 舉辦一場派對。這樣看來,飲料購買的方案實在是太多了!兩位同學突發奇想,想讓你幫忙計算 總共有多少種購買飲料的方案。答案對 10 9 7109 7 取模,同種...

銀聯高校極客挑戰賽 初賽 第二場

題意 求最大的正方形面積 思路 通過左邊 左上方 上方的三個點中的最小值來更新當前點 include include include using namespace std const int maxn 1e5 5,inf 0x3f3f3f3f const int mod 1e9 7 int t,n...

BSG白山極客挑戰賽

b君的圓錐 wwwwodddd 命題人 基準時間限制 1 秒 空間限制 131072 kb 分值 40 b君要用乙個表面積為s的圓錐將白山雲包起來。b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。注意圓錐的表面積包括底面和側面。input 一行乙個整數,表示表面積s。1 s 10 9 ...