CodeForces - 1216F
题意
$n$ 个房间拍成一排,标号为 $1\sim n$ ,要联网的花费为 $i$ ,一些房间可以装 $Wi-Fi$ ,使得 $[i-k,i+k]$ 的房间都有 $Wi-Fi$ ,问最小花费。
题解
$dp[i]$ 表示前 $i$ 个房间通网的最小花费,初始化为 $\large dp[i]=\frac {(n+1)*n}2$ ,
区间最小值使用树状数组维护
代码
1 | char s[N]; |
1 | ll cnt[600],dp[11][600]; |
1 | struct da{ |
UVA - 10535 - Shooter
题意
给 $n$ 个线段,给一个点,从这个点引一条射线,问最多可以与几个线段相交
题解
法一:
暴力枚举方向( $2*n$ 个端点)
法二:
对所有端点极角排序,这样问题就转化成了区间最大覆盖问题了,注意因为极角排序会将点按照 $[-\pi,\pi]$ 排序,我们需要特殊考虑跨越 $-\pi,\pi$ 的区间,还有当两点的极角相同时,要将区间的左端点放在前面
代码
1 | struct Point{ |
题目
题意
题解
代码
1 |