博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HLG 1408 漩涡
阅读量:6715 次
发布时间:2019-06-25

本文共 2005 字,大约阅读时间需要 6 分钟。

题意: 给你一个矩形范围,让你在这个矩形内找一个漩涡状的区域,使得和最大。

分析: 暴力枚举所有漩涡,有个注意的就是: 由于漩涡套漩涡,所以每个漩涡的值都等于该矩形区域的数字和减去刚好嵌在

    该漩涡内的漩涡和左上角一个小缺口,画图很容易看出。

View Code
#include
#include
#define min(a,b)(a)<(b)?(a):(b)#define max(a,b)(a)>(b)?(a):(b)int c[500][500];int c1[502][502];int c2[502][502];int n,m;int h;int lowbit(int x){ return (x)&(-x);}void add(int x,int y,int w){ while(x<=n) { int ty=y; while(ty<=m) { c[x][ty]+=w; ty+=lowbit(ty); } x+=lowbit(x); }}int sum(int x,int y){ int s=0; while(x>0) { int ty=y; while(ty>0) { s+=c[x][ty]; ty-=lowbit(ty); } x-=lowbit(x); } return s;}int s[502][502];int g[502][502];int main(){ int res,i,j,t,x,k; while(scanf("%d%d",&n,&m)!=EOF) { memset(c,0,sizeof(c)); t=min(n,m); for(i=1;i<=n;i++) for(j=1;j<=m;j++) { scanf("%d",&x); g[i][j]=x; add(i,j,x); } for(i=1;i<=n;i++) for(j=1;j<=m;j++) c1[i][j]=g[i][j]; for(i=1;i<=n;i++) for(j=1;j<=m;j++) s[i][j]=sum(i,j); res=-99999999; for(k=3;k<=t;k+=2) { for(i=k;i<=n;i++) for(j=k;j<=m;j++) { c2[i][j]=s[i][j]; if(i>k) c2[i][j]-=s[i-k][j]; if(j>k) c2[i][j]-=s[i][j-k]; if(i>k&&j>k) c2[i][j]+=s[i-k][j-k]; c2[i][j]=c2[i][j]-c1[i-1][j-1]-g[i-k+2][j-k+1]; if(c2[i][j]>res) res=c2[i][j]; } for(i=1;i<=n;i++) for(j=1;j<=m;j++) c1[i][j]=c2[i][j]; } printf("%d\n",res); } return 0;}

 

转载于:https://www.cnblogs.com/dream-wind/archive/2012/05/24/2517013.html

你可能感兴趣的文章
.NET Core 2.0及.NET Standard 2.0
查看>>
Makefile生成器,使用C++和Boost实现
查看>>
ITOO之底层关系
查看>>
算法笔记_141:无向图的欧拉回路判断问题(Java)
查看>>
XX年年终总结---重新飞跃
查看>>
Spark学习笔记之-Spark远程调试
查看>>
js---06函数传参数
查看>>
WCF系列教程之WCF服务配置
查看>>
Makefile 11——支持头文件目录指定
查看>>
解决JsonFormat日期少一天问题
查看>>
POJ 1201 Intervals
查看>>
linux下串口调试工具
查看>>
[转]如何在 .Net Framework 4.0 项目上使用 OData?
查看>>
UVa 12279 - Emoogle Balance
查看>>
头文件algorithm中的常用函数
查看>>
一套解决方案,多个项目
查看>>
Qt3D Shader
查看>>
Android requires compiler compliance level 5.0 or 6.0. Found &#39;1.4&#39; instead的解决的方法
查看>>
dede文章插入分页符不起作用,编辑器中出现分页符,导致文章显示不全
查看>>
【POJ3377】Ferry Lanes 最短路
查看>>