DescriptionDescriptionDescription

有nnn个点,mmm条边,点值是从点1通过边亦或和,求拟定一种加入点的顺序,使得0的点更多

数据范围:n≤42n\leq 42n≤42


SolutionSolutionSolution

显然状压dpdpdp,但2n2^{n}2n会超时

实际上我们只需要dpdpdp与1相连的点或者dpdpdp与1不直接相连但与1直接相连的点相连的点,而这两个部分加起来才等于nnn,所以我们只需要dpdpdp其中的较小者即可,最坏情况下这些点是一样多的,但复杂度变成了O(2n/2n)O(2^{n/2}n)O(2n/2n),可以通过本题


CodeCodeCode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define LL long long
#define N 110
using namespace std;int n,m,A,B;
long long f[2][N][N],a[N][N],ans,K,w[N][N];
const int dx[4]={-1,0,1,0};
const int dy[4]={0,1,0,-1};
signed main()
{freopen("maja.in","r",stdin);freopen("maja.out","w",stdout);memset(f,0xcf,sizeof(f));scanf("%d%d%d%d%lld",&n,&m,&A,&B,&K);for(register int i=1;i<=n;i++)for(register int j=1;j<=m;j++)scanf("%lld",a[i]+j);f[0][A][B]=0;K/=2;for(register int k=1;k<=min(1ll*n*m,K);k++){memset(f[k&1],0xcf,sizeof(f[k&1]));for(register int i=1;i<=n;i++)for(register int j=1;j<=m;j++){if(k==1){for(register int l=0;l<4;l++) w[i][j]=max(w[i][j],a[i+dx[l]][j+dy[l]]);w[i][j]+=a[i][j];}for(register int l=0;l<4;l++)f[k&1][i][j]=max(f[k&1][i][j],f[~k&1][i+dx[l]][j+dy[l]]+a[i][j]);if(f[k&1][i][j]<0) continue;ans=max(ans,(f[k&1][i][j]+(K-k)/2*w[i][j])*2-a[i][j]);}}printf("%lld",ans);
}

JZOJ 6316. djq的朋友圈相关推荐

  1. JZOJ 6316. djq的朋友圈(状压DP)

    JZOJ 6316. djq的朋友圈 题目 Description Input Output 一个整数表示最多的盟友数. Sample Input Sample 1: 7 8 1 2 0 1 3 0 ...

  2. JZOJ 6316.djq的朋友圈【状压】

    ... 题目: 题意: 分析: 代码: 题目: 传送门 题意: 给出关系表,求一个对比的顺序,使得可能的盟友数最大 分析: 设AAA表示直接与111相连的点集,BBB表示直接与AAA相连但不与111相 ...

  3. [jzoj 6316] djq的朋友圈 {状态压缩}

    题目 解题思路 我们可以把和1号点相邻且是盟友的点归到A集合,与1号点相邻且不是盟友的归到B集合,然后枚举B集合的排列暴力计算. 代码 #include<cstdio> #include& ...

  4. 6316. djq的朋友圈

    Description Input Output 一个整数表示最多的盟友数. Sample Input Sample 1: 7 8 1 2 0 1 3 0 2 4 0 4 5 0 3 4 1 2 5 ...

  5. 【动态规划 状压dp】JZOJ_6316 djq的朋友圈

    题意 给出一张图,有若干点之间连边,边权∈{0,1}\in\{0,1\}∈{0,1},对于点1,与它直接连边的点且边权为0,就是盟友,否则是情敌:间接连边,就要按某种顺序同时列出它们的熟人,如果关系相 ...

  6. NOI2018湖北省队集训Day4 T2 djq 的朋友圈

    题面: 得分情况: 35分枚举全排列暴力... 正解: 我们将直接与1相连的点称为a,不与1直接相连而与a直接相连的点称为b. 状压dp[i]表示已选的a,转移时枚举现在要选的a点,计算对答案的影响. ...

  7. python获取登录按钮_python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。

    昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 看不下去了,我支持996,年轻人就该996! 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第一 ...

  8. 并查集c++代码_[Leetcode 每日精选](本周主题-并查集) 547. 朋友圈

    题目难度: 中等 原题链接 今天继续来做并查集的问题, 这道题仍然比较基础, 而且也是个比较接近现实的问题了. 大家在我的公众号"每日精选算法题"中的聊天框中回复 并查集 就能看到 ...

  9. 不停刷朋友圈的人_刷爆朋友圈的推拉门安装方式 90%的人从没见过

    点击上面免费订阅 问:为什么关注门窗会? 答:门窗会是百万门窗精英的聚集地. 答:门窗会是门窗老板的手机采购平台. 既想要充足的光线又想拥有合理的区域划分,那么推拉门是一个不错的选择.下面给大家介绍几 ...

最新文章

  1. 独家 | 5个步骤开启你的数据科学职业生涯!(附链接)
  2. mysql 表中添加数据类型_MySQL数据表添加字段(三种方式)
  3. 访客IP API接口
  4. 【Spring】Spring第一天 - 环境搭建、IoC 详解、DI 详解等
  5. (三)python3 只需3小时带你轻松入门—— 变量的简单运算
  6. Python--day 3
  7. LeetCode 697. 数组的度
  8. 高能同步辐射光源科学数据管理策略研究与应用
  9. 【报告分享】2020中国数字化后浪:中小企业转型与创新实录.pdf(附下载链接)...
  10. c语言编写一个用户登录界面,怎么用C语言编写个登陆界面?
  11. C2P工业云进销存管理有什么优势?
  12. 笔记本计算机涂硅脂,笔记本cpu怎么更换散热硅脂?笔记本电脑cpu涂硅脂教程
  13. java 套接字关联的通道_java.nio.channels.SocketChannel
  14. C++中如何创建一个类?
  15. DataTables如何重新加载数据
  16. windows编译 zlib
  17. 使用Mapper代理开发解决硬编码问题
  18. myeclipse2017 for Mac 破解版本
  19. 【创新实训】BERT4EL,基于文本相似度的实体消歧实现
  20. 全球排名前四的眼药水,第一款来自欧洲老牌安瞧AGEPHA Pharma,眼科医生自留!

热门文章

  1. 马斯克和扎克伯格线上约架,地点“票价”都已定;超10万个ChatGPT账号泄露;苹果推出Vision Pro开发工具|极客头条...
  2. Bigger is Better
  3. 什么是固定资产(亿)?
  4. 美容护肤:春天四类方案拯救过敏肌肤秘籍 - 生活至上,美容至尚!
  5. vivado使用modelsim仿真
  6. qt QSettings
  7. 非常好用的底部导航栏
  8. 从零开始掌握交互设计的学习笔记
  9. 从CSDN博客专家变动引发的随想
  10. DB2中的NVL和NVL2函数