洛谷P2280 [HNOI2003] 激光炸弹 [前缀和]
题目描述
输入输出格式
输入格式:
输入文件名为input.txt
输入文件的第一行为正整数n和正整数R,接下来的n行每行有3个正整数,分别表示 xi,yi ,vi 。
输出格式:
输出文件名为output.txt
输出文件仅有一个正整数,表示一颗炸弹最多能炸掉地图上总价值为多少的目标(结果不会超过32767)。
输入输出样例
输入样例#1: 复制
2 1
0 0 1
1 1 1
输出样例#1: 复制
1
分析:也没什么好分析的,基本的前缀和,用下容斥原理,注意一下边界就可以了。
Code:(稍微有点乱,将就下吧)
#include<cstdio> #include<cstring> #include<cstdlib> #include<cmath> #include<iostream> #include<iomanip> #include<algorithm> #define Fi(i,a,b) for(int i=a;i<=b;i++) using namespace std; const int N=5e3+7; int ans,n,m,a[N][N],maxx; int main() { ios::sync_with_stdio(false); cin>>n>>m;int x,y,v; Fi(i,1,n){cin>>x>>y>>v;a[x][y]=v;maxx=max(maxx,max(x,y));} Fi(i,1,maxx)a[i][0]=a[i][0]+a[i-1][0],a[0][i]=a[0][i]+a[0][i-1]; Fi(i,1,maxx)Fi(j,1,maxx) {a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];} Fi(i,m,maxx)ans=max(ans,max(a[i][m-1]-a[i-m][m-1],a[m-1][i]-a[m-1][i-m])); Fi(i,m,maxx)Fi(j,m,maxx) {ans=max(ans,a[i][j]-a[i-m][j]-a[i][j-m]+a[i-m][j-m]);} cout<<ans<<"\n";return 0; }
蒟蒻写博客不易,如果有误还请大佬们提出
如需转载,请署名作者并附上原文链接,蒟蒻非常感激
名称:HolseLee
博客地址:www.cnblogs.com/cytus
个人邮箱:1073133650@qq.com
如需转载,请署名作者并附上原文链接,蒟蒻非常感激
名称:HolseLee
博客地址:www.cnblogs.com/cytus
个人邮箱:1073133650@qq.com
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步