初三上学期比赛笔记(Part1)

2019-9-2
哇,我初三啦!
2019-9-7
感觉我打了场假赛,A,B很假,打的时候人也很假
C挺有意思的
给你一颗树,每个点的权值为0或1
每次你可以选定一个点u
对于满足 x 到 v 的路径上所有碎片的状态值与 x 的状态值相同 的那些点v 状态值都取反(0变1,1变0)
求最少操作次数,使的最后每个点的状态值相等
n ⩽ 5 ∗ 1 0 5 n\leqslant 5*10^5 n5105
考虑树的直径d,每次操作最多减2
我们要让它为0,至少需要 ⌊ d + 1 2 ⌋ \lfloor \frac{d+1}{2} \rfloor 2d+1
怎么构造!
将链的中点作为根即可!
2019-9-8
真,被打爆了!
怎么A这么傻逼自己都想不出来
一颗n点的树上给你m条链
每个点度数不超过10
问最多安排多少条链
使得链之间不会相交(对于边而言)
n ⩽ 500 , m ⩽ n ∗ ( n − 1 ) 2 n\leqslant 500,m\leqslant \frac{n*(n-1)}{2} n500,m2n(n1)
多组询问
T ⩽ 100 , ∑ n ⩽ 18000 T\leqslant 100,\sum n\leqslant 18000 T100,n18000
这道题,可以很明显看出一个性质
肯定存在一个最优解,对于每棵子树都是最优解
考虑维护 f i f_i fi表示子树i的最优解
h i h_i hi表示i为最优解时的可用节点
然后随便搞搞就好了(利用度数为10进行匹配)
2019-9-10
又打了一场假赛
三题挂了两题
好东西
2019-9-11
自闭了,C真的做不出啊
你有两个长度都为N的01字符串A和B。A中的1的个数和B中的1的个数相等。
题意
你想通过以下方式把A变成B:

  1. 设a1,a2,…,ak是所有A中的1的下标。
  2. 设b1,b2,…,bk是所有B中的1的下标。
  3. 将a1,a2,…,ak随机排序,每种排列出现的概率都是1k!,这一步会产生k!种不同的结果。
  4. 将b1,b2,…,bk随机排序,每种排列出现的概率都是1k!,这一步会产生k!种不同的结果。
  5. 对于所有1≤i≤k,依次交换Aai和Abi。

记P为这样搞完之后A和B变得相等的概率。显然,P×(k!)2是个整数,你需要计算这个整数对998244353取模后的值。
A,B为0,1串,至少一个1
长度小于等于10000
解法
把该题目当成图论来理解
swap(a,b)在a,b间连边
设x个公共1,y个“独”1
那么对于一种方案(不管能不能把A变B)会形成y条链,每条链的端点分别是两个y之一
那,如何判断一个方案能不能把A变B
问题的关键在于它能否合理地处理链
你会发现,每条链的交换顺序只能是唯一的,所以合法必定满足这个顺序
所以我们考虑求链的方案数
设i个公共1,j个非公共, d p i , j dp_i,j dpi,j表示此时链的方案数,考虑编号
d p i , j = d p i − 1 , j ∗ i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值