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 # includet1t2:求逆序對數量*360。沒了。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
1 # include 2 # include 3 # include 4 # includet2t3:給定一棵正邊權的樹,求離每個點最遠的點有多遠;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 }
有乙個定理:離每個點最遠的點必然是直徑端點上的一點,不過...我不是這麼做的。
以任意點為端點的最長路要麼在它的子樹裡面,要麼是從父親走過來的,經典的$up and down$題目.注意,父親的最長路有可能本來就是從自己這裡走過去的,再用父親來更新就會走重複的路徑了.那怎麼辦呢?再記錄一條次長路徑即可,細節什麼的...自己想吧。
1 # include 2 # include 3 # include 4 # includet3t4:帶修改動態逆序對。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 }
$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 字串 入門難度 ...