
洛谷P7472 [NOI Online 2021 入门组] 吃豆人(民间数据)
发布日期:2021-05-07 22:47:30
浏览次数:14
分类:精选文章
本文共 2131 字,大约阅读时间需要 7 分钟。
题目
解
挺恶心的题。
预处理某些边,便于处理某些环的值。注意去除交点重复计算所多出来的值。代码
注释也懒得打了…
#include#include #include using namespace std;int n, a[1011][1011], f1[1011][1011], f2[1011][1011], ans;int q(int i){ return f2[1][i] + f2[n-i+1][n]+ f1[n][n-i+1] + f1[n-i+1][n] - a[1][i] - a[i][1] - a[n-i+1][n] - a[n][n-i+1];}int cl(int i, int j){ int l = (i+j)/2; int anss = q(i) + q(j) - a[l][l-i+1] - a[n-l+i][n+1-l] - a[l-i+1][l] - a[n+1-l][n-l+i]; return anss; } void work1(){ ans = f1[n][n] + f2[1][n] - a[n/2+1][n/2+1]; //两条对角线 for(int i = 2; i < n; ++i){ //左上到右下 + 其他 if(i % 2 == 0) ans = max(ans, f1[n][n] + q(i)); else ans = max(ans, f1[n][n] + q(i) - a[(i+1)>>1][(i+1)>>1] - a[n-(i>>1)][n-(i>>1)]); } for(int i = 2; i < n; ++i){ //左下到右上 + 其他 if(i % 2 == 0) ans = max(ans, f2[1][n] + q(i)); else ans = max(ans, f2[1][n] + q(i) - a[n-(i+n)/2+1][(i+n)>>1] - a[(i+n)>>1][n-(i+n)/2+1]); } }void work2(){ ans = f1[n][n] + f2[1][n]; //两条对角线 for(int i = 2; i < n; ++i){ //左上到右下 + 其他 if(i % 2 == 0) ans = max(ans, f1[n][n] + q(i)); else ans = max(ans, f1[n][n] + q(i) - a[(i+1)>>1][(i+1)>>1] - a[n-(i>>1)][n-(i>>1)]); } for(int i = 2; i < n; ++i){ //左下到右上 + 其他 if(i % 2 == 1) ans = max(ans, f2[1][n] + q(i)); else ans = max(ans, f2[1][n] + q(i) - a[n-(n+i)/2+1][(n+i)>>1] - a[(n+i)>>1][n-(n+i)/2+1]); } }int main(){ scanf("%d", &n); for(int i = 1; i <= n; ++i) for(int j = 1; j <= n; ++j){ scanf("%d", &a[i][j]); f1[i][j] = f1[i-1][j-1] + a[i][j]; } for(int i = n; i >= 1; --i) for(int j = 1; j <= n; ++j) f2[i][j] = f2[i+1][j-1] + a[i][j]; if(n % 2 == 1) work1(); else work2(); for(int i = 2; i < n; ++i) for(int j = i; j < n; ++j){ if(i!=j){ //其他相互 if(i % 2 != j % 2) ans = max(ans, q(j) + q(i)); else ans = max(ans, cl(i,j)); } ans = max(q(i), ans); } printf("%d", ans);}
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月10日 09时19分16秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Java Swing JList:列表框组件
2021-05-07
jQuery中的动画
2021-05-07
狂神说MySQL01:初识MySQL
2021-05-07
1.2.3 项目、项目集、项目组合以及运营管理之间的关系
2021-05-07
光环和你一起迎接改版
2021-05-07
【△重点△】LeetCode - 4. 寻找两个正序数组的中位数——二分查找
2021-05-07
LeetCode - 5. 最长回文子串——字符串、动态规划
2021-05-07
全局锁和表锁 :给表加个字段怎么有这么多阻碍?
2021-05-07
事务到底是隔离的还是不隔离的?
2021-05-07
@Import注解---导入资源
2021-05-07
解决ubuntu在虚拟机(VMware)环境下不能联网的问题
2021-05-07
二分查找与插入排序的结合使用
2021-05-07
892 三维形体的表面积(分析)
2021-05-07
40. 组合总和 II(dfs、set去重)
2021-05-07
16 最接近的三数之和(排序、双指针)
2021-05-07
279 完全平方数(bfs)
2021-05-07
410 分割数组的最大值(二分查找、动态规划)
2021-05-07
875 爱吃香蕉的珂珂(二分查找)
2021-05-07
450 删除二叉搜索树中的节点(递归删除节点)
2021-05-07
桌面图标的自动排列图标
2021-05-07