Atcoder Grand Contest 039 B,C,D,E,F

我的提交记录


B - Graph Partition

当图中存在奇环的时候显然无解(可以考虑 x , y x,y x,y之间存在边意味着 x x x y y y所属的点集的下标奇偶性不同),否则一定有解。

如果存在划分成 k k k个集合的方案,那么图中必定存在两个点,它们之间的最短路径的边数是 k − 1 k-1 k1。设 d i s ( x , y ) dis(x,y) dis(x,y)表示 x , y x,y x,y之间的最短路的边数, 1 + max ⁡ x , y { d i s ( x , y ) } 1+\max_{x,y}\{dis(x,y)\} 1+maxx,y{ dis(x,y)}显然是答案的一个上界。

而这个上界是可以达到的。假设 d i s ( x , y ) dis(x,y) dis(x,y)最大,我们把到 x x x的最短路长度等于 l l l的点分入集合 V l + 1 V_{l+1} Vl+1,就可以得到合法的方案。


C - Division by Two with Something

题目中的操作相当于删去二进制最低位,然后把删去的位取反放在最高位之前。

对于任意的一个数 X X X,它在 2 N 2N 2N次操作之后都必然会变成它本身。所以,倘若 X X X d d d次操作之后变成了它本身,那么 X X X gcd ⁡ ( d , 2 N ) \gcd(d,2N) gcd(d,2N)次操作后一定也变回了它本身。所以, X X X的最小操作次数一定是 2 N 2N 2N的约数。

观察发现,对于某一个 d ∣ 2 N d\mid 2N d2N,如果 X X X d d d次操作之后变回了本身,那么 X X X一定由 2 N d \frac{2N}{d} d2N段组成, 2 N d \frac{2N}{d} d2N是奇数,且 X X X有如下的形式: A A ′ A A ′ ⋯ A AA'AA'\cdots A AAAAA,其中 A A A是一个长度为 d 2 d\over 2 2d 01 01 01串, A ′ A' A表示 A A A把每一位取反之后得到的结果。

枚举所有的满足 d ∣ N d\mid N dN N d N\over d dN是奇数的 d d d,然后计算 2 d 2d 2d次操作之后变回本身的数的个数(不要求 d d d是最小操作次数),再通过容斥原理就可以算出 2 d 2d 2d为最小操作次数的数的个数。

如何判断一个 A A ′ A A ′ ⋯ A AA'AA'\cdots A AAAAA是否小于等于题目给出的 X X X?先比较前 ∣ A ∣ |A| A位,如果不相同就可以确定 A , X A,X A,X的大小关系;否则,由于和 X X X的前 ∣ A ∣ |A| A位都相同的 A A A只有一个,可以暴力 O ( ∣ X ∣ ) O(|X|) O(X)判断。拓展到对 A A ′ A A ′ ⋯ A AA'AA'\cdots A AAAAA的计数就是:枚举 A A A X X X不同的最高位是哪一位,之后的位可以随意取,并特殊判断 X X X的前 ∣ A ∣ |A| A位和 A A A完全相同的情况。


D - Incenters

对于某一个 △ A B C \triangle_{ABC}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值