CF 1033 C. Permutation Game
C. Permutation Game
http://codeforces.com/contest/1033/problem/C
题意:
一个排列,每个位置i走到的位置j满足:a[j]>a[i],(j-i)是a[i]的倍数。问从每个位置开始,是否有必胜策略。
分析:
博弈论+拓扑。
由于是一个排列,那么可以枚举每个数,判断这个位置的a是否大于它,如果可以连边。这样的复杂度是$nlogn$的。
然后对于一些无路可走的点,这是必败态,根据必胜和必败的定义:必胜态的后继状态中存在至少一个必败态,必败态的后继状态全是必胜态。
然后建反图,在DAG上拓扑。
代码:
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<iostream>
#include<cctype>
#include<set>
#include<vector>
#include<queue>
#include<map>
#define fi(s) freopen(s,"r",stdin);
#define fo(s) freopen(s,"w",stdout);
using namespace std;
typedef long long LL; inline int read() {
int x=,f=;char ch=getchar();for(;!isdigit(ch);ch=getchar())if(ch=='-')f=-;
for(;isdigit(ch);ch=getchar())x=x*+ch-'';return x*f;
} const int N = ;
int a[N], deg[N], q[N], f[N];
vector<int>T[N]; int main() {
int n = read();
for (int i=; i<=n; ++i) a[i] = read(); for (int i=; i<=n; ++i) {
for (int j=i+a[i]; j<=n; j+=a[i])
if (a[j] > a[i]) T[j].push_back(i), deg[i] ++;
for (int j=i-a[i]; j>=; j-=a[i])
if (a[j] > a[i]) T[j].push_back(i), deg[i] ++;
} int L = , R = ;
memset(f, -, sizeof(f));
for (int i=; i<=n; ++i)
if (!deg[i]) q[++R] = i, f[i] = ; while (L <= R) {
int u = q[L ++];
for (int sz=T[u].size(),i=; i<sz; ++i) {
int v = T[u][i];
if (f[v] == -) {
if (f[u] == ) f[v] = ;
else f[v] = ;
}
else {
if (f[u] == ) f[v] = ;
}
deg[v] --;
if (!deg[v]) q[++R] = v;
}
}
for (int i=; i<=n; ++i) {
if (f[i]) putchar('A');
else putchar('B');
}
return ;
}
CF 1033 C. Permutation Game的更多相关文章
- CF 1033 D. Divisors
D. Divisors http://codeforces.com/contest/1033/problem/D 题意: 给n个(n<=500)个数,($a_i <= 2 \times 1 ...
- CF 500 B. New Year Permutation 并查集
User ainta has a permutation p1, p2, ..., pn. As the New Year is coming, he wants to make his permut ...
- CF&&CC百套计划3 Codeforces Round #204 (Div. 1) E. Jeff and Permutation
http://codeforces.com/contest/351/problem/E 题意: 给出一些数,可以改变任意数的正负,使序列的逆序对数量最少 因为可以任意加负号,所以可以先把所有数看作正数 ...
- [CF 612E]Square Root of Permutation
A permutation of length n is an array containing each integer from 1 to n exactly once. For example, ...
- CF 1141C Polycarp Restores Permutation
Description An array of integers p1,p2,…,pnp1,p2,…,pn is called a permutation if it contains each nu ...
- CF R 209 div 2 CF359B Permutation 构造
LINK:Permutation 休闲一下 开了一道构造题. 看起来毫无头绪 其实仔细观察第二个条件 0<=2k<=n. 容易想到当n是奇数的时候 k的范围更小 再手玩一下第一个条件 容易 ...
- cf B. Levko and Permutation
http://codeforces.com/contest/361/problem/B #include <cstdio> #include <cstring> #includ ...
- cf B. Permutation
#include <cstdio> #include <cstring> #include <algorithm> using namespace std; ]; ...
- 【2019雅礼集训】【CF 960G】【第一类斯特林数】【NTT&多项式】permutation
目录 题意 输入格式 输出格式 思路 代码 题意 找有多少个长度为n的排列,使得从左往右数,有a个元素比之前的所有数字都大,从右往左数,有b个元素比之后的所有数字都大. n<=2*10^5,a, ...
随机推荐
- PHP------Jquery的用法
Jquery Jquery实际上相当于一个升级版的JS,Jquery里面封装了很多的东西,Jquery的功能要比JS强大,用起来比JS方便.Jquery和JS都属于JS,只不过Jquery是封装了一个 ...
- python 3.6.3 异常
内置异常 在Python中,所有异常都必须是派生类的实例 BaseException.在try同一个声明中except 说提到一类特殊条款,该条款还处理来自类(从中但也不例外类派生的任何异常类它派生) ...
- ARC声明属性关键字详解(strong,weak,unsafe_unretained,copy)
ARC声明属性关键字详解(strong,weak,unsafe_unretained,copy) 在iOS开发过程中,属性的定义往往与retain, assign, copy有关,我想大家都很熟悉了, ...
- win7环境中使用notepad++配置python IDE
1, 下载notepad++,并安装 http://notepad-plus-plus.org/download/v6.5.5.html 2, 下载python的win版本,并安装 https://w ...
- Java参数传递对象引用传递失效
产线问题排查,方法传递对象引用但返回后对象一直为空 原因: null作为参数传递的时候,就不是引用传参了 Java参数引用传递之例外:null 众所周知的是,java中除基本类型外,参数都是引用传递. ...
- 用cookie实现记住用户名和密码
1.当第一次发送请求时,在jsp页面并不能获取cookie对象,第一次是addCookie,之后再请求时才能获得. session和sessionid在服务器端生成的时候,同时把sessionID放在 ...
- 控制DIV中的文字绝对居中
水平居中:<div align="center">Content</div> 垂直居中:<div style="line ...
- Flask—09-项目部署(01)
项目部署 WEB工作原理 客户端(chrom) <=> WEB服务器(nginx) <=> WSGI(uWSGI) <=> Python(Flask) <=& ...
- OCR
谷歌OCR光学字符识别窥探 - 简书 Tesseract OCR初探 利用Tesseract图片文字识别初探 _ TonyDeng's Blog Tesseract OCR(光学字符识别)教程 - C ...
- 学习笔记(2)centos7 下安装mysql
centos7安装mysql 本文通过yum方式安装mysql 1.添加mysql yum 仓库 去mysql开发者中心(http://dev.mysql.com/downloads/repo/yum ...