Bzoj2244 SDOI2011 攔截飛彈

2021-08-18 05:02:45 字數 2054 閱讀 7724

傳送門

每個飛彈有時間,高度,速度

求時間遞增,高度,速度不降的最長的序列

然後還要求最長序列的方案以及每個飛彈在最長序列中的方案

這個就是偏序問題辣,正反兩遍求出每個飛彈為結尾開頭的序列最長長度

判斷是否在最長序列就二者相加判斷

然後記錄下方案,用do

uble

d ou

bl

e,lo

nglo

ngl on

glon

g會炸

然後我選擇cd

q cdq

# include 

# define rg register

# define il inline

# define fill(a, b) memset(a, b, sizeof(a))

using

namespace

std;

const

int _(5e4 + 5);

typedef

long

long ll;

il int input()

int n, g[2][_], c1[_], o1[_], len1, o2[_], len2;

double f[2][_], c2[_];

struct missile

il int

operator

<(rg missile b) const

} q[_], p[_];

il void cls(rg int x)

il void add(rg int x, rg int l, rg double p)

il void query(rg int x, rg int &l, rg double &p)

il void cdq(rg int l, rg int r, rg int op)

for(rg int i = l; i <= mid; ++i) cls(q[i].v);

cdq(mid + 1, r, op);

for(rg int i = l, be = l, en = mid + 1; i <= r; ++i)

if(en > r || (be <= mid && q[be].h <= q[en].h)) p[i] = q[be++];

else p[i] = q[en++];

for(rg int i = l; i <= r; ++i) q[i] = p[i];

}int main(rg int argc, rg char* argv);

o1[++len1] = q[i].h, o2[++len2] = q[i].v;

}sort(o1 + 1, o1 + len1 + 1), sort(o2 + 1, o2 + len2 + 1);

len1 = unique(o1 + 1, o1 + len1 + 1) - o1 - 1;

len2 = unique(o2 + 1, o2 + len2 + 1) - o2 - 1;

for(rg int i = 1; i <= n; ++i)

sort(q + 1, q + n + 1), cdq(1, n, 0);

for(rg int i = 1; i <= n; ++i) q[i].reverse();

sort(q + 1, q + n + 1), cdq(1, n, 1);

reverse(g[1] + 1, g[1] + n + 1), reverse(f[1] + 1, f[1] + n + 1);

rg int mx = 0; rg double sum = 0;

for(rg int i = 1; i <= n; ++i) mx = max(mx, g[0][i]);

printf("%d\n", mx);

for(rg int i = 1; i <= n; ++i) if(g[0][i] == mx) sum += f[0][i];

for(rg int i = 1; i <= n; ++i)

return

0;}

SDOI2011 BZOJ2244 攔截飛彈

description 某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度 並且能夠攔截任意速度的飛彈,但是以後每一發炮彈都不能高於前一發的高度,其攔截的飛彈的飛行速度也不能大於前一發。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還...

bzoj2244 SDOI2011 攔截飛彈

cdq。還真是。一開始自己寫,設f i 為以i結尾的最優方案,fn i 為以i結尾的最優方案數,然後cdq完了第一問就出來了,還順便把總最優方案數算了,and then?mengbier 然後各路 啊,乙個下午 一晚上就交代了 怎麼做呢?我們再cdq出另乙個f和fn表示以i開頭的最優方案和方案數 然...

bzoj 2244 SDOI2011 攔截飛彈

某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度 並且能夠攔截任意速度的飛彈,但是以後每一發炮彈都不能高於前一發的高度,其攔截的飛彈的飛行速度也不能大於前一發。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套...