codevs3235 戰爭 矩形切割

2021-07-26 15:33:55 字數 1709 閱讀 8367

2023年,人類與外星人之間的戰爭已趨於白熱化。就在這時,人類發明出一種超級**,這種**能夠同時對相鄰的多個目標進行攻擊。凡是防禦力小於或等於這種**攻擊力的外星人遭到它的攻擊,就會被消滅。然而,擁有超級**是遠遠不夠的,人們還需要乙個戰地統計系統時刻反饋外星人部隊的資訊。這個艱鉅的任務落在你的身上。請你盡快設計出這樣一套系統。

這套系統需要具備能夠處理如下2類資訊的能力:

1.外星人向[x1,x2]內的每個位置增援一支防禦力為v的部隊。

2.人類使用超級**對[x1,x2]內的所有位置進行一次攻擊力為v的打擊。系統需要返回在這次攻擊中被消滅的外星人個數。

注:防禦力為i的外星人部隊由i個外星人組成,其中第j個外星人的防禦力為j。

從檔案war.in第一行讀入n,m。其中n表示有n個位置,m表示有m條資訊。

以下有m行,每行有4個整數k,x1,x2,v用來描述一條資訊 。k表示這條資訊屬於第k類。x1,x2,v為相應資訊的引數。k=1 or 2。

注:你可以認為最初的所有位置都沒有外星人存在。

規模:0< n <= 1000; 0 < x1 <= x2 <= n; 0 < v <= 1000; 0 < m <= 2000

結果輸出到檔案war.out。按順序輸出需要返回的資訊。

3 5

1 1 3 4

2 1 2 3

1 1 2 2

1 2 3 1

2 2 3 56 9

題目描述有點不清楚,其實是防禦力取最大的那個,因此可以轉為矩形切割做

將每乙個命令看做帶權線段,那麼就可以把帶權線段展開成二維

(l,r,v)->(l-1,0,r,v)

因此就可以矩形切割了

至於能不能線段樹,應該可以吧?懶得寫了

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

inline const int get_int()

while(x>='0'&&x<='9')

return num*bj;

}struct square

square(double lx,double ly,double rx,double ry):x1(lx),y1(ly),x2(rx),y2(ry) {}

} ;struct cut_square

bool if_intersect(square a,square b)

void add(double x1,double y1,double x2,double y2)

void del(int

index)

double xway_cut(int

index,double x1,double y1,double x2,double y2)

double yway_cut(int

index,double x1,double y1,double x2,double y2)

};cut_square s;

int n,m;

int main()

printf("%d\n",sum);}}

return

0;}

Jzoj P3896 戰爭遊戲

n nn個點,m mm條無向邊,保證任意兩點間都連通。問對於這n nn個點而言,分別作為任意兩點間所有路徑的必經點的次數有多少次。必經點,假如a ba b a b的所有路徑都存在經過點c cc,則稱c cc為必經點 n 5 104 m 1 05 n 5 10 4,m 10 5 n 5 10 4,m ...

JLOI2015 戰爭排程

記憶體限制 256 mib 時間限制 1000 ms 標準輸入輸出 題目型別 傳統 評測方式 文字比較 臉哥最近來到了乙個神奇的王國,王國裡的公民每個公民有兩個下屬或者沒有下屬,這種關係剛好組成乙個 n 層的完全二叉樹。公民 i 的下屬是 2i 和 2i 1 最下層的公民即葉子節點的公民是平民,平民...

JLOI2015 戰爭排程 war

一開始看這題,毫無頭緒 不過發現n十分的小,最多只有10,想一想暴搜加優化。先試著打了打暴搜,從上往下列舉狀態,然後搜尋到子節點的時候,再統計答案,每個父節點的答案是兩個子節點答案的和,dfs x,y,z 表示當前搜到的點二進位制狀態為x,從根節點到底層打仗的狀態為y,然後此時要打仗的人有z個。然後...