codeforces round229 div2 前三题题解

= =D题读了一遍题 发现没有明白。。。于是后两题就弃了没做。。。


A题

用两个bool数组记录某一行或者某一列是否访问过,再有两个int记录有多少个行和列访问过,输出这两个int里面比较下的一个即可。


B题

判断a[i]+a[i]>=b[i]是否成立 如果不成立则说明这里是不和谐的joy--;当成立时,joy+=b[i]/2*(b[i] - b[i]/2);(注意这里要判断b[i]/2 和 b[i] - b[i]/2是否为0,如果为0的话,joy--,这里被坑了= =)

再来就是注意要用__int64储存答案;


C题

我们用a[i]记录从第一个数开始到第i个数中1的个数,再使用b[i]记录i/k,i/k+k,i/k+2k,……,i中0的个数。

若查询的范围是i到j,那么b[j] - b[i - k]就是操作中放入1的总数,而此时(a[j] - a[i - 1]) - ((j - i +1) / k - b[j] - b[i - 1]) 就是需要拿掉1的个数

所以答案就是a[j] - a[i - 1] - (j - i + 1) / k + 2 * (b[j] - b[i - 1])



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值