思維 移動桌子 差分陣列

2021-09-11 01:42:48 字數 1015 閱讀 5099

題目大意:一層裡面有400個房間,北邊和南邊各有200個房間,要從乙個房間裡面把一張桌子移動到另乙個房間,需要占用這兩個房間之間的所有走廊(包括這兩個房間前面的),每移動乙個桌子需要10分鐘,給出需要移動的桌子的資料(從哪移動到哪),要求計算出最少需要多少分鐘才能把所有桌子移動完。

思考:很不錯的思維題,需要注意差分的時候,y不一定大於x,要考慮是否交換x,y的值。

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

#define ll long long

#define p1 first

#define p2 second

//memset(a, 0, sizeof(a));

//stack堆疊 queue佇列 priority_queue優先佇列

//vector向量 multiset平衡二叉樹 deque雙端佇列

//pair greater

//unordered_map 雜湊map

int a[

205]

;int

main()

a[x]

++, a[y+1]

--;}for

(int i=

1;i<

205;i++

) cout<<

*max_element

(a, a+

205)*10

<

}return0;

}

差分陣列概述

在網上講差分陣列的博文很少,也很難找到。一度以為差分陣列是傳播於小眾的神犇技巧所以一直放著沒有去研習。今天做了 bzoj1635後發現各路神犇都用差分陣列,本蒟卻傻傻寫了線段樹。對於序列a 取a i a i 1 為其差分陣列b i 的值,可以發現,a i bj 1 j i 如 對於序列 a b c ...

港口 差分陣列)

傳送門 思路 因為是區間加減,所以考慮差分陣列,題意變為 要求差分陣列d 2 d 3 d n d 2 d 3 dots d n d 2 d 3 d n 全為0.每次區間加或減會使差分陣列乙個加1,乙個減1,因為要用最小次數,所以每次操作最好產生有效貢獻,可知當為正數或負數的差分陣列變為0後,剩下我們...

差分陣列詳解

學習部落格 題目 來先看一道裸題,有n個數。m個操作,每一次操作,將x y區間的所有數增加z 最後有q個詢問,每一次詢問求出x y的區間和。思路 很明顯,直接用字首和無法快速滿足這個操作,所以我們就用到了差分陣列。設a陣列表示原始的陣列 設d i a i a i 1 1設f i f i 1 d i ...