acwing111 畜欄預定 排序,貪心,模擬

2021-09-26 08:45:50 字數 1088 閱讀 6594

有n頭牛在畜欄中吃草。

每個畜欄在同一時間段只能提供給一頭牛吃草,所以可能會需要多個畜欄。

給定n頭牛和每頭牛開始吃草的時間a以及結束吃草的時間b,每頭牛在[a,b]這一時間段內都會一直吃草。

當兩頭牛的吃草區間存在交集時(包括端點),這兩頭牛不能被安排在同乙個畜欄吃草。

求需要的最小畜欄數目和每頭牛對應的畜欄方案。

輸入格式

第1行:輸入乙個整數n。

第2…n+1行:第i+1行輸入第i頭牛的開始吃草時間a以及結束吃草時間b,數之間用空格隔開。

輸出格式

第1行:輸入乙個整數,代表所需最小畜欄數。

第2…n+1行:第i+1行輸入第i頭牛被安排到的畜欄編號,編號是從1開始的 連續 整數,只要方案合法即可。

資料範圍

1≤n≤50000,

1≤a,b≤1000000

輸入樣例:

51 10

2 43 6

5 84 7

輸出樣例:41

2324

給了每頭牛的吃草時間段,每個欄同時只能容納一頭牛,問最少要用幾個欄能使所有牛吃飯;

學習了一下結構體的符號;還是不太懂emmm

先將所有的資料按開始時間排序,用乙個優先佇列維護當前最早的結束時間,下一頭牛的開始時間如果早與佇列的top就新開乙個欄否則就用top的那個欄;

#include

#include

using

namespace std;

struct node

}a[50005];

priority_queue

,greater

> q;

bool

cmp(node a,node b)

bool

cmp2

(node a,node b)

intmain()

else

}sort

(a,a+n,cmp2)

; cout

int i=

0;i) cout<.pos<}

AcWing演算法基礎1 1

排序 快速排序 快排 寫題的時候用的不多基本都是直接sort 面試可能要手擼快排,上模板 1 void quick sort int q,int l,intr 2 12 quick sort q,l,j quick sort q,j 1 r 13 模板題 給定你乙個長度為n的整數數列。請你使用快速排...

acwing藍橋杯c AB組)1 1 遞迴

整理自acwing y總課程藍橋杯c ab組輔導課 試聽課 嗶哩嗶哩 bilibili 題目描述 抽象出資料型別 dfs,圖論,dp,貪心等 遞迴引入 自己呼叫自己 列如斐波那契數列1,2,3,5,8,13 include include using namespace std intf int n...

AcWing 日期問題

小明正在整理一批歷史文獻。這些歷史文獻 現了很多日期。小明知道這些日期都在1960年1月1日至2059年12月31日。令小明頭疼的是,這些日期採用的格式非常不統一,有採用年 月 日的,有採用月 日 年的,還有採用日 月 年的。更加麻煩的是,年份也都省略了前兩位,使得文獻上的乙個日期,存在很多可能的日...