Codeforces 1368F - Lamps on a Circle (交互博弈)
这题也太新颖了吧.. 交互博弈 以前一直以为交互只能出二分
题意:长度为n的环形灯 玩家有两种操作 结束游戏 或者选择k个灯点亮 每次这个k是玩家自己选的
玩家操作后让电脑操作 电脑选择一个最优的点x 然后关掉从x开始的连续k个灯
玩家想要点亮更多的灯 电脑则相反
让你来操作 如果达到了理论上最多灯的状态就算ac了
题解:模拟一下操作就找到规律了..
如果玩家上一次操作点亮了k个灯 如果当前连续亮灯的最长序列为x <= k
那么电脑操作了之后 至少会多点亮一个灯 就这样一直贪心下去..
所以我们一开始枚举 最长的连续亮灯长度
举个例子枚举的最长是2 就类似110110110.. 的把每个灯标记 1就标记为最后要点亮的灯
再比如n=11的时候 枚举的最长=2 11011011010 注意n和1相邻一定为0
然后模拟一下就发现这种情况 能最多点亮5个 = (n/3)*(2) + (n%3-1) - 2
k = 7 11011011010 -> 00000001010
k = 5 11011011010 -> 00000011010
k = 4 11011011010 -> 00001011010
k = 3 11011011010 -> 00011011010
之后无论如何也不能点亮更多灯了
然后枚举每一个长度 选一个最优的

#include <iostream>
#include <stdio.h>
#include <algorithm>
#include <cmath>
#include <vector>
#include <map>
#include <string.h>
#include <string>
using namespace std; int vis[1005];
int now[1005];
vector<int> g;
int main() {
int n;
cin>>n; int ans = 0;
int fz = 2;
for(int i = 2; i <= n / 2; i++) {
int res = (n / i) * (i - 1);
if(n % i != 0) res += n % i - 1;
res -= (i - 1);
if(res > ans) ans = res, fz = i;
}
//cout << ans << endl;
for(int i = 1; i <= n; i++) if(i % fz) vis[i] = 1;
vis[n] = 0; int lask = 0;
int x = 0;
while(1) {
if(x == -1) break;
int rr = 0;
int pos = x;
while(lask--) {
now[pos] = 0;
pos++;
if(pos > n) pos = 1;
}
for(int i = 1; i <= n; i++) if(now[i]) rr++; if(rr >= ans) {
puts("0");
cout.flush();
break;
} g.clear();
for(int i = 1; i <= n; i++) {
if(!now[i] && vis[i]) {
now[i] = 1;
g.push_back(i);
}
}
lask = g.size();
printf("%d", lask);
for(int i = 0; i < lask; i++) printf(" %d", g[i]); puts("");
cout.flush();
cin>>x;
}
return 0;
}
Codeforces 1368F - Lamps on a Circle (交互博弈)的更多相关文章
- Codeforces 549C The Game Of Parity【博弈】
C语言纠错大赛的一道题,正好拿来补博弈~~ 给的代码写的略奇葩..不过还是直接在上面改了.. 题目链接: http://codeforces.com/problemset/problem/549/C ...
- Codeforces 388C Fox and Card Game (贪心博弈)
Codeforces Round #228 (Div. 1) 题目链接:C. Fox and Card Game Fox Ciel is playing a card game with her fr ...
- codeforces 455B A Lot of Games(博弈,字典树)
题目 参考自博客:http://blog.csdn.net/keshuai19940722/article/details/38455269 //字典树,博弈 根据当前节点的后续来确定当前节点的状态, ...
- codeforces 679A Bear and Prime 100 交互
第一次交互题,记录一下吧 #include <cstdio> #include <iostream> #include <ctime> #include <v ...
- Codeforces 897D. Ithea Plays With Chtholly (交互)
题目链接:D. Ithea Plays With Chtholly 题意: 给你n张纸,在纸上写字(在 1 - c之间)可以写m次数 (,).(主要是交互,让你判断) 题解: 首先,看到m>=n ...
- [Educational Round 10][Codeforces 652F. Ants on a Circle]
题目连接:652F - Ants on a Circle 题目大意:\(n\)个蚂蚁在一个大小为\(m\)的圆上,每个蚂蚁有他的初始位置及初始面向,每个单位时间蚂蚁会朝着当前面向移动一个单位长度,在遇 ...
- Vladik and Favorite Game CodeForces - 811D (思维+BFS+模拟+交互题)
D. Vladik and Favorite Game time limit per test 2 seconds memory limit per test 256 megabytes input ...
- Codeforces Round #281 (Div. 2) D(简单博弈)
题目:http://codeforces.com/problemset/problem/493/D 题意:一个n*n的地图,有两个人在比赛,第一个人是白皇后开始在(1,1)位置,第二个人是黑皇后开始在 ...
- Codeforces 652F Ants on a Circle
Ants on a Circle 感觉这个思路好巧妙啊. 我们能发现不管怎么碰撞,初始态和最终态蚂蚁间的相对顺序都是一样的, 并且所占的格子也是一样的, 那么我们就只需要 找到其中一个蚂蚁的最终位置就 ...
随机推荐
- Maven项目编译之后xml文件不存在
如题: 问题请看图,target目录是编译之后的,发现并没有对应的mapper.xml文件 原因: maven项目默认不加载此类文件 解决办法有两个: 其一是将mybatis的xml映射文件放在mav ...
- 【Java基础】Java8 新特性
Java8 新特性 Lambda 表达式 Lambda 是一个匿名函数,我们可以把 Lambda 表达式理解为是一段可以传递的代码(将代码像数据一样进行传递).使用它可以写出更简洁.更灵活的代码. L ...
- 【SpringBoot1.x】SpringBoot1.x 入门
SpringBoot1.x 入门 文章源码 简介 传统的 JavaEE 开发,十分笨重且配置繁琐,开发效率很低,而且有很复杂的部署流程,对于第三方技术的集成也很困难. Sring 全家桶时代则解决了上 ...
- 【Flutter】可滚动组件之CustomScrollView
前言 CustomScrollView是可以使用Sliver来自定义滚动模型(效果)的组件.它可以包含多种滚动模型,举个例子,假设有一个页面,顶部需要一个GridView,底部需要一个ListView ...
- shell 脚本安装Tomcat和java
脚本安装Tomcat和java#!/bin/bash##SCRIPT:install_jdk-8u181-linux-x64_apache-tomcat-8.0.53#AUTHOR:Shinyinfo ...
- 【MySQL】使用WHERE子句 - 过滤数据
第6章 过滤数据 文章目录 第6章 过滤数据 1.使用WHERE子句 2.WHERE子句操作符 2.1.检查单个值 2.2.不匹配检查 2.3.范围值检查 2.4.空值检查 3.小结 简单记录 - M ...
- 【System】I/O密集型和CPU密集型工作负载之间有什么区别
CPU密集型(CPU-bound) CPU密集型也叫计算密集型,指的是系统的硬盘.内存性能相对CPU要好很多,此时,系统运作大部分的状况是CPU Loading 100%,CPU要读/写I/O(硬盘/ ...
- windows下如何安装Python、pandas
windows下如何安装Python.pandas 本篇主要涵盖以下三部分内容: Python.Pycharm的安装 使用Pycharm创建.运行Python程序 安装pandas 1.Python. ...
- AQS之ReentrantReadWriteLock精讲分析上篇
1.用法 1.1 定义一个安全的list集合 public class LockDemo { ArrayList<Integer> arrayList = new ArrayList< ...
- 基于Asp.Net Core 5.0依赖Quartz.Net框架编写的任务调度web管理平台
源码地址: https://github.com/246850/Calamus.TaskScheduler 演示地址:http://47.101.47.193:1063/ 1.Quartz.NET框架 ...