HDU 4708 Rotation Lock Puzzle && 2013 ACM/ICPC Asia Regional Online —— Warmup
来源:互联网 发布:最成功的发明 知乎 编辑:程序博客网 时间:2024/05/22 19:10
九野的博客,转载请注明出处:http://blog.csdn.net/acmmmm/article/details/11391275
题意:该矩阵中,可以顺时针或逆时针旋转每一圈,问旋转至少几次可以使主对角线和副对角线和最大
下面代码先计算每一圈的和最大,最后加上中间的点
题目保证矩阵边长为奇数
做起来有点繁琐,下面k表示第k圈,最中间是第0圈,只要for那一圈的第一排数字即可。
#include <iostream>#include <string>#include <cstring>#include <algorithm>#include <cstdio>#include <cctype>#include <queue>#include <stdlib.h>#include <cstdlib>#include <set>#include <math.h>#include <vector>#define inf 107374182#define N 105#define im -1000000#define ll intusing namespace std;inline ll Max(ll a,ll b){return a>b?a:b;}inline ll Min(ll a,ll b){return a<b?a:b;}int map[N][N],n;int sum(int k,int h,int l){ k=(n/2)+1-k; return map[k+h][k+l];}int sum1(int k,int h,int l){ int len=k*2; k=(n/2)+1-k; int x=h,y=l; if(x>len){y+=(x-len);x=len;} if(x<0){y-=0-x;x=0;} if(y>len){x+=(y-len);y=len;} if(y<0){x-=0-y;y=0;} return map[k+x][k+y];}int GO(int x,int y,int k){ if(x==0)return Min(y,k-y); return Min(x,k-x);}int abs(int k,int i){ if(i>k)return i-2*(i-k); return i+2*(k-i); }int main(){ ll i,j,k,go; while(scanf("%d",&n),n) { for(i=1;i<=n;i++) for(j=1;j<=n;j++) scanf("%d",&map[i][j]); int step=0,ans=0; int zhongdian=(n/2)+1; for(k=1;k<=(n>>1);k++) { int len=k*2,maxx=-1,temp; go=10000; for(i=0;i<k*2+1;i++) { temp=sum(k,0,i)+sum(k,len,abs(k,i)); temp+= sum1(k,0,i+len)+sum1(k,len,abs(k,i)-len); if(temp>maxx) { maxx=temp; go=GO(0,i,len); } else if(temp==maxx) if(go>GO(0,i,len)) go=GO(0,i,len); } step+=go; ans+=maxx; } printf("%d %d\n",ans+map[zhongdian][zhongdian],step); } return 0;}/*59 3 2 5 97 4 7 5 46 9 3 9 35 2 8 7 29 9 4 1 9*/
- HDU 4708 Rotation Lock Puzzle && 2013 ACM/ICPC Asia Regional Online —— Warmup
- 2013 ACM/ICPC Asia Regional Online —— Warmup 1002
- 2013 ACM/ICPC Asia Regional Online —— Warmup HDU4707
- 2013 ACM/ICPC Asia Regional Online — Warmup 个人总结
- HDU 4715 Difference Between Primes && 2013 ACM/ICPC Asia Regional Online —— Warmup
- HDU 4710 Balls Rearrangement && 2013 ACM/ICPC Asia Regional Online —— Warmup
- HDU 4707 Pet && 2013 ACM/ICPC Asia Regional Online —— Warmup
- HDU 4706 Children's Day && 2013 ACM/ICPC Asia Regional Online —— Warmup
- hdu 2013 ACM/ICPC Asia Regional Online —— Warmup解题报告
- HDU 4714 Tree2cycle 求树的分叉数 && 2013 ACM/ICPC Asia Regional Online —— Warmup
- hdu4707 Pet 2013 ACM/ICPC Asia Regional Online —— Warmup
- 2013 ACM/ICPC Asia Regional Online —— Warmup简单题题解
- 2012 ACM/ICPC Asia Regional Online Warmup-1003
- 2012 ACM/ICPC Asia Regional Online Warmup-1004
- 2012 ACM/ICPC Asia Regional Online Warmup-1006
- 2012 ACM/ICPC Asia Regional Online Warmup-1007
- 2013 ACM/ICPC Asia Regional Online —— Warmup2
- 2013 ACM/ICPC Asia Regional Online — Warmup2 个人总结
- Oracle 硬解析与软解析
- Ranorex用户指南
- VC(MFC)在工具栏中使用PNG图片
- How to Install and Use JRebel with WebLogic and Eclipse
- 安装jdk的方式
- HDU 4708 Rotation Lock Puzzle && 2013 ACM/ICPC Asia Regional Online —— Warmup
- Android核心分析 Android应用框架之Activity
- Sicily 1020. Big Integer
- 移动数据文件、系统表空间文件、临时表空间文件
- php导入excel数据到mysql
- HDU 4715 Difference Between Primes && 2013 ACM/ICPC Asia Regional Online —— Warmup
- MFC工具栏ToolBar按钮添加下拉菜单
- Perl例程24例(包含很多运用示例-整理版)
- 查看归档文件路径