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個。然後...