折半+dp之限制转状态+状压:CF1767E
https://vjudge.net/problem/CodeForces-1767E/origin
首先40,必然折半。然后怎么做?
分析性质。每次可以走1步or2步,等价什么?等价任意相邻2个必选一个!然后就可以建图
这个图是个限制图,我们折半后可以进行状压。dp的过程是限制转状态。
首先分别的,前后内部都必须满足。然后对于交织在两部分的限制,我们枚举其中一边哪些不选,必然可以对应另外那边哪些必选。得到的集合求其最小合法超集即是答案。
#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){int x=0,f=1;char ch=getchar(); while(ch<'0'||
ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){
x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}return x*f;}
#define Z(x) (x)*(x)
#define pb push_back
//mt19937 rand(time(0));
//mt19937_64 rand(time(0));
//srand(time(0));
#define N 300010
#define M 21
//#define mo
int n, m, i, j, k, T;
int ans, f[1<<M], b[M<<1][M<<1];
int a[N], s, t, mid, cost[M<<1];
int k1, k2, s1, s2; void cun(int x, int y) {b[x][y]=b[y][x]=1;
}int check(int s) {if(k1<mid && (s&s1)==0) return 0; if(k2<mid && (s&s2)==0) return 0; for(int i=0; i<mid; ++i)for(int j=0; j<mid; ++j)if(b[i][j] && (!(s&(1<<i)) && !(s&(1<<j)))) return 0; return 1;
}int check2(int s) {if(k1>=mid && (s&s1)==0) return 0; if(k2>=mid && (s&s2)==0) return 0; for(int i=mid; i<m; ++i)for(int j=mid; j<m; ++j) if(b[i][j] && (!(s&(1<<i-mid)) && !(s&(1<<j-mid)))) return 0; return 1;
}void Least(int s, int &t) {for(int i=mid; i<m; ++i)for(int j=0; j<mid; ++j) {
// printf("(%d %d) %d\n", i, j); if(b[i][j] && !(s&(1<<i-mid))) t|=(1<<j); }}signed main()
{
// freopen("in.txt", "r", stdin);
// freopen("out.txt", "w", stdout);
// T=read();
// while(T--) {
//
// }n=read(); m=read(); mid=m/2; ans=1e18;
// printf("%lld\n", mid); for(i=1; i<=n; ++i) a[i]=read()-1; s1=(1<<a[1]); s2=(1<<a[n]); k1=a[1]; k2=a[n]; if(k1>=mid) s1=(1<<a[1]-mid); if(k2>=mid) s2=(1<<a[n]-mid);
// printf("%d %d | %d %d\n", k1, k2, s1, s2); for(i=1; i<n; ++i) cun(a[i], a[i+1]); for(i=0; i<m; ++i) cost[i]=read(); memset(f, 0x3f, sizeof(f)); for(s=(1<<mid)-1; s>=0; --s) {if(check(s)) {
// printf("> %d ", s); for(i=k=0; i<mid; ++i) if(s&(1<<i)) k+=cost[i];
// printf("%lld\n", k); f[s]=min(f[s], k); }for(i=0; i<mid; ++i) if(s&(1<<i))f[s-(1<<i)]=min(f[s-(1<<i)], f[s]); }for(s=0; s<(1<<m-mid); ++s) {if(check2(s)) {
// printf(">> %d ", s);t=0; Least(s, t); for(i=k=0; i<m-mid; ++i) if(s&(1<<i)) k+=cost[i+mid];
// printf("%lld %lld\n", k, t); ans=min(ans, k+f[t]); }}printf("%lld", ans); return 0;
}
相关文章:
折半+dp之限制转状态+状压:CF1767E
https://vjudge.net/problem/CodeForces-1767E/origin 首先40,必然折半。然后怎么做? 分析性质。每次可以走1步or2步,等价什么?等价任意相邻2个必选一个!然后就可以建图 这个图是个限制图,我们折半后可以…...
如何写出优质代码
(本文转载自其他博主但是个人忘记了出处) 优质代码是什么? 优质代码是指那些易于理解、易于维护、可读性强、结构清晰、没有冗余、运行效率高、可复用性强、稳定性好、可扩展性强的代码。 这类代码不仅能够准确执行预期功能,同时也便于其他开发者理解…...
ChatGLM2-6B的通透解析:从FlashAttention、Multi-Query Attention到GLM2的微调、源码解读
前言 本文最初和第一代ChatGLM-6B的内容汇总在一块,但为了阐述清楚FlashAttention、Multi-Query Attention等相关的原理,以及GLM2的微调、源码解读等内容,导致之前那篇文章越写越长,故特把ChatGLM2相关的内容独立抽取出来成本文 …...
3D人脸生成的论文
一、TECA 1、论文信息 2、开源情况:comming soon TECA: Text-Guided Generation and Editing of Compositional 3D AvatarsGiven a text description, our method produces a compositional 3D avatar consisting of a mesh-based face and body and NeRF-based ha…...
解决问题:可以用什么方式实现自动化部署
自动化部署可以使用多种工具来实现: 脚本编写:可以使用 Bash、Python 等编写脚本来实现自动化部署。例如,可以使用 Bash 脚本来自动安装、配置和启动应用程序。 配置管理工具:像 Ansible、Puppet、Chef、Salt 等配置管理工具可以…...
【数据结构】链表栈
目录: 链表栈 1. 链式栈的实现2. 链表栈的创建3. 压栈4. 弹栈 链表栈 栈的主要表示方式有两种,一种是顺序表示,另一种是链式表示。本文主要介绍链式表示的栈。 链栈实际上和单链表差别不大,唯一区别就在于只需要对链表限定从头…...
Android笔记:Android 组件化方案探索与思考
组件化项目,通过gradle脚本,实现module在编译期隔离,运行期按需加载,实现组件间解耦,高效单独调试。 先来一张效果图 组件化初衷 APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂…...
MeterSphere v2.10.X-lts 双节点HA部署方案
一、MeterSphere高可用部署架构及服务器配置 1.1 服务器信息 序号应用名称操作系统要求配置要求描述1负载均衡器CentOS 7.X /RedHat 7.X2C,4G,200GB部署Nginx,实现负载路由。 部署NFS服务器。2MeterSphere应用节点1CentOS 7.X /RedHat 7.X8C,16GB,200G…...
Java进阶篇--网络编程
目录 计算机网络体系结构 什么是网络协议? 为什么要对网络协议分层? 网络通信协议 TCP/IP 协议族 应用层 运输层 网络层 数据链路层 物理层 TCP/IP 协议族 TCP的三次握手四次挥手 TCP报文的头部结构 三次握手 四次挥手 …...
PyTorch入门之【CNN】
参考:https://www.bilibili.com/video/BV1114y1d79e/?spm_id_from333.999.0.0&vd_source98d31d5c9db8c0021988f2c2c25a9620 书接上回的MLP故本章就不详细解释了 目录 traintest train import torch from torchvision.transforms import ToTensor from torchvi…...
马斯洛需求层次模型之安全需求之云安全浅谈
在互联网云服务领域,安全需求是用户首要考虑的因素之一。用户希望在将数据和信息托付给云服务提供商时,这些数据和信息能够得到充分的保护,避免遭受未经授权的访问、泄露或破坏。这种安全需求的满足,对于用户来说是至关重要的&…...
Pikachu靶场——远程命令执行漏洞(RCE)
文章目录 1. RCE1.1 exec "ping"1.1.1 源代码分析1.1.2 漏洞防御 1.2 exec "eval"1.2.1 源代码分析1.2.2 漏洞防御 1.3 RCE 漏洞防御 1. RCE RCE(remote command/code execute)概述: RCE漏洞,可以让攻击者直接向后台服务器远程注入…...
【WSN】无线传感器网络 X-Y 坐标到图形视图和位字符串前缀嵌入方法研究(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Linux定时任务
文章目录 前言设置定时任务流程定时规则例子 终止定时任务列出当前的定时任务重启任务调度 前言 在Linux系统中有时侯需要周期性的自动执行一些命令,这时候Linux定时任务就派上用场了 设置定时任务流程 进入定时任务的编辑模式 crontab -e编辑定时任务ÿ…...
【Overload游戏引擎分析】画场景网格的Shader
Overload引擎地址: GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后,场景视图中有栅格线,这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现࿰…...
【JavaEE】多线程进阶(一)饿汉模式和懒汉模式
多线程进阶(一) 文章目录 多线程进阶(一)单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式,为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…...
C++树详解
树 树的定义 树(Tree)是n(n≥0)个结点的有限集。n0时称为空树。在任意一颗非空树中:①有且仅有一个特定的称为根(Root)的结点;②当n>1时,其余结点可分为m(…...
支付环境安全漏洞介绍
1、平台支付逻辑全流程分析 2、平台支付漏洞如何利用?买东西还送钱? 3、BURP抓包分析修改支付金额,伪造交易状态? 4、修改购物车参数实现底价购买商品 5、SRC、CTF、HW项目月入10W副业之路 6、如何构建最适合自己的网安学习路线 1…...
抄写Linux源码(Day16:内存管理)
回忆我们需要做的事情: 为了支持 shell 程序的执行,我们需要提供: 1.缺页中断(不理解为什么要这个东西,只是闪客说需要,后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的,所以需要这两个东…...
Cookie和Session详解以及结合生成登录效果
目录 引言 1.Cookie中的数据从哪来数据长啥样? 2.Cookie有什么作用? 3.cookie与session的工作关联? 4.Cookie到哪去? 5.Cookie如何存? 6.Session 7.Cookie与Session的关联与区别 8.通过代码理解 8.1 相关代码 8.2…...
Spring基础以及核心概念(IoC和DIQ)
1.Spring是什么 Spring是包含了众多工具方法的IoC容器 2.loC(Inversion of Control )是什么 IoC:控制反转,Spring是一个控制反转容器(控制反转对象的生命周期) Spring是一个loC容器,我们之前学过的List/Map就是数据存储的容器,to…...
《C和指针》笔记32:多维数组初始化
文章目录 使用括号进行初始化初始化省略维度 使用括号进行初始化 我们可以给数组赋值一个长长的列表: int matrix[2][3] { 100, 101, 102, 110, 111, 112 };它等价于 matrix[0][0]100; matrix[0][1]101; matrix[0][2]102; matrix[1][0]110; matrix[1][1]111; ma…...
零食食品经营小程序商城的作用是什么
零食几乎可以涵盖每个年龄阶段,同时又是市场中常见的零售批发商品,在多个场景中都有销售/购买属性,对消费者来说,购买零食的渠道多种多样,无论线下还是线上,都可随心而购。 庞大市场升级促进下,…...
Java泛型--什么是泛型?
https://www.bilibili.com/video/BV1xJ411n77R?p5&vd_sourcebb1fced25254581cf052adea5e87a1ff 1.泛型类、接口 1.1.泛型类 泛型类的定义 class 类名称 <泛型标识, 泛型标识, ...> {private 泛型标识 变量名;...... }常用的泛型标识:T、E、K、V jav…...
LabVIEW工业虚拟仪器的标准化实施
LabVIEW工业虚拟仪器的标准化实施 创建计算机化的测试和测量系统,从计算机桌面控制外部测量硬件设备,以及在计算机屏幕上显示的类似仪器的面板上查看来自外部设备的测试或测量数据,所有这些都需要虚拟仪器系统软件。该软件允许用户执行所有这…...
JavaScript系列从入门到精通系列第十七篇:JavaScript中的全局作用域
文章目录 前言 1:什么叫作用域 一:全局作用域 1:全局变量的声明 2:变量声明和使用的顺序 3:方法声明和使用的顺序 前言 1:什么叫作用域 可以起作用的范围 function fun(){var a 1; } fun();consol…...
汇编指令集合
...
TinyWebServer整体流程
从main主函数开始: 一、定义MySQL数据库的账号、密码和用到的数据库名称。 二、调用Config获得服务器初始化属性 在这一步确定触发模式端口等信息。 三、创建服务器实例对象 设置根目录、开辟存放http连接对象的空间,开辟定时器空间。 四、利用Confi…...
【Java项目推荐之黑马头条】自媒体文章实现异步上下架(使用Kafka中间件实现)
自媒体文章上下架功能完成 需求分析 流程说明 接口定义 说明接口路径/api/v1/news/down_or_up请求方式POST参数DTO响应结果ResponseResult DTO Data public class WmNewsDto {private Integer id;/*** 是否上架 0 下架 1 上架*/private Short enable;}ResponseResult 自媒…...
自学(黑客)技术方法————网络安全
如果你想自学网络安全,首先你必须了解什么是网络安全!,什么是黑客!! 1.无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如 Web 安全技术,既有 Web 渗透2.也有 Web 防…...
学网站设计/广州营销推广
编按:哈喽,大家好!如何快速做好每日业绩通报?如果每次都要重新输入日期、手动整理计算数据,那不但太费时间了而且还容易出错。今天苗老师要和大家分享一张全自动的Excel业绩通报表,解放你的双手、双眼&…...
政府网站页面设计/商丘seo外包
总结 capitalize() 首字母大写,其余全部小写 upper() 全转换成大写 lower() 全转换成小写 title() 标题首字大写,如"i love python".title() "I Love Python" 转换大小写 和其他语言一样,Python为string对…...
新加坡房产网站大全/搜索引擎推广的基本方法有
Oracle近日宣布,他们将Java的发布频率改为每六个月一次。JCP执行委员会在八月份的会议上提到了这一说法,随后,Oracle发言人Donald Smith在他的博客中确认了这一消息。该决定将在Java 9正式发布之后开始实行,也就是说,J…...
外贸网站做哪些语言/企业文化的重要性
666...
武汉企业网站制作/优化设计三年级上册答案
1、一次二次多项式拟合 一次二次比较简单,直接使用numpy中的函数即可,polyfit(x, y, degree)。 2、指数幂数拟合curve_fit 使用scipy.optimize 中的curve_fit,幂数拟合例子如下: from scipy.optimize import curve_fit import mat…...
网站建设公司好不好/有了域名怎么建网站
Linux Mint 是一份基于Debian和Ubuntu的Linux发行版。其目标是提供一种更完整的即刻可用体验网上的很多教程都是很老的,而且有些需要敲命令这对新手并不友好,这里介绍一下笔记本安装Linux 的方法 ,无需敲任何命令,安装好基本是开箱…...