首页 > 其他 > 详细

2020.8.23线上模拟赛解题报告

时间:2020-08-23 22:57:40      阅读:75      评论:0      收藏:0      [点我收藏+]

T1:

解题情况:53pts(常数太大,TLE)

题意:初始n*m矩阵每个点有一个值a[i][j]<=n*m,k次操作,每次将一个子矩阵赋值成一个值w,若w!=a[i][j],vis[i][j]=1,求k次操作后∑vis[i][j]。

算法分析+题解:子矩阵赋值很容易想到差分,但是后面赋值会覆盖之前赋的值,考虑加上每一次的赋值,但是会出现这样一种情况:w[i]+w[j]==a[i][j],使得程序输出错误答案,因为多种值相加可能得到初始值,所以我们要使其尽量不得到相同答案,可以给每一种值hash,保证唯一性。(题解给的是随机数或二进制拆分算部分答案,时间复杂度都相同,但是常数和正确性看脸,显然我脸黑T_T)

小结:

1.能卡常都卡;

2.想到一种算法后根据算法的弊端优化(如本题中的hash)

T2:

解题情况:20pts

题意:a[i]=a[i]/2+[a%2==a/2%2],求∑i=1n a[i];

算法分析+题解:只会90pts的数位dp,f[i][j][k][l],到第i位,二进制拆分下a[i]=a[i-1]的位数为j,这一位二进制位为k,每一位是否同n的方案数,题解预处理没看懂。

T3:

解题情况:0pts(早上没写完)

题意:给出一颗大小为n的树,每个点有权值,m次操作,每次操作为以下三种之一:

1.将x的权值改成y;

2.将x的父节点变成y;

3.求每一个包括x的大小为y的连通块的点权积的和(y<=10)

算法分析+题解:因为y<=10,可以换跟dp设f[i][j]为在i的子树中包括x大小为j的连通块的积的和,对于第一种操作就先删对x祖先节点(距离<=10)的贡献修改值在加上对其祖先节点的贡献。对于第二种操作先删对原祖先节点贡献,加上父节点对原祖先节点贡献,删现父节点对祖先贡献,加上x对祖先节点贡献。对于第三种操作对x和x的祖先节点卷积即可。

 

2020.8.23线上模拟赛解题报告

原文:https://www.cnblogs.com/oierqingmo/p/13550223.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!