CTU OPEN 2017 Ice cream samples /// 尺取法
题目大意:
给定n k
接下来n行 给定n个摊位的冰淇淋信息
首先给一个t 表示这个摊位有t个冰淇淋 接下来t个数表示对应冰淇淋的品种
走到连续的几个摊位 会买下走过的摊位的所有的冰淇淋
求 要买下所有k个品种的冰淇淋 最少需要买下多少冰淇淋
尺取法
L R指针移动 表示走过L~R的摊位
利用cnt[]记录品种信息
#include <bits/stdc++.h>
using namespace std;
#define LL long long
#define INF 0x3f3f3f3f
#define mem(i,j) memset(i,j,sizeof(i))
#define inc(i,l,r) for(int i=l;i<=r;i++)
#define dec(i,r,l) for(int i=r;i>=l;i--)
#define gcd(i,j) __gcd(i,j);
const int N=1e6+;
const int mod=1e9+;
const double eps=1e-; int n,k;
vector<int>v[N]; // v[i]中存有i摊位有的品种
int cnt[N]; // cnt[i]为此时区间中i品种的数量 int main()
{
while(~scanf("%d%d",&n,&k)) {
inc(i,,n) v[i].clear();
inc(i,,k) cnt[i]=;
inc(i,,n) {
int t; scanf("%d",&t);
while(t--) {
int m; scanf("%d",&m);
v[i].push_back(m);
}
}
int ans=INF;
int L=,R=,num=,all=;
while(L<=n) {
int len=v[R].size();
all+=len;
inc(i,,len-) // 记录这个摊位的品种
if(cnt[v[R][i]]++==) num++;
R= (R+)%n== ? n:(R+)%n;
if(R==L && num<k) break; // 说明所有摊位都无法凑齐所有品种
while(num==k && L<=n) { // 找到了k个品种
ans=min(ans,all);
len=v[L].size();
inc(i,,len-) // 移动左端 可能有富余
if(--cnt[v[L][i]]==) num--;
L++; all-=len;
}
}
if(ans==INF) printf("-1\n");
else printf("%d\n",ans);
} return ;
}
CTU OPEN 2017 Ice cream samples /// 尺取法的更多相关文章
- Gym - 101670G Ice cream samples(CTU Open Contest 2017 尺取法)
题目: To encourage visitors active movement among the attractions, a circular path with ice cream stan ...
- Ice cream samples Gym - 101670G 滑动扫描
题目:题目链接 思路:比赛中读错了题,题目要求选一个连续区间,却读成了随便选取几个柜台,英语要好好学啊,读懂题就很简单了,扫一遍就出结果了 AC代码: #include <iostream> ...
- hdu6103[尺取法] 2017多校6
/*hdu6103[尺取法] 2017多校6*/ #include <bits/stdc++.h> using namespace std; int T, m; ]; void solve ...
- HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017"百度之星"程序设计大赛 - 初赛(B))
小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- HDU 6205(尺取法)2017 ACM/ICPC Asia Regional Shenyang Online
题目链接 emmmm...思路是群里群巨聊天讲这题是用尺取法.....emmm然后就没难度了,不过时间上3000多,有点.....盗了个低配本的读入挂发现就降到2800左右, 翻了下,发现神犇Clar ...
- Ice Cream Tower
2017-08-18 21:53:38 writer:pprp 题意如下: Problem D. Ice Cream Tower Input file: Standard Input Output f ...
- QDUOJ 河老师的新年礼物(尺取法)
河老师的新年礼物 发布时间: 2017年1月1日 15:11 最后更新: 2017年1月1日 15:13 时间限制: 1000ms 内存限制: 256M 描述 河老师的新年礼物是一个长度为 ...
- HDU 5806 NanoApe Loves Sequence Ⅱ ——(尺取法)
题意:给出一个序列,问能找出多少个连续的子序列,使得这个子序列中第k大的数字不小于m. 分析:这个子序列中只要大于等于m的个数大于等于k个即可.那么,我们可以用尺取法写,代码不难写,但是有些小细节需要 ...
- 5806 NanoApe Loves Sequence Ⅱ(尺取法)
传送门 NanoApe Loves Sequence Ⅱ Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/131072 K ...
随机推荐
- 35.Unique Paths(不同的路径)
Level: Medium 题目描述: A robot is located at the top-left corner of a m x n grid (marked 'Start' in ...
- Vue-router路由的简单使用
一.安装路由: 如果使用vue-cli脚手架搭建,项目创建过程中会提示你自否选择使用vue-router,选择使用即可, 二.创建组件 1.vue-cli项目自动创建的路由文件是src包下面的rout ...
- gcc 交叉工具链中工具使用(arm-linux-xxx)
在Ubuntu系统中使用 gcc 系列工具是在PC机上使用 arm-linux-gcc 编译的目标 是在 arm CPU上使用 一.安装交叉编译工具链 1. 编译工具怎么获取 1)从官网 http:/ ...
- java两个数组内存图
- 0001.第一个多线程demo--分批处理数据
public class UserEntity { private String userId; private String userName; public String getUserId() ...
- python连接mongodb集群
一 安装模块pymongo pip3 install pymongo 二 创建一个MongoClient conn=MongoClient('mongodb://cbi:pass@ip1:20000, ...
- vue.js axios使用
1. 自定义配置 /** * Created by superman on 17/2/16. * http配置 */ import axios from 'axios' import utils fr ...
- 【和孩子一起学编程】 python笔记--第一天
[该随笔记录本人在阅读过程写的笔记和一些问题,格式比较随意,不定时更新] 由于该书使用的python版本为2.5,本人使用的为3.6. 第一章: 遇到的第一个问题: 1.3节 输出指令: print ...
- java版扫雷
package com.titian.bean; import java.awt.CardLayout; import java.awt.Point; public class Grid { char ...
- UNP学习 路由套接口
一.概述 在路由套接口中支持三种类型的操作: 1.进程能通过写路由套接口想内核发消息.举例:路径就是这样增加和删除的. 2.进程能在路由套接口上从内核读消息. 3.进程可以用sysctl函数得到路由表 ...