傳送門
每個飛彈有時間,高度,速度
求時間遞增,高度,速度不降的最長的序列
然後還要求最長序列的方案以及每個飛彈在最長序列中的方案
這個就是偏序問題辣,正反兩遍求出每個飛彈為結尾開頭的序列最長長度
判斷是否在最長序列就二者相加判斷
然後記錄下方案,用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 攔截飛彈
某國為了防禦敵國的飛彈襲擊,發展出一種飛彈攔截系統。但是這種飛彈攔截系統有乙個缺陷 雖然它的第一發炮彈能夠到達任意的高度 並且能夠攔截任意速度的飛彈,但是以後每一發炮彈都不能高於前一發的高度,其攔截的飛彈的飛行速度也不能大於前一發。某天,雷達捕捉到敵國的飛彈來襲。由於該系統還在試用階段,所以只有一套...