当前位置: 首页 > news >繁体>T7315 yyy矩阵折叠(长)

T7315 yyy矩阵折叠(长)

题目背景

全场基本暴零

题目描述

输入输出格式

输入格式:

 

如图

 

输出格式:

 

如图

 

输入输出样例

输入样例#1:
2 2
1 -2
3 -4
输出样例#1:
4
输入样例#2:
2 5
1 -2 -3 4 -5
6 -7 -8 9 -10
输出样例#2:
20

说明

如图

 

DFS行,状压DP列

 

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 #include<queue>
 7 #include<stack>
 8 #include<cstdlib>
 9 using namespace std;
10 const int maxn=0x7fffff;
11 inline void read(int &n)
12 {
13     char c='+';int x=0;bool flag=0;
14     while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=1;}
15     while(c>='0'&&c<='9')
16     x=(x<<1)+(x<<3)+c-48,c=getchar();
17     flag==1?n=-x:n=x;
18 }
19 int n,m; 
20 int a[99][501];
21 int ans=-maxn;
22 int cur[501];
23 int pos2(int x)
24 {
25     return (1<<x);
26 }
27 int dp(int zt)
28 {
29     memset(cur,0,sizeof(cur));
30     int ou,ji;
31     for(int i=1;i<=n;i++)
32         if(zt&pos2(i))
33             for(int j=1;j<=m;j++)
34                 cur[j]+=a[i][j];
35     bool flag=1;
36     for(int i=1;i<=m;i++)
37         if(cur[i]>0)
38         {
39             flag=0;
40             break;
41         }
42     if(flag)
43         return -maxn;
44     ou=0;ji=0;
45     for(int i=1;i<=m;i++)
46     {
47         if(i&1)
48         {
49             int x=cur[i]+ou;
50             ji=max(ji,x);
51         }
52         else
53         {
54             int x=cur[i]+ji;
55             ou=max(ou,x);
56         }
57     }
58     return max(ou,ji);
59 }
60 void dfs(int pos,int last,int zt)
61 {
62     if(pos==n+1)
63     {
64         ans=max(ans,dp(zt));
65         return ;
66     }
67 
68         if(last==-1||(pos-last)&1)
69             dfs(pos+1,pos,zt|pos2(pos));
70     dfs(pos+1,last,zt);
71 }
72 int main()
73 {
74     read(n);read(m);
75     for(int i=1;i<=n;i++)
76         for(int j=1;j<=m;j++)
77         {
78             read(a[i][j]);
79             ans=max(ans,a[i][j]);
80         }
81     if(ans<0)    
82     cout<<ans;
83     else
84     {
85         dfs(1,-1,0);
86         printf("%d",ans);
87     }
88     return 0;
89 }

 

转载于:https://www.cnblogs.com/zwfymqz/p/7185970.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:https://dhexx.cn/news/show-18452.html

如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网进行投诉反馈,一经查实,立即删除!


相关文章:

  • 常用的断言总结
  • pathway一些网站
  • c++ primer plus(第6版)中文版 第十二章编程练习答案
  • 一句python,一句R︱python中的字符串操作、中文乱码、NaN情况
  • LoadRunner函数的介绍
  • 29-3 union的使用
  • 使用VBA,优化处理Excel表格
  • python日记----2017.7.20
  • F - Good Words
  • git删除文件夹
  • PHP连数据库生成数据字典
  • MAVEN项目标准目录结构
  • 数据结构(C++语言版)第三版pdf
  • hdu1233 还是畅通工程 基础最小生成树
  • 机械物理学
  • Python 过滤a文件中每一行内容,保存到b文件中
  • 部署中遇到的问题(四)
  • C#自定义ip控件
  • SecureCRT中解决乱码的问题
  • 剑指offer面试题:输入某二叉树的前序遍历和中序遍历,输出后序遍历
  • Angular2-路由重定向的办法
  • Okhttp3 使用和原理(DEMO)
  • phpstorm激活码生成器地址
  • [转] linux操作系统下c语言编程入门--基础知识
  • [c++] 关于STL中list类的Remove方法的编译错误C2678
  • Vijos1982 NOIP2015Day2T2 子串 substring 动态规划
  • 打造颠覆你想象中的高性能,轻量级的webform框架-----如何替换webform的垃圾控件(第一天)...
  • 博客主题终于搞定
  • 数组字符串
  • Axis2发布webservices
  • LA 3268 号码簿分组(最大流+二分)
  • 安装Oracle11gR2先决条件检查失败的详细解决处理过程
  • 前端学习之--CSS
  • bzoj1835基站选址(dp+线段树)
  • div标签清除float浮动样式方法
  • Spring整合JavaMail
  • 【redis】spring boot利用redis的Keyspace Notifications实现消息通知
  • 《JAVA与模式》之解释器模式
  • 《零基础入门学习Python》学习过程笔记【40类和对象的相关内置函数】
  • Fiddler工具使用介绍三
  • ExtJS TreeGrid的使用方法
  • shell命令技巧——文本去重并保持原有顺序
  • 常用tab选项卡代码
  • 数据结构与算法系列----字典树
  • OC学习3——C语言特性之指针
  • Spring中xml文件配置也可以配置容器list、set、map
  • Cockroachdb 一、系统环境
  • 压缩解压打包工具基础
  • 什么是值栈
  • 内置过滤器