cf1121d 尺取
尺取,写起来有点麻烦
枚举左端点,然后找到右端点,,使得区间[l,r]里各种颜色花朵的数量满足b数组中各种花朵的数量,然后再judge区间[l,r]截取出后能否可以供剩下的n-1个人做花环
/*
给定序列A,分成n段,每段k个,
然后删掉A中的一些,但任要能组成n段,使得A中的一段包含序列B中的所有元素
如果可以输出删掉的元素,否则输出-1
*/
#include<bits/stdc++.h>
using namespace std;
#define maxn 500005
int m,k,n,s,a[maxn],b[maxn],c[maxn];
int tot[maxn],cnt[maxn];//tot[i]表示第i种颜色需要的数量
int l,r,sum,Max,all;
int judge(int l,int r){//判断除去l,r是否可行
int tmp1=l-,tmp2=m-r;
if(tmp1/k+tmp2/k+>=n)return ;
return ;
}
void add(int i){
if(cnt[a[i]]==)return;
tot[a[i]]++;
if(tot[a[i]]==cnt[a[i]])sum++;
}
void del(int i){
if(cnt[a[i]]==)return;
tot[a[i]]--;
if(tot[a[i]]==cnt[a[i]]-)sum--;
} int main(){
cin>>m>>k>>n>>s;
for(int i=;i<=m;i++)cin>>a[i],Max=max(Max,a[i]);
for(int i=;i<=s;i++)cin>>b[i],Max=max(Max,b[i]);
for(int i=;i<=s;i++)cnt[b[i]]++; l=,r=k;sum=;
for(int i=;i<=Max;i++)
if(cnt[i]!=)all++;
for(int i=l;i<=k;i++)
add(i); while(){
if(sum==all){
if(judge(l,r)){//可行
vector<int>v;
v.clear();
int tmp=r-l+;
for(int i=l;i<=r;i++){
if(cnt[a[i]]> || tmp==k)
cnt[a[i]]--;
else v.push_back(i),tmp--;
}
printf("%d\n",v.size());
for(int i=;i<v.size();i++)
printf("%d ",v[i]);
return ;
}
del(l);l++;
} while(sum<all || l+k->r){
r++;
if(r>m)break;
add(r);
}
if(r>m)break;
}
puts("-1");
}
cf1121d 尺取的更多相关文章
- Gym 100703I---Endeavor for perfection(尺取)
题目链接 http://codeforces.com/problemset/gymProblem/100703/I Description standard input/outputStatement ...
- NOJ 1072 The longest same color grid(尺取)
Problem 1072: The longest same color grid Time Limits: 1000 MS Memory Limits: 65536 KB 64-bit in ...
- hdu 4123 Bob’s Race 树的直径+rmq+尺取
Bob’s Race Time Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Probl ...
- Codeforces Round #116 (Div. 2, ACM-ICPC Rules) E. Cubes (尺取)
题目链接:http://codeforces.com/problemset/problem/180/E 给你n个数,每个数代表一种颜色,给你1到m的m种颜色.最多可以删k个数,问你最长连续相同颜色的序 ...
- poj2566尺取变形
Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronaut ...
- poj2100还是尺取
King George has recently decided that he would like to have a new design for the royal graveyard. Th ...
- hdu 6231 -- K-th Number(二分+尺取)
题目链接 Problem Description Alice are given an array A[1..N] with N numbers. Now Alice want to build an ...
- Codeforces 939E Maximize! (三分 || 尺取)
<题目链接> 题目大意:给定一段序列,每次进行两次操作,输入1 x代表插入x元素(x元素一定大于等于之前的所有元素),或者输入2,表示输出这个序列的任意子集$s$,使得$max(s)-me ...
- HDU 5178 pairs【二分】||【尺取】
<题目链接> 题目大意: 给定一个整数序列,求出绝对值小于等于k的有序对个数. 解题分析: $O(nlong(n))$的二分很好写,这里就不解释了.本题尺取$O(n)$也能做,并且效率很不 ...
随机推荐
- 通过Java构造参数列表
背景:我们在进行性能测试时,需要构造测试数据,即参数化文件,如下: 上面的文件内容,我们可以通过Java代码轻松实现,主要代码解释: All 代码(其实我也看不懂,但是会改就行啦) package f ...
- 【CentOS】Tomcat的安装
文件上传方式(推荐) # 解压 tar zxvf apache-tomcat-9.0.1.tar.gz # 进入bin目录启动 ./startup.sh # 进入log目录查看日志信息 tail -f ...
- 在IDEA中新建Spring Boot项目
新建项目 选择项目构建方式 选择项目依赖 新建项目成功后(Maven构建方式)
- mysql案例~关于linux服务器本身的优化问题
简介:mysql服务优化分为 1服务器本身的优化 2mysql本身的性能优化 今天咱们来讨论下服务器本身的优化性能 一 参数的优化简介 1 文件系统的选择 Linux 常用文件系统: ext3, ex ...
- Css - 利于搜索引擎收录的三个标签
Css - 利于搜索引擎收录的三个标签 <head> <meta charset="utf-8" /> <title>京东(JD.COM)-正品 ...
- Gulp简明使用教程
Glup用自动化构建工具增强你的工作流程! 同类型的软件还有Grunt.关于两者的区别可以参考这篇文章Grunt VS Gulp 安装: $ npm install gulp -g $ npm ins ...
- 【Udacity并行计算课程笔记】- Lesson 4 Fundamental GPU Algorithms (Applications of Sort and Scan)
I. Scan应用--Compact 在介绍这节之前,首先给定一个情景方便理解,就是因为某种原因我们需要从扑克牌中选出方块的牌. 更formal一点的说法如下,输入是 \(s_0,s_1,...\), ...
- MySQL 4.1-5.0-5.1-5.5-5.6各版本的主要区别
各版本的一些命令差异: show innodb status\G mysql-5.1 show engines innodb status\G mysql-5.5 关于grant授权 mysql ...
- python的wrapt模块实现装饰器
wrapt是一个功能非常完善的包,用于实现各种你想到或者你没想到的装饰器.使用wrapt实现的装饰器你不需要担心之前inspect中遇到的所有问题,因为它都帮你处理了,甚至inspect.getsou ...
- Python3学习笔记03-基础数据类型
Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对 ...