CF-552E-Two Teams
pro:给出n, k和长度为n的数组a, 两个人轮流取数1先取,设a[i]是当前数组中最大值,则取走a[i - k]到a[i + k]这段数,然后把a[i + k + 1]和后面的补到 a[i - k]的位置。(当然要考虑前后边界,i - k不能小于1,i + k不能大于n)输出一个字符串s[i]表示a[i]属于1或2;
sol:要解决的就是把a[i + k + 1]后面的往前移的操作,可以不用移,建两个数组,lft[i]表示i的上一个数下标,rgt[i]表示i下一个数的下标。
- 有点像HDU1698用并查集解决的骚操作,都是标记上一个数或下一个数
E - Two Teams GNU C++11 Accepted 46 ms 3300 KB #include "bits/stdc++.h"
using namespace std;
const int MAXN = 2e5 + ;
int a[MAXN], b[MAXN], lft[MAXN], rgt[MAXN];
char ans[MAXN];
int n, k, d = ;
void del(int t) {
ans[t] = d ^ '';
lft[rgt[t]] = lft[t];
rgt[lft[t]] = rgt[t];
}
int main() {
scanf("%d%d", &n, &k);
for (int i = ; i <= n; i++) {
scanf("%d", &a[i]);
b[a[i]] = i;
lft[i] = i - ;
rgt[i] = i + ;
}
for (int i = n; i >= ; i--) {
int m = b[i];
if (ans[m]) continue;
del(m);
m = lft[m];
for (int j = ; j < k && m >= ; j++) del(m), m = lft[m];
m = rgt[m];
for (int j = ; j < k && m <= n; j++) del(m), m = rgt[m];
d = - d;
}
puts(ans + );
return ;
}C++真好用,看到有人用STL里的东西来暴力,1900+ms卡过去了。本来想尝试hack一下的,数据太大无法提交。
CF-552E-Two Teams的更多相关文章
- cf 443 D. Teams Formation](细节模拟题)
cf 443 D. Teams Formation(细节模拟题) 题意: 给出一个长为\(n\)的序列,重复\(m\)次形成一个新的序列,动态消除所有k个连续相同的数字,问最后会剩下多少个数(题目保证 ...
- CF 552(div 3) E Two Teams 线段树,模拟链表
题目链接:http://codeforces.com/contest/1154/problem/E 题意:两个人轮流取最大值与旁边k个数,问最后这所有的数分别被谁给取走了 分析:看这道题一点思路都没有 ...
- CF 690C3. Brain Network (hard) from Helvetic Coding Contest 2016 online mirror (teams, unrated)
题目描述 Brain Network (hard) 这个问题就是给出一个不断加边的树,保证每一次加边之后都只有一个连通块(每一次连的点都是之前出现过的),问每一次加边之后树的直径. 算法 每一次增加一 ...
- 【CF1133E】K Balanced Teams(动态规划,单调队列)
[CF1133E]K Balanced Teams(动态规划,单调队列) 题面 CF 让你把一堆数选一些出来分成不超过\(K\)组,每一组里面的最大值和最小值之差不超过\(5\),求最多有多少个人元素 ...
- cf Round#273 Div.2
题目链接,点击一下 Round#273 Div.2 ================== problem A Initial Bet ================== 很简单,打了两三场的cf第一 ...
- 20190708三人开黑CF模拟赛
7月8号晚上8点和两位巨佬开了一场虚拟cf: [Helvetic Coding Contest 2018 online mirror (teams allowed, unrated)] 我这么蔡,只A ...
- ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'
凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- cf Round 613
A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...
- ARC下OC对象和CF对象之间的桥接(bridge)
在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...
随机推荐
- MySQL优化查询相关
[查询优化相关] 1.如何定位相关慢的查询: a.可以开启慢查询日志,也可以使用show profiles 去记录相关查询到一个临时表再分析. b.show processlist 看看有没有大量等 ...
- POJ 1789:Truck History
Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 21376 Accepted: 8311 De ...
- Android通过包名打开第三方应用
import android.content.ComponentName; import android.content.Context; import android.content.Intent; ...
- shell手册
摘自雪松同学 0说明{ # shell实例手册最新下载地址: http://hi.baidu.com/quanzhou722/item/f4a4f3c9eb37f02d46d5c0d9 # pytho ...
- coursera课程视频
#!/usr/bin/env python # coding=utf-8 import urllib import urllib2 import cookielib def setcookie(ena ...
- Python图形验证码识别
一,OCR OCR,即Optical Character Recognition,光学字符识别,通过扫描字符,分析形状,然后将其翻译成电子文本的过程.tesserocr是Python的一个OCR识别库 ...
- 【网络流】One-Way Roads
[网络流]One-Way Roads 题目描述 In the country of Via, the cities are connected by roads that can be used in ...
- log4j中%5p的含义
因为日志级别分别有error,warn,info,debug,fatal5种,有些是5个字母的,有些是4个字母的,如果直接写%p就会对不齐,%-5p的意思是日志级别输出左对齐,右边以空格填充,%5p的 ...
- pip 通过pqi切换源到国内镜像
pip install pqipqi lspqi use aliyun # pqi use tuna 清华
- Linux下查找Nginx配置文件位置
1.查看Nginx进程 命令: ps -aux | grep nginx 圈出的就是Nginx的二进制文件 2.测试Nginx配置文件 /usr/sbin/nginx -t 可以看到nginx配置文件 ...