尺取,写起来有点麻烦

枚举左端点,然后找到右端点,,使得区间[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 尺取的更多相关文章

  1. Gym 100703I---Endeavor for perfection(尺取)

    题目链接 http://codeforces.com/problemset/gymProblem/100703/I Description standard input/outputStatement ...

  2. 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 ...

  3. hdu 4123 Bob’s Race 树的直径+rmq+尺取

    Bob’s Race Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Probl ...

  4. Codeforces Round #116 (Div. 2, ACM-ICPC Rules) E. Cubes (尺取)

    题目链接:http://codeforces.com/problemset/problem/180/E 给你n个数,每个数代表一种颜色,给你1到m的m种颜色.最多可以删k个数,问你最长连续相同颜色的序 ...

  5. poj2566尺取变形

    Signals of most probably extra-terrestrial origin have been received and digitalized by The Aeronaut ...

  6. poj2100还是尺取

    King George has recently decided that he would like to have a new design for the royal graveyard. Th ...

  7. hdu 6231 -- K-th Number(二分+尺取)

    题目链接 Problem Description Alice are given an array A[1..N] with N numbers. Now Alice want to build an ...

  8. Codeforces 939E Maximize! (三分 || 尺取)

    <题目链接> 题目大意:给定一段序列,每次进行两次操作,输入1 x代表插入x元素(x元素一定大于等于之前的所有元素),或者输入2,表示输出这个序列的任意子集$s$,使得$max(s)-me ...

  9. HDU 5178 pairs【二分】||【尺取】

    <题目链接> 题目大意: 给定一个整数序列,求出绝对值小于等于k的有序对个数. 解题分析: $O(nlong(n))$的二分很好写,这里就不解释了.本题尺取$O(n)$也能做,并且效率很不 ...

随机推荐

  1. Ant 与jemter的结合--批量执行jmeter脚本

    一.Ant 介绍&作用: Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发. 作用:打包,部署,运行Java工程 二.下 ...

  2. 【blog】Hibernate5如何设置SQLite的方言(待更新...)

    参考链接 Hibernate3.Hibernate4.Hibernate5 hibernate5连接sqlite (目前参考的是这个方法)

  3. 【页面加载】【九九乘法表】【document.write的功能_】【<script>直接显示数组】【声明新变量】

    1.页面加载时向body加载文本.弹出框 <body>        <script>            document.write("<h1>Ja ...

  4. 列出下面几项的URL并解释每部分代表的含义

    列出下面几项的URL并解释每部分代表的含义 a.你的学校 b.你的学校的计算机科学系 c.你的老师的主页

  5. Django学习手册 - ORM - ImageField数据类型

    前置步骤 setting.py文件配置: 添加app目录 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'djan ...

  6. scrapy基础 之 xpath网页结构

    1 ,什么是xpath XPath 是一门在 XML 文档中查找信息的语言.XML是一种类似于HTML的传输协议 2,节点 XPath 中,有七种类型的节点:元素.属性.文本.命名空间.处理指令.注释 ...

  7. python模块-----time

    说明 time模块提供各种时间相关的功能 与时间相关的模块有:time,datetime,calendar 这个模块的功能不是适用于所有的平台 这个模块中定义的大部分函数是调用C平台上的同名函数实现 ...

  8. python正则下载图片

    import urllib.request import re # 打开图片路径 def open_url(url): #设置请求路径 req = urllib.request.Request(url ...

  9. 记录几个GIT命令

    更新:git pull 删除未提交的文件:git clean -f 删除未提交的文件夹:git clean -fd 查看状态:git status 查看分支:git branch 检出某分支:git ...

  10. [转] 理解NLP中的卷积&&Pooling

    转自:http://blog.csdn.net/malefactor/article/details/51078135 CNN是目前自然语言处理中和RNN并驾齐驱的两种最常见的深度学习模型.图1展示了 ...