起點到終點經過盡可能多的點

2021-09-05 16:45:24 字數 983 閱讀 7658

#includeusing namespace std;

typedef long long ll;

const int maxn=1e5+30;

struct nodea[maxn],b[maxn];

int li[maxn],imin[maxn],cnt;

bool cmp1(node i,node j)

void update(int pos,int num)

//保證了x0不比x1大

int tot=0;

cnt=0;

for(int i=0;i>a[i].x>>a[i].y;

if(a[i].x<=maxx&&a[i].x>=minx

&&a[i].y<=maxy&&a[i].y>=miny)

b[++tot]=a[i],li[++cnt]=b[tot].y;

}//如果輸入的點合法就壓入b

//且把b陣列的y座標再記錄

sort(li+1,li+1+cnt);

cnt=unique(li+1,li+1+cnt)-li-1;

//對y座標排序去重

//cnt為不同的y值的數量-1

for(int i=1;i<=tot;i++)//每點y記為在所有點由下到上排第幾

if(x1>=x0&&y1>=y0)//y1在上就x公升y公升

sort(b+1,b+1+tot,cmp1);

else//如查y1在下面就x降序,y公升序

sort(b+1,b+1+tot,cmp2);

int ans=0;

//最後掃一次自更新ans即可

for(int i=1;i<=tot;i++)

cout

}sample input

3 0 0 6 6

5 4

2 6

3 1sample output

2

選擇盡可能多的不相交區間

題目 有n個區間,ai,bi 統計不相交區間最多有多少個?貪心策略 將這n個區間按bi由小到大排序,然後從前向後遍歷,每當遇到不相交的區間就加入目標集合,遍歷完成後就找到了最多的不相交區間。正確性證明 參見 以下是hduoj2037的源 include include include define ...

選擇盡可能多的不相交區間

題目 有n個區間,ai,bi 統計不相交區間最多有多少個?貪心策略 將這n個區間按bi由小到大排序,然後從前向後遍歷,每當遇到不相交的區間就加入目標集合,遍歷完成後就找到了最多的不相交區間。正確性證明 參見 以下是hduoj2037的源 include include include define ...

static和const關鍵字盡可能多的作用

static關鍵字至少有下列n個作用 1 函式體內static變數的作用範圍為該函式體,不同於auto變數,該變數的記憶體只被分配一次,因此其值在下次呼叫時仍維持上次的值 2 在模組內的static全域性變數可以被模組內所用函式訪問,但不能被模組外其它函式訪問 3 在模組內的static函式只可被這...