当前位置: 首页 > news >正文

折半+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&#xff0c;必然折半。然后怎么做&#xff1f; 分析性质。每次可以走1步or2步&#xff0c;等价什么&#xff1f;等价任意相邻2个必选一个&#xff01;然后就可以建图 这个图是个限制图&#xff0c;我们折半后可以…...

如何写出优质代码

(本文转载自其他博主但是个人忘记了出处) 优质代码是什么&#xff1f; 优质代码是指那些易于理解、易于维护、可读性强、结构清晰、没有冗余、运行效率高、可复用性强、稳定性好、可扩展性强的代码。 这类代码不仅能够准确执行预期功能&#xff0c;同时也便于其他开发者理解…...

ChatGLM2-6B的通透解析:从FlashAttention、Multi-Query Attention到GLM2的微调、源码解读

前言 本文最初和第一代ChatGLM-6B的内容汇总在一块&#xff0c;但为了阐述清楚FlashAttention、Multi-Query Attention等相关的原理&#xff0c;以及GLM2的微调、源码解读等内容&#xff0c;导致之前那篇文章越写越长&#xff0c;故特把ChatGLM2相关的内容独立抽取出来成本文 …...

3D人脸生成的论文

一、TECA 1、论文信息 2、开源情况&#xff1a;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…...

解决问题:可以用什么方式实现自动化部署

自动化部署可以使用多种工具来实现&#xff1a; 脚本编写&#xff1a;可以使用 Bash、Python 等编写脚本来实现自动化部署。例如&#xff0c;可以使用 Bash 脚本来自动安装、配置和启动应用程序。 配置管理工具&#xff1a;像 Ansible、Puppet、Chef、Salt 等配置管理工具可以…...

【数据结构】链表栈

目录&#xff1a; 链表栈 1. 链式栈的实现2. 链表栈的创建3. 压栈4. 弹栈 链表栈 栈的主要表示方式有两种&#xff0c;一种是顺序表示&#xff0c;另一种是链式表示。本文主要介绍链式表示的栈。 链栈实际上和单链表差别不大&#xff0c;唯一区别就在于只需要对链表限定从头…...

Android笔记:Android 组件化方案探索与思考

组件化项目&#xff0c;通过gradle脚本&#xff0c;实现module在编译期隔离&#xff0c;运行期按需加载&#xff0c;实现组件间解耦&#xff0c;高效单独调试。 先来一张效果图 组件化初衷 APP版本不断的迭代&#xff0c;新功能的不断增加&#xff0c;业务也会变的越来越复杂…...

MeterSphere v2.10.X-lts 双节点HA部署方案

一、MeterSphere高可用部署架构及服务器配置 1.1 服务器信息 序号应用名称操作系统要求配置要求描述1负载均衡器CentOS 7.X /RedHat 7.X2C,4G&#xff0c;200GB部署Nginx&#xff0c;实现负载路由。 部署NFS服务器。2MeterSphere应用节点1CentOS 7.X /RedHat 7.X8C,16GB,200G…...

Java进阶篇--网络编程

​​​​​​​ 目录 计算机网络体系结构 什么是网络协议&#xff1f; 为什么要对网络协议分层&#xff1f; 网络通信协议 TCP/IP 协议族 应用层 运输层 网络层 数据链路层 物理层 TCP/IP 协议族 TCP的三次握手四次挥手 TCP报文的头部结构 三次握手 四次挥手 …...

PyTorch入门之【CNN】

参考&#xff1a;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…...

马斯洛需求层次模型之安全需求之云安全浅谈

在互联网云服务领域&#xff0c;安全需求是用户首要考虑的因素之一。用户希望在将数据和信息托付给云服务提供商时&#xff0c;这些数据和信息能够得到充分的保护&#xff0c;避免遭受未经授权的访问、泄露或破坏。这种安全需求的满足&#xff0c;对于用户来说是至关重要的&…...

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)概述&#xff1a; RCE漏洞&#xff0c;可以让攻击者直接向后台服务器远程注入…...

【WSN】无线传感器网络 X-Y 坐标到图形视图和位字符串前缀嵌入方法研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Linux定时任务

文章目录 前言设置定时任务流程定时规则例子 终止定时任务列出当前的定时任务重启任务调度 前言 在Linux系统中有时侯需要周期性的自动执行一些命令&#xff0c;这时候Linux定时任务就派上用场了 设置定时任务流程 进入定时任务的编辑模式 crontab -e编辑定时任务&#xff…...

【Overload游戏引擎分析】画场景网格的Shader

Overload引擎地址&#xff1a; GitHub - adriengivry/Overload: 3D Game engine with editor 一、栅格绘制基本原理 Overload Editor启动之后&#xff0c;场景视图中有栅格线&#xff0c;这个在很多软件中都有。刚开始我猜测它应该是通过绘制线实现的。阅读代码发现&#xff0…...

【JavaEE】多线程进阶(一)饿汉模式和懒汉模式

多线程进阶&#xff08;一&#xff09; 文章目录 多线程进阶&#xff08;一&#xff09;单例模式饿汉模式懒汉模式 本篇主要引入多线程进阶的单例模式&#xff0c;为后面的大冰山做铺垫 代码案例介绍 单例模式 非常经典的设计模式 啥是设计模式 设计模式好比象棋中的 “棋谱”…...

C++树详解

树 树的定义 树&#xff08;Tree&#xff09;是n&#xff08;n≥0&#xff09;个结点的有限集。n0时称为空树。在任意一颗非空树中&#xff1a;①有且仅有一个特定的称为根&#xff08;Root&#xff09;的结点&#xff1b;②当n>1时&#xff0c;其余结点可分为m&#xff08…...

支付环境安全漏洞介绍

1、平台支付逻辑全流程分析 2、平台支付漏洞如何利用&#xff1f;买东西还送钱&#xff1f; 3、BURP抓包分析修改支付金额&#xff0c;伪造交易状态&#xff1f; 4、修改购物车参数实现底价购买商品 5、SRC、CTF、HW项目月入10W副业之路 6、如何构建最适合自己的网安学习路线 1…...

抄写Linux源码(Day16:内存管理)

回忆我们需要做的事情&#xff1a; 为了支持 shell 程序的执行&#xff0c;我们需要提供&#xff1a; 1.缺页中断(不理解为什么要这个东西&#xff0c;只是闪客说需要&#xff0c;后边再说) 2.硬盘驱动、文件系统 (shell程序一开始是存放在磁盘里的&#xff0c;所以需要这两个东…...

Cookie和Session详解以及结合生成登录效果

目录 引言 1.Cookie中的数据从哪来数据长啥样&#xff1f; 2.Cookie有什么作用&#xff1f; 3.cookie与session的工作关联&#xff1f; 4.Cookie到哪去&#xff1f; 5.Cookie如何存&#xff1f; 6.Session 7.Cookie与Session的关联与区别 8.通过代码理解 8.1 相关代码 8.2…...

从零构建高频无线传输系统:调幅技术实战解析

1. 调幅无线传输系统入门指南 第一次接触调幅无线传输系统时&#xff0c;我也被各种专业术语搞得一头雾水。简单来说&#xff0c;调幅(AM)就是通过改变载波信号的幅度来传递信息的技术。想象一下快递员送包裹&#xff1a;载波就像快递车&#xff0c;而我们要发送的信息就是包裹…...

从服务器到手机:手把手教你修改游戏客户端IP,让私服在手机上跑起来

移动游戏私服客户端IP修改实战指南 当你在服务器上成功部署了游戏私服后&#xff0c;最令人沮丧的莫过于发现手机上的官方客户端无法连接到你的私人服务器。这个看似简单的"最后一公里"问题&#xff0c;往往成为许多私服搭建者的拦路虎。本文将彻底解决这个痛点&…...

双强联袂,数智共舞 | 中聚信 × 金蝶启联巅峰对话,共探财税未来新航道

3 月 26 日&#xff0c;由金蝶软件&#xff08;中国&#xff09;有限公司、贵州启联科技有限公司联合主办&#xff0c;中聚信财税技术研究中心协办的「AI 时代 先进管理用金蝶」主题峰会&#xff0c;在贵阳国际生态会议中心圆满落幕。这场聚焦制造企业数字化转型与 AI 赋能管理…...

加州自动驾驶测试报告解读:数据背后的技术演进与行业趋势

1. 从加州数据看自动驾驶的“成绩单”&#xff1a;2021年测试报告深度解读每年年初&#xff0c;自动驾驶圈子里不少人都会习惯性地去翻看一份来自美国加州的“成绩单”——加州机动车辆管理局发布的年度自动驾驶车辆测试报告。这份报告就像一份公开的“期中考试”排名&#xff…...

通过AxisApi中转站使用国外API大模型教程

前言&#xff1a;所有的国外大模型想不通过中转站直接使用&#xff0c;其实是很麻烦的的事情&#xff0c;就拿codex来说&#xff0c;需要一个谷歌账号&#xff0c;没有谷歌账号需要注册&#xff0c;注册还必须要使用国外的手机号码和验证码校验审核&#xff0c;流程很繁琐&…...

我开会用了之后从怀疑到真香!2026华为手机语音转文字真后悔没早用

我上周差点因为漏记项目评审会的核心需求背锅&#xff0c;前前后后踩了N多会议记录的坑&#xff0c;用过不下10款语音转文字工具&#xff0c;掏心窝子说一句&#xff1a;听脑AI是同类工具中最值得职场人用的&#xff0c;没有之一。之前我真的不信什么语音转文字能解决所有问题&…...

C++ 知识点22 函数模板

C 函数模板一、为什么要有函数模板&#xff1f;先看痛点&#xff1a;你要写两个交换函数&#xff0c;int 版、double 版&#xff1a;// int 交换 void swapInt(int &a, int &b) {int t a; a b; b t; } // double 交换 void swapDouble(double &a, double &b…...

Cadence焊盘绘制实战:从零到一构建PCB封装基石

1. 为什么焊盘设计是PCB封装的基石 刚入行硬件设计那会儿&#xff0c;我总以为画封装就是照着尺寸描边。直到有次量产时发现整批QFN芯片虚焊&#xff0c;才明白焊盘设计才是封装可靠性的命门。Cadence的分离式设计哲学——将焊盘&#xff08;Padstack&#xff09;与封装&#x…...

QCustomPlot之颜色图实战:从静态数据到动态刷新的可视化(十四)

1. 认识QCPColorMap&#xff1a;从静态热力图开始 第一次接触QCustomPlot的颜色图功能时&#xff0c;我正需要可视化一组服务器CPU温度分布数据。当时尝试了多种图表类型&#xff0c;最终发现QCPColorMap简直是二维矩阵数据可视化的"神器"。这个类专门用于绘制热力图…...

喜马拉雅音频下载终极指南:如何永久保存付费专辑到本地

喜马拉雅音频下载终极指南&#xff1a;如何永久保存付费专辑到本地 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 还在为喜马拉雅…...