Warning: session_start(): open(/tmp/sess_13261650679fe7b346d1e052db1cf0d1, O_RDWR) failed: No space left on device (28) in /data/wiki/inc/init.php on line 239

Warning: session_start(): Failed to read session data: files (path: ) in /data/wiki/inc/init.php on line 239

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/auth.php on line 430
Writing /data/wiki/data/cache/d/de2edb2fcb553ea79b79c722a4e13dbc.captchaip failed

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/inc/actions.php on line 38

Warning: Cannot modify header information - headers already sent by (output started at /data/wiki/inc/init.php:239) in /data/wiki/lib/tpl/dokuwiki/main.php on line 12
2020-2021:teams:mian:nowcoder_training:2020_multi-university_training_contest_7 [CVBB ACM Team]

用户工具

站点工具


2020-2021:teams:mian:nowcoder_training:2020_multi-university_training_contest_7

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
2020-2021:teams:mian:nowcoder_training:2020_multi-university_training_contest_7 [2020/08/01 21:56]
withinlover [A]
2020-2021:teams:mian:nowcoder_training:2020_multi-university_training_contest_7 [2020/08/04 19:18] (当前版本)
grapelemonade [B]
行 52: 行 52:
 后来改成40个过了(据说可以直接搜过去然而没有成功) 后来改成40个过了(据说可以直接搜过去然而没有成功)
 ===== B ===== ===== B =====
 +
 +尽量选最大的吧 具体没太证
 +
 +<code cpp>
 +void work(int n,int m){
 + while(n&&​m){
 + if(n<​m) swap(n,m);
 + if(n%m==0){
 + for(int i=1;​i<​=n;​i++) tmp[++cnt]=m;​
 + n-=n;
 + }
 + else{
 + for(int i=1;​i<​=m;​i++) tmp[++cnt]=m;​
 + n-=m;
 + }
 + }
 +}
 +</​code>​
 +
  
 ===== C ===== ===== C =====
 +
 +主要是1和3操作,2操作单独记一下就解决了
 +
 +1操作可以转化到根节点上,但是会把根节点到被操作节点的整颗子树的答案算错。修正的方法是加一个等差数列,由于只会查询单点的值所以可以差分一下变成区间加法和单点查询。
 +
  
 ===== D ===== ===== D =====
行 72: 行 96:
 直接数论分块即可。 直接数论分块即可。
 ===== I ===== ===== I =====
 +
 +dp如代码所示,主要写下g数组怎么求
 +
 +对于n个节点的无根树求$\sum d_i^2$
 +
 +可以枚举数字在prufer序列出现的次数i,从n-2个节点中选出i个的方案为$C_{n-2}^i$,这i个位置全填1,​2...n都是可行的,剩余的n-i-2个位置用剩下的n-1个数随便填满即可,方案数为${(n-1)}^{n-2-i}$
 +
 +故$\sum d_i^2=C_{n-2}^i \times n \times {(n-1)}^{n-2-i} \times {(i+1)}^2$
 +
 +
 +<code cpp>
 +    for(int n=2;​n<​N;​n++){ ​ //n 无根树 value 
 + ​  ​  ​ for(int i=0;​i<​=n-2;​i++)
 +    (g[n]+=C(n-2,​i)*n%M*(i+1)%M*(i+1)%M*poww(n-1,​n-2-i))%=M;​
 + }
 + for(int n=2;​n<​N;​n++){ ​ //n 无根森林 方案 ​
 + for(int i=1;​i<​=n;​i++){
 + (f[n]+=C(n-1,​i-1)*poww(i,​i-2)%M*f[n-i]%M)%=M;​
 + }
 + }
 + for(int n=2;​n<​N;​n++){ ​ //n 无根森林 value 
 + for(int i=1;​i<​=n;​i++){
 + (A[n]+=C(n-1,​i-1)*((A[n-i]*poww(i,​i-2)%M+f[n-i]*g[i]%M)%M)%M)%=M;​
 + }
 + }
 +</​code>​
 +
  
 ===== J ===== ===== J =====
行 162: 行 213:
   * A题可以打表,写C之前应该把A的暴力先调出来的(   * A题可以打表,写C之前应该把A的暴力先调出来的(
   * 对板子不太熟悉了,C调了好久,赛后过题(   * 对板子不太熟悉了,C调了好久,赛后过题(
 +
 +Gary: 
 +
 +  * I题逆元求错了 (真的zz) ​
 +  * 需要好好维护一下板子库
 +
 +
2020-2021/teams/mian/nowcoder_training/2020_multi-university_training_contest_7.1596290161.txt.gz · 最后更改: 2020/08/01 21:56 由 withinlover