描述
假設有n個人要上網,卻只有1臺電腦可以上網。上網的時間是從1 szw 至 t szw ,szw是sxc,zsx,wl自創的時間單位,至於 szw怎麼換算成s,min或h,沒有人清楚。依次給出每個人在某個時間段內上網的快樂程度c(必須這個人在整個時間段內都在上網,才能獲得快樂程度c,否則,快樂程度是0),請你得到使總的快樂程度達到最大的方案。
輸入第1行2個整數 n和t,含義如題目所述;
接下來有n個這樣的結構(每兩個相鄰的結構之間有一空行,且第1個結構和第一行間有一空行):
第1行乙個整數mi,表示第i個人的時間段的個數;
接下來有mi行,每行3個整數xj,yj,c,表示第i個人在[xj,yj]內上網的快樂程度為c,
因此有xj-yj-1=1,x1=1,ymi=t,xj<=yj。
輸出僅輸出一行,為總的最大的快樂程度。
輸入樣例 1
3 10輸出樣例 131 3 6
4 7 9
8 10 3
31 3 5
4 7 10
8 10 1
41 3 2
4 8 2
9 9 6
10 10 3
25提示【樣例說明】
在[1,3]內,安排1上網,快樂程度為6;
在[4,7]內,安排2上網,快樂程度為10;
在[8,8]內,不安排;
在[9,9]內,安排3上網,快樂程度為6;
在[10,10]內,安排3上網,快樂程度為3;
這是使總的快樂程度達到最大的方案,對應的值是25。
【資料範圍】
對於30%的資料,n<=4,所有的mi<=5,t<=20;
對於60%的資料,n<=100,所有的mi<=100,t<=2000;
對於100%的資料,n<=500,所有的mi<=500,t<=500000,所有的0以結束時間來dp即可 和揹包沒什麼兩樣
注意其中的乙個細節 因為這個wa了一次
#includeusingview codenamespace
std;
//input by bxd
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define repp(i,a,b) for(int i=(a);i>=(b);i--)
#define ri(n) scanf("%d",&(n))
#define rii(n,m) scanf("%d%d",&n,&m)
#define riii(n,m,k) scanf("%d%d%d",&n,&m,&k)
#define rs(s) scanf("%s",s);
#define ll long long
#define pb push_back
#define fi first
#define rep(i,n) for(int i=0;i
#define clr(a,v) memset(a,v,sizeof a)
/////////////////////////////////
//#define inf 0x3f3f3f3f
#define n 1000+50
struct
node
s[500000+5
];vector
tim[500000+5
];long
long dp[500000+5
];int
main()
}rep(i,
1,t)
}cout
<
return0;
}
NOIP模擬賽 拆網線
企鵝國的網咖們之間由網線互相連線,形成一棵樹的結構。現在由於冬天到了,供暖部門缺少燃料,於是他們決定去拆一些網線來做燃料。但是現在有 k 只企鵝要上網和別人聯機遊戲,所以他們需要把這 k 只企鵝安排到不同的機房 兩隻企鵝在同乙個機房會吵架 然後拆掉一些網線,但是需要保證每只企鵝至少還能通過留下來的網...
NOIP提高組模擬賽7
帶取模的運算,除以乙個數一定要乘逆元!不同位置的值對最終答案的貢獻是互不影響的,分開考慮每個值的貢獻 考慮對於位於 x,y 的值對 n,m 的貢獻,無論從哪個路徑走過去,一定是原數 a b 而對答案貢獻多少次即為 x,y n,m 不同的路徑數,這個顯然是個組合數,用l表示需要走幾步,r表示需要向右 ...
noip模擬賽7 足球比賽 樹
描述 在2009的中國城市足球比賽中,在2 n支隊中,有一些隊在開賽前宣布了退出比賽。比賽採取的是淘汰賽。比如有4支隊伍參加,那麼1隊和2隊比賽,3隊和4隊賽,然後1隊和2隊的勝者與3隊和4隊的勝者爭奪冠軍。但是由於某些隊伍退出,那麼如果某個原本存在的比賽只有乙個支隊,那麼這一支隊自動晉級,如果沒有...