jzoj1506 普及模擬 機密檔案

2021-10-03 22:17:06 字數 1630 閱讀 3645

題目描述

oi總部最近得到可靠訊息,近日來怪盜基德會再次來oi總部盜竊機密檔案(因為是機密,所以不能透露),所以oier得在怪盜基德來臨之前就把檔案備份。不過,正好今天oi總部停電了,所以就得人工抄寫了。現在,oi總部內一共有m份資料和k個oier(s),需要將每乙份資料都備份乙份,m份資料的頁數不一定相同(有不同的,也有相同的)。

現在,你作為其中的一名oier,把資料分配給oier備份,由於人太多了,所以每一名oier所分配到的資料都必須是連續順序的,並且每一名oier的備份速度是相同的。

你的任務就是讓備份的時間最短,列出最短的方案。資料可能存在多個解,所以,當存在多個解時,讓前面的人少備份。

輸入

輸入檔案中的第一行為兩個整數m,k,分別表示書本的數目和oier的人數。

第二行中為由m個分隔的整數構成,分別表示m本書的頁數。其中:第i份資料的編號為i。

輸出

輸出檔案中共有k行,每行有兩個整數。其中:第i行中表示第i個oier備份的資料編號的起止。

樣例輸入

8 3

1 2 3 4 5 6 7 8

樣例輸出

1 3

4 67 8

提示

【資料範圍】

對於50%的資料,滿足:1<=k<=m<=500;

對於100%的資料,滿足:1<=k<=m<=1000。

解題思路

二分求頁數最大數,只要能抄就抄

如果當前的書=人,那麼就人手一本

#include

#include

using namespace std;

struct dt

ans[

2000];

int n,m,a[

2000

],l,r;

void

demo

(int mid)

if(i<=mid&&m-cnt==i)

if(s+a[i]

>mid)

cnt++

,s=a[i]

;else s+=a[i];}

cnt++;if

(cnt>m)

l=mid;

else r=mid;

}int main()

while

(l+1

int j=n,cnt=

0,s=0;

for(int i=n;i>

0;i--

)else

s=a[i];}

else

s+=a[i];if

(i==m-cnt)}if

(j!=0)

ans[

++cnt]

.y=j,ans[cnt]

.x=1

;for

(int i=m;i>

0;i--

)printf

("%d %d\n"

,ans[i]

.x,ans[i]

.y);

}

JZOJ 3 18 1508 普及模擬 螞蟻

題目描述 在二維平面座標軸裡面,有n只螞蟻,第i只螞蟻所在的點的座標是 xi,yi 座標都是整數。所有螞蟻的移動速度都相等,都是每秒移動1個單位。每只螞蟻都有乙個固定的移動方向,是如下4種方向之一,都是平行於座標軸的 l n表示向北 即朝上 則y座標正方向。l e表示向東 即朝右 則x座標正方向。l...

JZOJ 3 18 1507 普及模擬 數列

題目描述 給定乙個等差數列,第一項是a,從第二項開始,每項與前一項的差都是乙個定值b。如果用數學形式來表示,那麼可以表示成 a b x 其中 x 0,且是整數。例如 a 1,b 2,那麼這個等差數列就是 1,3,5,7,9 再給定乙個等比數列,第一項是c,從第二項開始,每項是前一項的d倍。如果用數學...

數學 (JZOJ) 普及模擬 單元格

題目描述 在乙個r行c列的 裡,我們要選出3個不同的單元格。但要滿足如下的兩個條件 1 選中的任意兩個單元格都不在同一行。2 選中的任意兩個單元格都不在同一列。假設我們選中的單元格分別是 a,b,c,那麼我們定義這種選擇的 費用 f a b f b c f c a 其中f a b 是指單元格a到單元...