#交互,鸽笼原理#CF1776C Library game
题目
有一个长度为 \(m\) 的书架,以及 \(n\) 个长度 \(a_1,a_2,\dots,a_n\)
Alessia 和 Bernardo 从书架上取书。每次由 Alessia 选择一个之前没选过的 \(i\),
并选择一个长度为 \(a_i\) 的区间,需要保证这个区间内的书全都没有被取过。然后 Bernardo 从区间内任意拿走一本书。
Bernardo 的目标是让 Alessia 某一步没有区间可选。输出谁赢,并交互构造方案。
\(n\leq 100,m\leq 5000\)
分析
引理:Alessia获胜当且仅当 \(a\) 降序排序后不存在 \(a_i>\lfloor\frac{m}{i}\rfloor\)
因为如果不存在,那么根据鸽笼原理每次必有一个区间长度大于等于 \(\lfloor\frac{m}{i}\rfloor\),必可选
否则若 \(\exists k,a_k>\lfloor\frac{m}{k}\rfloor\),让区间长度为 \(a_{1\sim k}\) 的区间选择的位置为 \(a_k\) 的倍数,其它任选。
因为 \(k>\lfloor\frac{m}{a_k}\rfloor\),必有一个位置是重复的
代码
#include <cstdio>
#include <cctype>
#include <algorithm>
using namespace std;
const int N=5011;
int n,m,s[N],a[N],v[N],o;
int iut(){
int ans=0; char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=ans*10+c-48,c=getchar();
return ans;
}
int main(){
n=iut(); m=iut();
for (int i=1;i<=n;++i) a[i]=iut();
sort(a+1,a+1+n),reverse(a+1,a+1+n);
for (int i=1;i<=n;++i)
if (a[i]>m/i){
o=a[i];
break;
}
if (!o){
printf("Alessia\n"),fflush(stdout);
for (int i=1;i<=n;++i){
for (int j=1;j<=m;++j) s[j]=s[j-1]+v[j];
for (int j=a[i];j<=m;++j)
if (s[j]==s[j-a[i]]){
printf("%d %d\n",a[i],j-a[i]+1);
fflush(stdout);
break;
}
v[iut()]=1;
}
}else{
printf("Bernardo\n"),fflush(stdout);
for (int i=1;i<=n;++i){
int len=iut(),l=iut();
if (len>=o) printf("%d\n",(l+o-1)/o*o);
else printf("%d\n",l);
fflush(stdout);
}
}
return 0;
}
#交互,鸽笼原理#CF1776C Library game的更多相关文章
- HDU 5762 Teacher Bo (鸽笼原理) 2016杭电多校联合第三场
题目:传送门. 题意:平面上有n个点,问是否存在四个点 (A,B,C,D)(A<B,C<D,A≠CorB≠D)使得AB的横纵坐标差的绝对值的和等于CD的横纵坐标差的绝对值的和,n<1 ...
- Gym 100851G Generators (vector+鸽笼原理)
Problem G. Generators Input file: generators.in Output file: generators.outLittle Roman is studying li ...
- POJ_1065_Wooden_Sticks_(动态规划,LIS+鸽笼原理)
描述 http://poj.org/problem?id=1065 木棍有重量 w 和长度 l 两种属性,要使 l 和 w 同时单调不降,否则切割机器就要停一次,问最少停多少次(开始时停一次). Wo ...
- poj 3370 鸽笼原理知识小结
中学就听说过抽屉原理,可惜一直没机会见识,现在这题有鸽笼原理的结论,但其实知不知道鸽笼原理都可以做 先总结一下鸽笼原理: 有n+1件或n+1件以上的物品要放到n个抽屉中,那么至少有一个抽屉里有两个或两 ...
- poj 2356鸽笼原理水题
关于鸽笼原理的知识看我写的另一篇博客 http://blog.csdn.net/u011026968/article/details/11564841 (需要说明的是,我写的代码在有答案时就输出结果了 ...
- UVA 10620 - A Flea on a Chessboard(鸽笼原理)
UVA 10620 - A Flea on a Chessboard 题目链接 题意:给定一个跳蚤位置和移动方向.如今在一个国际象棋棋盘上,左下角为黑格,一个格子为s*s,推断是否能移动到白格子.问要 ...
- atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97
atitit.js javascript 调用c# java php后台语言api html5交互的原理与总结p97 1. 实现html5化界面的要解决的策略1 1.1. Js交互1 1.2. 动态参 ...
- CodeChef February Challenge 2018 Points Inside A Polygon (鸽笼原理)
题目链接 Points Inside A Polygon 题意 给定一个$n$个点的凸多边形,求出$[ \frac{n}{10}]\ $个凸多边形内的整点. 把$n$个点分成$4$类: 横坐标奇, ...
- 1393 0和1相等串 鸽笼原理 || 化简dp公式
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393 正解一眼看出来的应该是鸽笼原理.记录每个位置的前缀和,就是dp[i ...
- 基于Apache Thrift的公路涵洞数据交互实现原理
基于Apache Thrift的公路涵洞数据交互实现原理 Apache Thrift简介 Apache Thrift(以下简称为“Thrift”) 是 Facebook 实现的一种高效的.支持多种编程 ...
随机推荐
- 常用SQL语句备查
查询表中某一列是否有重复值 SELECT bizType, COUNT(bizType) FROM Res GROUP BY bizType HAVING COUNT(bizType) > 1 ...
- xml开发笔记(一):tinyXml2库介绍、编译和工程模板
前言 Qt开发Xml相关技术,使用到tinyxml2库. TinyXML TinyXML是一个简单的.小的C++的XML解析器,可以集成到其他程序中.它是ROS的标准XML解析器. 最新 ...
- 7z命令
文件解压缩命令 语法格式:7z 参数 文件名 常用参数 a 向压缩包中添加文件 t 测试压缩包的完整性 d 从压缩包中删除文件 u 更新压缩包中的文件 e 从压缩包中提取文件 x 解压文件时保留绝对路 ...
- 【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
问题描述 使用Docker Compose方式合并多个镜像(Images)文件,然后部署到App Service中,结果失败.报错 Linux Version 太长,不能超过4000个字符. 错误消息 ...
- 【Azure 云服务】如果云服务证书过期会有什么影响,证书时间应该如何查看
问题描述 如果云服务证书过期会有什么影响,证书时间应该如何查看 问题答案 在云服务中,有两种证书:服务证书 和 管理证书 什么是服务证书? 通过浏览器访问云服务中的服务(Web Role)时候所使用的 ...
- 【Azure Redis 缓存】Azure Redis Cluster 在增加分片数时失败分析
问题描述 Azure Redis Cluster 在增加分片数时失败,错误消息为: ResponseBody: { "error": { "details": ...
- Calculate Similarity调研
Calculate Similarity - the most relevant Metrics in a Nutshell --调研学习相似度定义与计算 Zhang Zhibin 张芷彬 Many ...
- STL-string模拟实现
1 #pragma once 2 3 #include<iostream> 4 #include<string.h> 5 #include<assert.h> 6 ...
- Java interface 接口 新特性
1 package com.bytezreo.interfacetest; 2 3 public class SubClass2 { 4 public static void main(String[ ...
- redis---面经
redis 偏应用的总结:redis 应用 Redis是什么? Redis是什么 对象 字符串 自增,键值对. SDS数据结构记录长度,已经使用,和总共长度,并且提前多余出容量,防止一直扩容缩容. 字 ...