题意

给你一个长度为\(n\)的序列和一个数\(m\)。

小A和小B分别在\([1,m]\)选出一个数\(a\)和\(b\),然后开始游戏。

轮到小A时,他选择一个元素减\(a\);小B则选择一个元素减\(b\)。

不能将元素变成负数。

问对于所有\(m \times m\)对\((a,b)\),分别有多少对是小A/B必胜,先/后手必胜。

$ n \leq 100,m \leq 100000 $,序列元素 $ \leq 10^{18} $

思路

首先易知,原序列与原序列\(mod \space a+b\)后得到的结果是一样的,且A必胜与B必胜的情况种类是一样的,所以不妨假设\(a \leq b\)

先取模,然后对后来的序列进行讨论

判断条件1 \(d\)个数\(\geq 2a\) \(c\)个数\(\geq b\) 判断条件4 情况
$ \exists i$ 使\(a \leq x_i <b\) A
\(d \geq2\) A
\(c=0\)
\(c \text{ mod } 2=1\)
\(d=1\) A
\(d=0\)

一个大的分类讨论

枚举\(a+b\),每次\(O(n \space log n)\)计数,总复杂度\(O(2nm \space log n)\)

#include <bits/stdc++.h>
using std::sort;
using std::min;
using std::max;
int n,m,b[105];
long long a[105],cnt1,cnt2;
int main(){
scanf("%d%d",&n,&m);
for (int i=1;i<=n;i++) scanf("%lld",&a[i]);
for (int i=2;i<=2*m;i++){
for (int j=1;j<=n;j++) b[j]=a[j]%i;
sort(b+1,b+n+1);
b[n+1]=m;
if (~i&1){
int t1=0;
for (int j=1;j<=n;j++) if (b[j]>=i/2) t1=t1^1;
if (t1) cnt2++;
}
for (int j=1;j<=n+1;j++){
int l=max(b[j-1]+1,i/2+1),r=min(min(i-1,m),b[j]);
if (r<l) continue;
int al=max(b[j-1],b[n-1]/2),bl=max(l,i-al);
if (bl<=r) cnt1+=r-bl+1,r=bl-1;
if (r<l) continue;
if ((n-j+1)&1) cnt2+=(r-l+1)*2;
else{
al=b[n-1]/2+1;int ar=b[n]/2;
bl=max(l,i-ar);int br=min(r,i-al);
if (br>=bl) cnt1+=br-bl+1;
}
}
}
printf("%lld %lld %lld %lld",cnt1,cnt1,cnt2,1ll*m*m-cnt1-cnt1-cnt2);
}

后记

ZJOI2019 kcz讲解了此题,但是写起来还是有点晕,ZJOI开心地爆了

CF1033G Chip Game的更多相关文章

  1. p_b_p_b 杂题选讲

    [ARC119F] AtCoder Express 3 [ARC117F] Gateau 考虑二分答案,对前缀和建差分约束 \(\text{check}\) ,但是用 \(\text{spfa}\) ...

  2. a chip multiprocessor

    COMPUTER OR GANIZATION AND ARCHITECTURE DESIGNING FOR PERFORMANCE NINTH EDITION A multicore computer ...

  3. hdu5269 Chip Factory

    地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=5536 题目: Chip Factory Time Limit: 18000/9000 MS ( ...

  4. 2015ACM/ICPC亚洲区长春站 J hdu 5536 Chip Factory

    Chip Factory Time Limit: 18000/9000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others)T ...

  5. codeforces 590B B. Chip 'n Dale Rescue Rangers(二分+计算几何)

    题目链接: B. Chip 'n Dale Rescue Rangers time limit per test 1 second memory limit per test 256 megabyte ...

  6. Codeforces Round #327 (Div. 1) B. Chip 'n Dale Rescue Rangers 二分

    题目链接: 题目 B. Chip 'n Dale Rescue Rangers time limit per test:1 second memory limit per test:256 megab ...

  7. HDU 5536 Chip Factory 字典树

    Chip Factory Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid= ...

  8. Codeforces Round #327 (Div. 2) D. Chip 'n Dale Rescue Rangers 二分 物理

    D. Chip 'n Dale Rescue Rangers Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/co ...

  9. Cheap CK100 1024 tokens NXP FIX Chip on Eobd2

    CK100 is a well-known and cost-effective key programmer for many cars. Some said it is a must for bo ...

随机推荐

  1. 【easy】234. Palindrome Linked List

    ques: 判断一个链表是否回文 Could you do it in O(n) time and O(1) space? method:先将链表分为两部分,将后半部分反转,最后从前往后判断是否相等. ...

  2. greenplum加密

    --如下为greenplum5.0数据库加解密--加密函数select encrypt('123456','aa','aes');--加解密函数select convert_from(decrypt( ...

  3. js操作:selenium无法操作隐藏元素问题

    对于前端隐藏元素,一直是selenium自动化定位元素的隐形杀手,脚本跑到隐藏元素时位置时报各种各样的错误, 隐藏的下拉菜单又没有办法避免,此帖只为交流隐藏元素自动化定位处理方法(3种操作)      ...

  4. openwrt MT7628 编译前更改为DHCP,root 密码、ssid、时区、主机名

    一.设置为DHCP动态获取ip地址 在:/home/OpenWrt/openwrt_CC_mt76xx_zhuotk_source/ 目录下,新建文件名/files/etc/config. 将配置好的 ...

  5. ExtJS5搭建MVVM框架

    概述 · ExtJs5能够搭建Js的MVC框架,通过配置路由能够通过左边树形菜单导航到所需的页面,效果如下: 搭建JS框架 新建home.htm页面作为ExtJs加载的主体页面,页面引入ExtJs需要 ...

  6. LeetCode题解 | 215. 数组中的第K个最大元素

    在未排序的数组中找到第 k 个最大的元素.请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素. 示例 1: 输入: [3,2,1,5,6,4] 和 k = 2 输出: 5 ...

  7. leetcode 91 Decode Ways I

    令dp[i]为从0到i的总方法数,那么很容易得出dp[i]=dp[i-1]+dp[i-2], 即当我们以i为结尾的时候,可以将i单独作为一个字母decode (dp[i-1]),同时也可以将i和i-1 ...

  8. java验证码生成

    第一种方式:纯代码 先写jsp: 在编写CaptServlet: package cn.itcast.web.controller; import java.awt.Color; import jav ...

  9. 如何彻底卸载Jenkins

    起因: 最近在做持续集成测试过程中遇到一个问题,之前部署的Jenkins管理员密码忘了之后无法登陆,而且删除掉tomcat下webapps文件夹中的Jenkins目录后,再次安装Jenkins后相关的 ...

  10. Python基础 之for循环嵌套实例

    一.在控制台中输出以下字符样式: """ *****                       *****                       *****&qu ...