题意

给你一个长度为\(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. GIt -- Window下配置 git

    全局配置  git config --global user.name "账户名"  git config --global use r.email '账户邮箱' 生成ssh,命令 ...

  2. 【原创】Linux基础之sudo

    sudo允许用户以其他用户的身份(比如root)执行命令,比如切换用户.执行命令.读写文件等: 配置 sudo配置在:/etc/sudoers ## Sudoers allows particular ...

  3. python第10天(下)

    https://www.cnblogs.com/zingp/p/6863170.html  一:IO模型介绍 IO发生时涉及的对象和步骤 对于一个网络IO(network IO),它会涉及到两个系统对 ...

  4. String Formatting in C#

    原文地址 http://blog.stevex.net/string-formatting-in-csharp/ When I started working with the .NET framew ...

  5. Python中os与sys两模块的区别

    <os和sys的官方解释> ➤os os: This module provides a portable way of using operating system dependent ...

  6. 对Spring运用的一些思考

    最近使用spring总是遇到启动时启动不起来,或者启动起来一会就服务就关闭掉. 停下来想想不是spring不好复杂,而是我对它掌握不够,再有就是使用要尽量规范 使用配置文件,dao.manager.s ...

  7. CF444E. DZY Loves Planting

    题目链接 CF444E. DZY Loves Planting 题解 可以..二分网络流 可是 考虑边从小到大排序 考虑每条边能否成为答案 用并查集维护节点之间的联通性 对于一条边来说,如果这条边可以 ...

  8. Elasticsearch学习笔记二

    PS:上一篇已经介绍了ES的一些基础概念以及单机版ES的安装,配置,本文主要介绍ES的集群管理,CRUD以及简单聚合查询. 集群管理 ES的集群部署起来也很方便,将单机版SCP复制几分,修改elast ...

  9. Elasticsearch学习笔记一

    Elasticsearch Elasticsearch(以下简称ES)是一款Java语言开发的基于Lucene的高效全文搜索引擎.它提供了一个分布式多用户能力的基于RESTful web接口的全文搜索 ...

  10. Android中的WeakReference 弱引用

    WeakReference 弱引用 定义:弱引用,与强引用(我们常见的引用方式)相对:特点是:GC在回收时会忽略掉弱引用对象(忽略掉这种引用关系),即:就算弱引用指向了某个对象,但只要该对象没有被强引 ...