這個題,我想的是用一些神奇的線段樹做法,根本沒想匹配
但是好像很顯然啊
(**寫的也太長了...)
給的l,r範圍很大,其實有用的只有n個時刻
那可以先離散一下
然後把 各個線段按照權值從大到小排序,乙個乙個選
有矛盾一定選擇權值大的,所以前面選定的集合一定是最優的
然後自己**裡說的check函式,看有沒有空餘的時刻,有就加上,沒有就跳過
#include #include #include #include #include #define ll long long23333#define mem(a,b) memset(a,b,sizeof(a))
using namespace std;
const int n=7006;
struct son
ji[n];
bool ok_l(son a,son b)
int n;
int pos[n];// 存離散後的點
int match[n];// 第i個活躍點選的任務
bool fin(int x,int t)
int tt=match[t];
if(ji[x].r>ji[tt].r)// 貪心
return fin(x,t+1);
else
if(fin(tt,t+1))
return 0;
}int main(){
//freopen("in.in","r",stdin);
mem(match,-1);
scanf("%d",&n);
for(int i=1;i<=n;++i)
scanf("%d%d%d",&ji[i].l,&ji[i].r,&ji[i].v);
sort(ji+1,ji+1+n,ok_l);
pos[0]=0;
for(int i=1;i<=n;++i)
pos[i]=max(pos[i-1]+1,ji[i].l);
ji[1].s=1;
for(int i=2;i<=n;++i)
{ji[i].s=ji[i-1].s;
while( pos[ji[i].s]
BZOJ 2048 2009國家集訓隊 書堆
第一行正整數 n m ou tput 一行 有換行符 l 表示水平延伸最遠的整數距離 不大於答案的最大整數 sa mple inpu t 樣例 1 i nput 1100 o utpu t 49 2 in put 2 100 ou tput 74 s ampl eout put n 10 18 資料...
字符集 國家字符集及NLS LANG執行庫
unicode編碼方案 三個實施標準 utf 8,usc 2,utf 16 oracle資料庫字符集 字符集character set 國家字符集national character set 字符集主要作用 用於儲存varchar2,char,clob,long型別資料 標示表名,列名,以及pl s...
BZOJ2144 國家集訓隊 跳跳棋
跳跳棋是在一條數軸上進行的。棋子只能擺在整點上。每個點不能擺超過乙個棋子。我們用跳跳棋來做乙個簡單的遊戲 棋盤上有3顆棋子,分別在a,b,c這三個位置。我們要通過最少的跳動把他們的位置移動成x,y,z。棋子是沒有區別的 跳動的規則很簡單,任意選一顆棋子,對一顆中軸棋子跳動。跳動後兩顆棋子距離不變。一...