博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1293: [SCOI2009]生日礼物 - BZOJ
阅读量:4344 次
发布时间:2019-06-07

本文共 2089 字,大约阅读时间需要 6 分钟。

Description

小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有N个,分为K种。简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上。 小布生日快到了,于是小西打算剪一段彩带送给小布。为了让礼物彩带足够漂亮,小西希望这一段彩带中能包含所有种类的彩珠。同时,为了方便,小西希望这段彩带尽可能短,你能帮助小西计算这个最短的长度么?彩带的长度即为彩带开始位置到结束位置的位置差。

Input

第一行包含两个整数N, K,分别表示彩珠的总数以及种类数。接下来K行,每行第一个数为Ti,表示第i种彩珠的数目。接下来按升序给出Ti个非负整数,为这Ti个彩珠分别出现的位置。

Output

应包含一行,为最短彩带长度。

Sample Input

6 3

1 5

2 1 7

3 1 3 8

Sample Output

3

HINT

有多种方案可选,其中比较短的是1~5和5~8。后者长度为3最短。

【数据规模】
对于50%的数据, N≤10000;
对于80%的数据, N≤800000;
对于100%的数据,1≤N≤1000000,1≤K≤60,0≤彩珠位置<2^31。

 

唉,二分答案都没想到,思路有点不清晰啊

1 const  2     maxn=1000010;  3     maxk=65;  4 type  5     node=record  6       x,k:longint;  7     end;  8 var  9     a:array[0..maxn]of node; 10     n,k:longint; 11  12 operator <(a,b:node)c:boolean; 13 begin 14     c:=a.k
>1]; 32 repeat 33 while a[i]
j; 44 if i
l then sort(l,j); 46 end; 47 48 procedure init; 49 var 50 i,j,x:longint; 51 begin 52 read(k,k); 53 for i:=1 to k do 54 begin 55 read(x); 56 for j:=1 to x do 57 begin 58 inc(n); 59 read(a[n].k); 60 a[n].x:=i; 61 end; 62 end; 63 sort(1,n); 64 end; 65 66 function flag(len:longint):boolean; 67 var 68 l,r,s:longint; 69 cnt:array[0..maxk]of longint; 70 begin 71 l:=1; 72 r:=0; 73 s:=0; 74 fillchar(cnt,sizeof(cnt),0); 75 while r
len do 81 begin 82 dec(cnt[a[l].x]); 83 if cnt[a[l].x]=0 then dec(s); 84 inc(l); 85 end; 86 if s=k then exit(true); 87 end; 88 exit(false); 89 end; 90 91 procedure work; 92 var 93 l,r,mid:longint; 94 begin 95 l:=0; 96 r:=a[n].k-a[1].k; 97 while l<>r do 98 begin 99 mid:=longint((int64(l)+r)>>1);100 if flag(mid) then r:=mid101 else l:=mid+1;102 end;103 write(l);104 end;105 106 begin107 init;108 work;109 end.
View Code

 

转载于:https://www.cnblogs.com/Randolph87/p/3739435.html

你可能感兴趣的文章
Andriod使用webview控件往APP里内嵌网页
查看>>
Luogu 3390 【模板】矩阵快速幂 (矩阵乘法,快速幂)
查看>>
《机电传动控制》学习笔记08-2-PLC梯形图编程练习
查看>>
LomBok特性学习与使用
查看>>
11.17站立会议
查看>>
算法练习,链表二分最大n个
查看>>
WebApi跨域
查看>>
winform控件
查看>>
Python 函数
查看>>
笔记本电池怎样使用问题
查看>>
c++中的内存对齐
查看>>
如何获得一个网站的图标
查看>>
webmagic之爬取数据存储为TXT
查看>>
【NOI2018】
查看>>
【循序渐进学Python】4. Python中的序列——字典
查看>>
poj3352Road Construction 边双连通+伪缩点
查看>>
网上下载的周立功lpc2100的keil的模板在mdk4.0下应注意的事项
查看>>
Windows Azure: Blob Lease 功能详解
查看>>
实现继承的两种方式 call/apply 和 prototype
查看>>
控制div固定在页面的某个位置 ,用js感觉很麻烦 CSS更好一些
查看>>