洛谷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:(稍微有点乱,将就下吧)
1 #include<cstdio> 2 #include<cstring> 3 #include<cstdlib> 4 #include<cmath> 5 #include<iostream> 6 #include<iomanip> 7 #include<algorithm> 8 #define Fi(i,a,b) for(int i=a;i<=b;i++) 9 using namespace std; 10 const int N=5e3+7; 11 int ans,n,m,a[N][N],maxx; 12 int main() 13 { 14 ios::sync_with_stdio(false); 15 cin>>n>>m;int x,y,v; 16 Fi(i,1,n){cin>>x>>y>>v;a[x][y]=v;maxx=max(maxx,max(x,y));} 17 Fi(i,1,maxx)a[i][0]=a[i][0]+a[i-1][0],a[0][i]=a[0][i]+a[0][i-1]; 18 Fi(i,1,maxx)Fi(j,1,maxx) 19 {a[i][j]=a[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];} 20 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])); 21 Fi(i,m,maxx)Fi(j,m,maxx) 22 {ans=max(ans,a[i][j]-a[i-m][j]-a[i][j-m]+a[i-m][j-m]);} 23 cout<<ans<<"\n";return 0; 24 }
相关推荐
BasicPython 2013-12-24
啊兵 2018-07-03
HongKongPython 2019-03-15
向往天空的鱼 2017-06-08
liguojia 2017-06-22
中国科普博览 2018-02-22
扑克投资家 2018-01-30
叭叭呜 2018-01-30
扑克投资家 2018-01-28
科技蟹 2018-01-15
地图地理与区域 2018-01-14
地图地理与区域 2018-01-14
深圳湾 2018-01-13
风水即环境 2018-01-08
BeerTalk酒说 2017-12-31
ArtIssue 2017-12-29
黑白漫文化 2017-12-17
扑克投资家 2017-12-16
文献自助餐 2017-12-13