CF发病操作集锦

1、692 B fair number
给定一个正整数n∈[1,1e18],如果n能够整除n的每一位,则称n为fair number,找到最小的x>=n使x为fair number
发病操作:想当然的认为暴力不可做
实际上:lcm(1,2,3,…,9) = 2520,最多只需要把低四位加到2520的倍数即可,暴力可做
2、692 C. Peaceful Rooks
给定一个n * n矩阵,m个点(m < n),点与点之间不能在同一行同一列,问多少次操作能将这m个点移到对角线上
想到的:
①:x != y --> ans++
②:点与点之间若形成一个回路,ans++,如{(1,2),(2,1)}、{(6,5),(4,6),(5,3),(3,4)}
发病点:
①:回路判定没有问题,但非回路判定有问题,如点{(5,3),(6,5),(3,4)}会将(5,3),(3,5)两点判定为非回路,而(6,5)连接的(5,3)此时已经被visit过了,会判断出现回路,此时是错误的, 应该让非回路从端点开始遍历
②:初始化有问题,以后应该尽量让t个case初始状态完全相同

3、691B.Move and turn
这题这场花了很多时间才做出来
发病点:
手动打表找不出规律,应该BFS打表找规律
4、691C. Row GCD
发病点:
gcd掌握的不熟,gcd(a,b) = gcd(b,a%b) = gcd(a - b,b),证明:a%gcd == 0,b %gcd == 0,故(a - b) %gcd == 0
由以上结论可知gcd(a1 + b,a2 + b,a3 + b,…,an + b) == gcd(a1 + b, a2 - a1,a3 - a1,…,an - a1)
对m个b,先求出g = gcd(a2 - a1,…,an - a1),再分别求出ans = gcd(a1 + bj,g)
5、692D. Glass Half Spilled
大意:n个瓶子,每个瓶子容量为ai升,已经装了bi升水,瓶子中水可以倒入另一个瓶中,但是不能超过瓶子容量,而且倒的过程中会撒一半,求选k个瓶子最多能装多少升水?
发病点:显然是背包问题,但是无从下手,问了某神犇,应该冷静从数学角度进行分析
在这里插入图片描述
6、UVa11235 频繁出现的数值
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值