BZOJ1218: [HNOI2003]激光炸弹
来源:互联网 发布:mysql null的逻辑 编辑:程序博客网 时间:2024/05/22 14:32
Description
一种新型的激光炸弹,可以摧毁一个边长为R的正方形内的所有的目标。现在地图上有n(N<=10000)个目标,用整数Xi,Yi(其值在[0,5000])表示目标在地图上的位置,每个目标都有一个价值。激光炸弹的投放是通过卫星定位的,但其有一个缺点,就是其爆破范围,即那个边长为R的正方形的边必须和x,y轴平行。若目标位于爆破正方形的边上,该目标将不会被摧毁。 0
Input
输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示
Output
输出文件仅有一个正整数,表示一颗炸弹最多能炸掉地图上总价值为多少的目标(结果不会超过32767)。
Sample Input
2 1
0 0 1
1 1 1
Sample Output
1
题目传送门
我的dp弱的要死,所以我在大视野上从来不做dp题
但是不能这样下去啊,学编程有哪个不会dp的啊!!
在学算法的同时,要关注一下这个东西
进入正题
这个dp…好吧我都会打,但没想到这么暴力!!
这和暴力几乎没区别了啊…
看代码吧
代码如下:
#include<cstdio>#include<cstring>#include<algorithm>#include<cstdlib>using namespace std;int f[5100][5100];int a[11000],b[11000],c[11000];int main(){ memset(f,0,sizeof(f)); int n,m,ans=0; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) { scanf("%d%d%d",&a[i],&b[i],&c[i]); f[a[i]+1][b[i]+1]+=c[i]; } for(int i=1;i<=5001;i++) for(int j=1;j<=5001;j++) f[i][j]+=f[i-1][j]; for(int i=1;i<=5001;i++) for(int j=0;j<=5001;j++) f[i][j]+=f[i][j-1]; for(int i=m;i<=5001;i++) for(int j=m;j<=5001;j++) ans=max(ans,f[i][j]+f[i-m][j-m]-f[i-m][j]-f[i][j-m]); printf("%d\n",ans); return 0;}
by_lmy
阅读全文
0 0
- [BZOJ1218] [HNOI2003]激光炸弹
- bzoj1218【HNOI2003】激光炸弹
- BZOJ1218: [HNOI2003]激光炸弹
- 【bzoj1218】 [HNOI2003]激光炸弹
- bzoj1218: [HNOI2003]激光炸弹
- bzoj1218: [HNOI2003]激光炸弹
- BZOJ1218: [HNOI2003]激光炸弹
- bzoj1218: [HNOI2003]激光炸弹
- [BZOJ1218][HNOI2003]激光炸弹(扫描线+线段树)
- BZOJ1218 激光炸弹
- 【Bzoj1218】激光炸弹
- 1218: [HNOI2003]激光炸弹
- [HNOI2003]激光炸弹
- [HNOI2003]激光炸弹
- 1218: [HNOI2003]激光炸弹
- 1218: [HNOI2003]激光炸弹
- bzoj1218 [HNOI2003]激光炸弹(二维前缀和+暴力/线段树+离散化+扫描线)
- 【BZOJ 1218】 [HNOI2003]激光炸弹
- Java-排序算法之插入排序算法
- 流程控制
- 快速幂 取模
- poj 2429 GCD & LCM Inverse
- Hibernate (分页,一对多,多对多,多对一)案例
- BZOJ1218: [HNOI2003]激光炸弹
- 栈和队列的应用:迷宫问题
- AndroidStudio导入项目在 Building gradle project info 一直卡住
- 数组
- HttpSession详解
- JavaScript三种弹窗
- Java线程面试常见题
- U3D的Shader数据的来源
- Hibernate 多对多 例子