线性代数五之高斯消元——[SDOI2010]外星千足虫,[HNOI2013]游走,[HNOI2011]XOR和路径,[hdu 4035]Maze

多类型高斯消元杂题

  • [SDOI2010]外星千足虫
    • description
    • solution
    • code
  • [HNOI2013]游走
    • description
    • solution
    • code
  • [HNOI2011]XOR和路径
    • description
    • solution
    • code
  • Maze(树上高斯消元)
    • problem
    • solution
    • code

[SDOI2010]外星千足虫

description

solution

高斯消元的模板题

虽然感觉问了个最早确定所有虫的时间戳,但并没有什么用

在高斯消元过程中,使用的最大行编号就是最早确定时间

code

#include <cstdio>
#include <bitset>
#include <iostream>
using namespace std;
#define maxn 1005
int n, m;
bitset < maxn > a[maxn << 1];int main() {scanf( "%d %d", &n, &m );for( int i = 1, x;i <= m;i ++ ) {for( int j = 1;j <= n;j ++ )scanf( "%1d", &x ), a[i][j] = x;scanf( "%d", &x ), a[i][n + 1] = x;}int ans = 0;for( int i = 1;i <= n;i ++ ) {int row = i;while( row <= m && ! a[row][i] ) row ++;if( row == m + 1 ) return ! printf( "Cannot Determine\n" );if( i ^ row ) swap( a[row], a[i] );ans = max( ans, row );for( int j = 1;j <= m;j ++ )if( i == j || ! a[j][i] ) continue;else a[j] ^= a[i];}printf( "%d\n", ans );for( int i = 1;i <= n;i ++ )if( a[i][n + 1] ) printf( "?y7M#\n" );else printf( "Earth\n" );return 0;
}

[HNOI2013]游走

description

solution

将路径拆分成每条边期望经过次数乘以边权的求和

贪心的把最大权值放在期望经过次数最少的边上

但是边的级别是空间时间不足以承受的

事实上,边的期望至于边连接的两个端点有关

每个点到与之相连边的概率一样,期望一样

所以到某条特定边的期望就是经过该点期望除以该点连接的总边数

一条边被经过的期望则是两个端点到这条边的期望和

于是乎求边的期望就转化为求点的期望

而点的期望至于相邻点有关

Ei:iE_i:iEi:i点期望,numi:inum_i:inumi:i点总边数,x1,x2,...,xkx_1,x_2,...,x_kx1,x2,...,xkiii相连,则有Ei=∑j=1kEjnumjE_i=\sum_{j=1}^k\frac{E_j}{num_j}Ei=j=1knumjEj

每个点都能列出一个这样的方程,高斯消元解决

特别地,游走是从点111开始的,所以期望要+1+1+1,游走到点nnn就不会继续进行了,所以计算期望时不能纳入考虑

code

#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxn 505
#define eps 1e-6
#define maxm 125005
vector < int > G[maxn]; 
int n, m;
int num[maxn], from[maxm], to[maxm];
double E[maxm];
double x[maxn][maxn];double Fabs( double x ) {return x < 0 ? -x : x;
}int main() {scanf( "%d %d", &n, &m );for( int i = 1, u, v;i <= m;i ++ ) {scanf( "%d %d", &u, &v );G[u].push_back( v );G[v].push_back( u );from[i] = u, to[i] = v;num[u] ++, num[v] ++;}x[1][n] = 1;for( int i = 1;i < n;i ++ ) {x[i][i] = 1;for( auto j : G[i] )if( j != n )x[i][j] = -1.0 / num[j];}for( int i = 1;i < n;i ++ ) {int k = i;for( int j = i + 1;j < n;j ++ )if( Fabs( x[j][i] ) > Fabs( x[k][i] ) )k = j;if( i ^ k ) swap( x[i], x[k] );for( int j = n;j >= i;j -- )x[i][j] /= x[i][i];for( int j = 1;j < n;j ++ )if( i ^ j )for( int k = n;k >= i;k -- )x[j][k] -= x[j][i] * x[i][k];}for( int i = 1;i <= m;i ++ ) {if( from[i] != n )E[i] += x[from[i]][n] / num[from[i]];if( to[i] != n )E[i] += x[to[i]][n] / num[to[i]];}sort( E + 1, E + m + 1 );double ans = 0;for( int i = 1;i <= m;i ++ )ans += E[i] * ( m - i + 1 );printf( "%.3f", ans );return 0;
} 

[HNOI2011]XOR和路径

description

solution

一般看到充满二进制意味的异或都要考虑拆位

此题也不例外,每一个单独计算期望

fi:f_{i}:fi: 表示i→ni\rightarrow nin路径该位为111的概率,则1−fi1-f_i1fi表示i→ni\rightarrow nin路径为000的概率,di:id_i:idi:i的出度

∀(u,v)∈Edgefu=1du(∑w(u,v)=0fv+∑w(u,v)=1(1−fv))⇔∀(u,v)∈Edgedu×fu=(∑w(u,v)=0fv+∑w(u,v)=1(1−fv))\forall_{(u,v)\in Edge}f_u=\frac{1}{d_u}\Big(\sum_{w(u,v)=0}f_v+\sum_{w(u,v)=1}(1-f_v)\Big)\Leftrightarrow \forall_{(u,v)\in Edge}d_u\times f_u=\Big(\sum_{w(u,v)=0}f_v+\sum_{w(u,v)=1}(1-f_v)\Big)(u,v)Edgefu=du1(w(u,v)=0fv+w(u,v)=1(1fv))(u,v)Edgedu×fu=(w(u,v)=0fv+w(u,v)=1(1fv))
在这里插入图片描述

换言之,u→nu\rightarrow nun的路径想要为1:1:1:如果(u→v)(u\rightarrow v)(uv)这条边为111,必须v→nv\rightarrow nvn的路径为000,否则为111

方程化为

dufu−∑w(u,v)=0fv+∑w(u,v)=1fu=∑w(u,v)=11d_uf_u-\sum_{w(u,v)=0}f_v+\sum_{w(u,v)=1}f_u=\sum_{w(u,v)=1}1dufuw(u,v)=0fv+w(u,v)=1fu=w(u,v)=11

高斯消元,ans=∑i2ifi(1)ans=\sum_i2^if_i(1)ans=i2ifi(1)

code

#include <cstdio>
#include <vector>
#include <cstring>
#include <iostream>
using namespace std;
#define eps 1e-8
#define maxn 105
vector < pair < int, int > > G[maxn];
int n, m;
int d[maxn];
double ans[maxn];
double a[maxn][maxn];double Fabs( double x ) {return x < 0 ? -x : x;
}void build( int x ) {a[n][n] = 1;for( int i = 1;i < n;i ++ ) {a[i][i] = d[i];for( auto j : G[i] ) {if( j.second & x ) a[i][j.first] ++, a[i][n + 1] ++;else a[i][j.first] --;		}}
}void gauss() {for( int i = 1;i <= n;i ++ ) {int k = i;for( int j = i;j <= n;j ++ )if( Fabs( a[j][i] ) > Fabs( a[k][i] ) )k = j;if( k ^ i ) swap( a[i], a[k] );for( int j = i + 1;j <= n;j ++ )if( Fabs( a[j][i] ) < eps ) continue;else {double t = a[j][i] / a[i][i];for( k = i;k <= n + 1;k ++ )a[j][k] -= a[i][k] * t;a[j][i] = 0;}}for( int i = n;i;i -- ) {for( int j = i + 1;j <= n;j ++ )a[i][n + 1] -= a[i][j] * ans[j];ans[i] = a[i][n + 1] / a[i][i];}memset( a, 0, sizeof( a ) );
}int main() {scanf( "%d %d", &n, &m );int maxx = 0;for( int i = 1, u, v, w;i <= m;i ++ ) {scanf( "%d %d %d", &u, &v, &w );G[u].push_back( make_pair( v, w ) );d[u] ++;if( u ^ v ) {G[v].push_back( make_pair( u, w ) );d[v] ++;}maxx = max( maxx, w );}double ret = 0;for( int i = 1;i <= maxx;i <<= 1 ) {build( i );gauss();ret += ans[1] * i;}printf( "%.3f\n", ret );return 0;
} 

Maze(树上高斯消元)

problem

solution

Ei:iE_i:iEi:i节点逃出期望经过的边数,edgei:iedge_i:iedgei:i相连边数
∀i,i∈leafEi=ki×E1+ei×0+(1−ki−ei)×(Efai+1)=ki×E1+(1−ki−ei)×Efai+(1−ki−ei)\forall_{i,i\in leaf}E_i=k_i\times E_1+e_i\times 0+(1-k_i-e_i)\times (E_{fa_i}+1)\\=k_i\times E_1+(1-k_i-e_i)\times E_{fa_i}+(1-k_i-e_i) i,ileafEi=ki×E1+ei×0+(1kiei)×(Efai+1)=ki×E1+(1kiei)×Efai+(1kiei)

∀i,i∉leafEi=ki×E1+ei×0+(1−ki−ei)×1edgei×(∑j∈soni(Ej+1)+Efai+1)=ki×E1+1−ki−eiedgei×Efai+1−ki−eim×∑j∈soniEj+(1−ki−ei)\forall_{i,i\notin leaf}E_{i}=k_i\times E_1+e_i\times 0+(1-k_i-e_i)\times\frac{1}{edge_i}\times\Big(\sum_{j\in son_i}(E_j+1)+E_{fa_i}+1\Big)\\=k_i\times E_1+\frac{1-k_i-e_i}{edge_i}\times E_{fa_i}+\frac{1-k_i-e_i}{m}\times\sum_{j\in son_i}E_j+(1-k_i-e_i) i,i/leafEi=ki×E1+ei×0+(1kiei)×edgei1×(jsoni(Ej+1)+Efai+1)=ki×E1+edgei1kiei×Efai+m1kiei×jsoniEj+(1kiei)

转移涉及父亲儿子且彼此依赖,而我们非常想得到不交叉的线性递推关系

想办法变成只跟父亲有关的转移,形式的设Ei=Ai×E1+Bi×Efai+CiE_i=A_i\times E_1+B_i\times E_{fa_i}+C_iEi=Ai×E1+Bi×Efai+Ci

类比解方程组,列出以下式子

∀i,i∉leaf\forall_{i,i\notin leaf}i,i/leaf
∑j∈soniEj=∑j∈soniAj×E1+Bj×Efaj+Cj=∑j∈soniAj×E1+Bj×Ei+Cj\sum_{j\in son_i}E_j=\sum_{j\in son_i}A_j\times E_1+B_j\times E_{fa_j}+C_j=\sum_{j\in son_i}A_j\times E_1+B_j\times E_i+C_j\\ jsoniEj=jsoniAj×E1+Bj×Efaj+Cj=jsoniAj×E1+Bj×Ei+Cj

Ei=kiE1+1−ki−eiedgeiEfai+1−ki−eim∑j∈soniEj+(1−ki−ei)=kiE1+1−ki−eiedgeiEfai+1−ki−eiedgei∑j∈soni(AjE1+BjEi+Cj)+(1−ki−ei)E_i=k_iE_1+\frac{1-k_i-e_i}{edge_i}E_{fa_i}+\frac{1-k_i-e_i}{m}\sum_{j\in son_i}E_j+(1-k_i-e_i)\\=k_iE_1+\frac{1-k_i-e_i}{edge_i}E_{fa_i}+\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}(A_jE_1+B_jE_i+C_j)+(1-k_i-e_i) Ei=kiE1+edgei1kieiEfai+m1kieijsoniEj+(1kiei)=kiE1+edgei1kieiEfai+edgei1kieijsoni(AjE1+BjEi+Cj)+(1kiei)
在这里插入图片描述

⇔\Leftrightarrow
(1−1−ki−eiedgei∑j∈soniBj)Ei=(1-\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}B_j)E_i=(1edgei1kieijsoniBj)Ei=(ki+1−ki−eiedgei∑j∈soniAj)E1+1−ki−eiedgeiEfai+(1−ki−ei)+1−ki−eiedgei∑j∈soniCj(k_i+\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}A_j)E_1+\frac{1-k_i-e_i}{edge_i}E_{fa_i}+(1-k_i-e_i)+\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}C_j (ki+edgei1kieijsoniAj)E1+edgei1kieiEfai+(1kiei)+edgei1kieijsoniCj
⇒Ai=ki+1−ki−eiedgei∑j∈soniAj(1−1−ki−eiedgei∑j∈soniBj)\Rightarrow A_i=\frac{k_i+\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}A_j}{(1-\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}B_j)}Ai=(1edgei1kieijsoniBj)ki+edgei1kieijsoniAjBi=1−ki−eiedgei(1−1−ki−eiedgei∑j∈soniBj)B_i=\frac{\frac{1-k_i-e_i}{edge_i}}{(1-\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}B_j)}Bi=(1edgei1kieijsoniBj)edgei1kieiCi=(1−ki−ei)+1−ki−eiedgei∑j∈soniCj(1−1−ki−eiedgei∑j∈soniBj)C_i=\frac{(1-k_i-e_i)+\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}C_j}{(1-\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}B_j)} Ci=(1edgei1kieijsoniBj)(1kiei)+edgei1kieijsoniCj
在这里插入图片描述

∀i,i∈leaf\forall_{i,i\in leaf}i,ileaf
Ei=ki×E1+(1−ki−ei)×Efai+(1−ki−ei)=Ai×E1+Bi×Efai+Ci⇒{Ai=kiBi=1−ki−eiCi=1−ki−eiE_i=k_i\times E_1+(1-k_i-e_i)\times E_{fa_i}+(1-k_i-e_i)=A_i\times E_1+B_i\times E_{fa_i}+C_i\\ \Rightarrow \begin{cases}A_i=k_i\\B_i=1-k_i-e_i\\C_i=1-k_i-e_i\end{cases} Ei=ki×E1+(1kiei)×Efai+(1kiei)=Ai×E1+Bi×Efai+CiAi=kiBi=1kieiCi=1kiei
从叶子节点开始倒着往上递推(也被称之为树上高斯消元)

树上高斯消元

把有关父亲和儿子的递推式通过Aix+Biy+CiA_ix+B_iy+C_iAix+Biy+Ci的形式转化为只由一方单向线性递推

然后正着/倒着递推消元

直到算出A1,B1,C1A_1,B_1,C_1A1,B1,C1

E1=A1×E1+B1×0+C1⇒E1=C11−A1E_1=A_1\times E_1+B_1\times 0+C_1\Rightarrow E_1=\frac{C_1}{1-A_1}E1=A1×E1+B1×0+C1E1=1A1C1

A1A_1A1无限趋近于111时,无解

如果iiiAi,Bi,CiA_i,B_i,C_iAi,Bi,Ci的分母形式1−1−ki−eiedgei∑j∈soniBj1-\frac{1-k_i-e_i}{edge_i}\sum_{j\in son_i}B_j1edgei1kieijsoniBj趋近于000,也是无解

注意精度问题,eps=1e-8都不行,因为涉及/100/100/100

code

#include <cmath>
#include <cstdio>
#include <vector>
using namespace std;
#define eps 1e-10
#define maxn 10005
vector < int > G[maxn];
int T, n;
double k[maxn], e[maxn], A[maxn], B[maxn], C[maxn];bool dfs( int i, int fa ) {if( G[i].size() == 1 && G[i][0] == fa ) {A[i] = k[i], B[i] = C[i] = 1 - k[i] - e[i];return 1;}A[i] = k[i];B[i] = ( 1 - k[i] - e[i] ) / G[i].size();C[i] = 1 - k[i] - e[i];double t = 0;for( auto j : G[i] ) {if( j == fa ) continue;else if( ! dfs( j, i ) ) return 0;A[i] += A[j] * B[i];C[i] += C[j] * B[i];t += B[j] * B[i];}if( fabs( 1 - t ) < eps ) return 0;else {A[i] /= ( 1 - t );B[i] /= ( 1 - t );C[i] /= ( 1 - t );return 1;}
}int main() {scanf( "%d", &T );for( int Case = 1;Case <= T;Case ++ ) {scanf( "%d", &n );for( int i = 1;i <= n;i ++ )G[i].clear();for( int i = 1, u, v;i < n;i ++ ) {scanf( "%d %d", &u, &v );G[u].push_back( v );G[v].push_back( u );  }for( int i = 1;i <= n;i ++ ) {scanf( "%lf %lf", &k[i], &e[i] );k[i] /= 100, e[i] /= 100;}if( dfs( 1, 0 ) && fabs( 1 - A[1] ) > eps )printf( "Case %d: %f\n", Case, C[1] / ( 1 - A[1] ) );elseprintf( "Case %d: impossible\n", Case );}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317322.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P6117-[JOI 2019 Final]コイン集め【贪心】

正题 题目链接:https://www.luogu.com.cn/problem/P6117 题目大意 平面上有2n2n2n的硬币&#xff0c;要给每个硬币匹配一个x∈[1,n],y∈[1,2]x\in[1,n],y\in[1,2]x∈[1,n],y∈[1,2]的位置&#xff08;不能重复&#xff09;。 使得所有硬币和它们匹配位置的曼哈顿距离之和最小…

CF788789(div1div2)

文章目录前言CF789A Anastasia and pebblesDescription\text{Description}DescriptionSolution\text{Solution}SolutionCode\text{Code}CodeCF789B Masha and geometric depressionDescription\text{Description}DescriptionSolution\text{Solution}SolutionCode\text{Code}Cod…

【HDU-2376】Average distance

【HDU-2376】Average distance 题意&#xff1a; 给你一个树&#xff0c;求树上任意两个点之间的距离的平均值 题解&#xff1a; 就是求出任意两点之间的距离和然后除以边数 ”任意两点之间的距离“ 和怎么算&#xff1f; 我们去考虑边的贡献情况&#xff1a; 对于边(u,v)&…

Ocelot 资源汇总

前言最近一两年.NET Core的关注度持续上升, 微服务及云原生应用开发上采用.NET Core也越来越多&#xff0c;Ocelot 作为.NET Core平台下一款开源的API 网关开发库越来越得到社区的认可&#xff0c;应用到生产中的案例也有好几百了。春节抽空整理了现有网上公开的Ocelot相关的资…

P6698-[BalticOI 2020 Day2]病毒【AC自动机,dp,SPFA】

正题 题目链接:https://www.luogu.com.cn/problem/P6698 题目大意 有一个包含0∼G−10\sim G-10∼G−1的字符集&#xff0c;其中有nnn种变换&#xff0c;能够将一个字符ai(ai>1)a_i(a_i>1)ai​(ai​>1)变为一串字符bib_ibi​&#xff0c;当一个字符串中只剩下000和1…

[TJOI2017]城市(未解决)

[TJOI2017]城市 题意&#xff1a; 一棵树&#xff0c;现在要求你将一条边改变他的位置&#xff0c;&#xff08;即改变左右所连接的端点&#xff0c;权值不变&#xff09;&#xff0c;修改后任意两点相互可达&#xff0c;且使得两个点之间的最大交通费用最小 题解: 有O(n^2…

数论三之组合数学Ⅰ-Max-Min Sums,Binomial Coefficient is Fun,Strivore,Bubble Sort,放棋子,LOJ6671,Iroha and a Grid

组合计数我最爱Max-Min SumsdescriptionsolutioncodeBinomial Coefficient is FundescriptionsolutioncodeStrivoredescriptionsolutioncodeBubble Sortdescriptionsolutioncode[HAOI2016]放棋子descriptionsolutioncodeEntropyIncreaser 与 MinecraftdescriptionsolutioncodeD…

12.15模拟:总结

前言 20分 《好耶》 很好的把所有错误都犯了一遍。 8&#xff1a;30写完AB题 11&#xff1a;00还是只写完AB题, T1代码没有提交 T2数组算错空间全RE T3快结束了发现CE了删掉第二档后还交成了之前写的失败版本(结果靠这破玩意水到了仅有的20分) T4考场其实猜到了结论但没证出来…

语言之争与读书有感

移动互联网无处不在的今天&#xff0c;不同的学习方式让我们受益颇多。有人喜欢通过手机阅读各类技术专家的公众号分享&#xff1b;有人喜欢通过逛逛不同的博客&#xff0c;来了解当前时下的技术&#xff1b;也有人喜欢通过社区的形式&#xff0c;跟优秀的导师们一起梳理和发展…

CF566E-Restoring Map【bitset】

正题 题目链接:https://www.luogu.com.cn/problem/CF566E 题目大意 有一棵树&#xff0c;但是你不知道它的形态。你现在只知道距离每个点距离不超过222的点集&#xff0c;但是你不知道每个点集是对应哪个点的。 现在要你求这棵树。 2≤n≤10002\leq n\leq 10002≤n≤1000 解…

所有人都可以是开发人员——《Office 365开发入门指南》视频教程即将上市

今天是春节假期的最后一天&#xff0c;在这里给全国的朋友们拜个晚年&#xff0c;祝大家身体健康&#xff0c;晚年幸福啊。这个春节大家过的怎么样啊&#xff0c;我自己是在老家过的年&#xff0c;家乡的年味还是比较浓的&#xff0c;也再次感谢朋友圈的大家给我看了各地的风光…

CodeForces: 360(div1)361(div2)

文章目录前言CF361A Levko and TableDescription\text{Description}DescriptionSolution\text{Solution}SolutionCode\text{Code}CodeCF361B Levko and PermutationDescription\text{Description}DescriptionSolution\text{Solution}SolutionCode\text{Code}CodeCF360A Levko a…

数论三之排列组合Ⅱ——Virus Tree 2,RGB Coloring,123 Triangle,排列计数,排队,卡农

丝且人一口Virus Tree 2descriptionsolutioncodeRGB Coloringdescriptionsolutioncode123 Triangledescriptionsolutioncode[SDOI2016]排列计数descriptionsolutioncode[HNOI2012]排队descriptionsolutioncode[HNOI2011]卡农descriptionsolutioncodeVirus Tree 2 description …

B - Labyrinth Gym - 102798B

B - Labyrinth Gym - 102798B 题意&#xff1a; n * m的地图&#xff0c;有k个障碍物&#xff0c;给你起点到终点&#xff0c;从起点到终点的最短距离 1<n,m<200000 nm<200000 0<k<42 1<q<100000 题解&#xff1a; 如果没有障碍物&#xff0c;两点之间…

P2483-[模板]k短路/[SDOI2010]魔法猪学院【主席树,堆】

正题 题目链接:https://www.luogu.com.cn/problem/P2483 题目大意 给出一个nnn个点mmm条边的一张带权有向图&#xff0c;求一个最大的kkk使得1∼n1\sim n1∼n的前kkk短路径长度和不超过EEE。 2≤n≤5000,1≤m≤2105,1≤E≤1072\leq n\leq 5000,1\leq m\leq 2\times 10^5,1\le…

.NET Core开发日志——OData

简述OData&#xff0c;即Open Data Protocol&#xff0c;是由微软在2007年推出的一款开放协议&#xff0c;旨在通过简单、标准的方式创建和使用查询式及交互式RESTful API。类库在.NET Core中想要使用OData功能的话需要添加Microsoft.AspNetCore.OData包。dotnet add package M…

数论四之综合训练——Magic Pairs,Crime Management,Top Secret,组合数问题

数论综合训练Magic PairsproblemsolutioncodeCF107D Crime ManagementproblemsolutioncodeUVA12183 Top SecretproblemsolutioncodeP3746 [六省联考2017]组合数问题problemsolutioncodeMagic Pairs problem 已知A0xB0y≡0(modn)A_0xB_0y\equiv 0\pmod nA0​xB0​y≡0(modn)恒…

P6776-[NOI2020]超现实树

正题 题目链接:https://www.luogu.com.cn/problem/P6776 题目大意 定义一次操作为将一棵树的叶子换成另一棵树。 定义一棵树TTT的grow(T)grow(T)grow(T)表示所有树TTT能够通过操作变成的树的集合。 现在给出mmm棵树TiT_iTi​&#xff0c;定义SSS为所有grow(Ti)grow(T_i)grow…

CodeForces:749(div1)750(div2)

文章目录前言CF450A Jzzhu and ChildrenDescription\text{Description}DescriptionSolution\text{Solution}SolutionCode\text{Code}CodeCF450B Jzzhu and SequencesDescription\text{Description}DescriptionSolution\text{Solution}SolutionCode\text{Code}CodeCF449A Jzzhu …

Steins;Game Gym - 102798J(未解决)

Steins;Game Gym - 102798J 题意&#xff1a; 给定n堆石子a&#xff0c;每堆石子被染成了黑色或者白色&#xff0c;现在两个人轮流进行以下的其中一个操作&#xff1a; 1、从石子数量最少的一个黑色石堆中拿走若干石子 2、从任意一个白色石堆中拿走若干石子 两个人都采取最优…