ATP學姐的模擬賽

2022-05-10 02:45:45 字數 2926 閱讀 6949

atpの水題大賽

宣告:不是我覺得這題水,這就是本場模擬賽的名稱。

t1:求所有的$n$位數中有幾個數滿足:每一位要麼是$a$要麼是$b$,並且這個$n$位數的每一位加起來是$a$或$b$

的倍數。

$n<=100000,0

因為昨天剛講了數字$dp$,理所當然的就往那方面去想了.其實用組合數學也可以做,而且還比較簡短.

用$f[i][j][k]$表示目前填到第$i$位,對$a$

取模餘數為$j$,對$b$取模餘數為$k$的方案數.滾動陣列,空間可以壓得非常小.

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

5 # define r register int

6 # define mod 100000000778

using

namespace

std;910

const

int maxn=100005;11

int dp[3][10][10

];12

inta,b,n,ans,no,nex;

1314 inline int ad (int a,int b)

1516

intsolve ()

1731}32

int ans=0;33

for (r m1=0;m1m1)

34for (r m2=0;m2m2)

35if(m1==0||m2==0) ans=ad(ans,dp[n&1

][m1][m2]);

36return

ans;37}

3839

intmain()

40

t1t2:求逆序對數量*360。沒了。

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

5 # include 6 # define r register int

7 # define lowbit(i) (i&(-i))

8 # define mod 1000000007910

using

namespace

std;

1112

const

int maxn=500005;13

struct

nod14

a[maxn];

17int

n,v[maxn];

18int

t[maxn],ans,cnt;

1920

bool cmp (nod a,nod b)

2122

void add (int pos,int

val)

2326

27int ask (int

pos)

2833

34int

main()

3546

for (r i=1;i<=n;++i)

4752 ans=(long

long)ans*360%mod;

53 printf("%d"

,ans);

54return0;

55 }

t2t3:給定一棵正邊權的樹,求離每個點最遠的點有多遠;

有乙個定理:離每個點最遠的點必然是直徑端點上的一點,不過...我不是這麼做的。

以任意點為端點的最長路要麼在它的子樹裡面,要麼是從父親走過來的,經典的$up and down$題目.注意,父親的最長路有可能本來就是從自己這裡走過去的,再用父親來更新就會走重複的路徑了.那怎麼辦呢?再記錄一條次長路徑即可,細節什麼的...自己想吧。

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

5 # define r register int67

using

namespace

std;89

const

int maxn=1000006;10

intn,h,x,y,co,firs[maxn],dep[maxn],m1[maxn],m2[maxn];

11struct

edge

12g[maxn<<1

];15

16int

read()

1721

while (isdigit(c))

22return x*f;23}

2425

void add (int x,int y,int

co)26

3233

void upp (int

x)3447}

4849

void dowwn (int

x)5064}

6566

intmain()

6775 dep[1]=1

;76 upp(1

);77 dowwn(1

);78

for (r i=1;ii)

79 printf("

%d "

,m1[i]);

80 printf("%d"

,m1[n]);

81return0;

82 }

t3t4:帶修改動態逆序對。

$n$為序列長度,$m$為修改次數.

這題好啊,不用寫**,只需要寫乙個做法的$txt$,學姐看做法給分qwq.正好是只會說不會寫.

這個做法竟然被給了滿分qaq

---shzr

《省賽模擬賽補》

c題 比賽的時候已經想到了統計最底層的每個序列的出現次數,但是一開始想的是建圖之後dfs處理,但是發現很難處理出來。其實正確的思路是拓撲排序去處理次數。我們在最後建圖完成之後,倒著從n回去拓撲即可。但是這裡有個坑點,就是一開始統計入度可能是不正確的。例如 3 1 2 4 1 2 3是1,2的父節點,...

日常模擬賽

none 100 100 10 210 不太會做.好像.是個sb題.嗯.div3t1難度 include include define int long long define gc getchar define pc putchar inline int read void print int x...

模擬賽記錄

模擬賽記錄 8.20 7 30 9 30 數學入門難度6道題 300分 8.21 7 40 9 50 圖論 普及 6道題 500分 8.22 學長模擬賽 7 40 10 00 提高 300 分 80 分 8.23 圖論 普及 提高 8 40 11 30 300分 180分 8.24 字串 入門難度 ...