傳送門
這套題的d 和 e 題都是這樣的問題. d 比 e 簡單點. e 需要一定的思維量
d: 給出n待處理的零件的進來的時間. 每個零件必須處理1s, 給你這個機器它1s可以同時處理的零件個數. 問最少需要幾台機器.
思路: 典型的區間問題, 直接在每乙個交接出處理下就行了, 然後for一遍就ok
ac code
const
int maxn = 1e6+5;
int cas=1;
int a[maxn];
void solve()
int res = 0,sum = 0;
for(int i=0;i<=maxn;i++)
cout
<< res << endl;
}}
e: 給出n個節目的開始時間和結束時間, 和同時可以儲存的節目數, 問全部節目弄下來, 最多可以看幾場節目.
思路:乍一看和d很像, 但是有不一樣, 我們知道有這個問題需要處理, 那就是我們必須同時知道乙個最小和最大值, 那麼很容易想到set, 因為又有重複元素, 所以用multiset, 注意下這些容器的begin和end的關係, 是乙個左閉右開的關係!!! . 首先插入k個, 判斷後面進入的節目的時間和已經在set中的關係即可.
const
int maxn = 1e5+5;
int cas=1;
int n,k;
struct seg
}s[maxn];
void solve()
sort(s+1,s+1+n);
multiset
p;int res = 0;
for(int i=1;i<=n;i++)
else
else}}
}res += p.size();
printf("%d\n",res);
}}
線段樹區間合併 掃瞄線
線段樹區間合併 掃瞄線 題目 求n個矩形面積並 includeusing namespace std typedef long long ll const int n 1e6 5 int t n 2 標記數量 int vis n 2 標記陣列 void update int root,int kl,...
線段樹 掃瞄線區間模板
線段樹 掃瞄線基礎模板 掃瞄線與普通的線段樹區別要認清,這裡線是連續的,其他的型別單點是離散的 include include include using namespace std int n const int maxn 10000 struct node void get int a,int ...
下標處理問題
下標處理問題 主要是針對於插入排序演算法寫的程式,其他情況可以借鑑這些思路。數學上或者通常意義上,下標都是從1開始的,但是在多數程式語言裡面陣列下標都是從0開始的,這就很惱火了,簡單乙個下標處理起來卻異常麻煩!請看 例如 1 典型的陣列下標越界問題 假設有個陣列 a 0 a 1 我們要用插入法排序,...