BZOJ3003 差分+状压

【深度学习3】ubuntu22.04从零开始搭建深度学习环境 ubuntu22.04从零开始搭建深度学习开发环境 阅读详情

给定一个长度为n的01序列以及L个整数a[i]。每次可以选择连续的长度为a[i]的一段取反,给出末状态。求最少操作的次数。

首先,这类选择一段区间操作的题可以把序列差分。于是我们把给出的末状态差分,然后考虑把每次操作也差分,于是每次操作就是选择两个位置差为a[i]的数对取反。

然后我们对所有的a[i]跑一遍背包(即取正也取负),这样就得到了把任意位置差的两个点取反的最小代价。

接着考虑把所有的位置给状压,然后每次取两个数对。但是这样是2nn2的,不是很优雅。然后发现我们每次可以固定取一个 lowbit,这样一定是可以涵盖到所有的方案

#include<bits/stdc++.h>
#define inf ~0u>>2
using namespace std;
const int N=2e4+5;
inline int read(){
    int x=0;char ch=getchar();
    while(ch<'0'||ch>'9'){ch=getchar();}
    while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}
    return x;
}
int T,n,k,l; 
int a[N],c[N],pos[N],f[N],g[(1<<22)];
int cnt; 
queue<int>q;
int main(){
#ifdef Devil_Gary
    freopen("in.txt","r",stdin);
#endif
    T=read();
    while(T--){
        cnt=0,n=read(),k=read(),l=read();
        for(int i=1;i<=k;i++) a[i]=read();
        sort(a+1,a+k+1);
        k=unique(a+1,a+k+1)-(a+1);
        a[0]=-1,a[k+1]=n+2;
        for(int i=1;i<=k;i++) {
            if(a[i]!=a[i-1]+1) pos[cnt++]=a[i];
            if(a[i]!=a[i+1]-1) pos[cnt++]=a[i]+1; 
        }
        sort(pos,pos+cnt);
        for(int i=1;i<=n;i++) f[i]=inf;
        for(int i=1;i<=l;i++) c[i]=read();
        for(int i=1;i<=l;i++) f[c[i]]=1,q.push(c[i]);
        while(!q.empty()){
            int o=q.front();q.pop();
            for(int i=1;i<=l;i++){
                if(o+c[i]<=n&&f[o+c[i]]==inf){
                    f[o+c[i]]=f[o]+1;
                    q.push(o+c[i]);
                }
                if(o-c[i]>=1&&f[o-c[i]]==inf){
                    f[o-c[i]]=f[o]+1;
                    q.push(o-c[i]);
                }
            } 
        }
        for(int s=1,o;s<(1<<cnt);s++){
            o=0,g[s]=inf;
            for(int i=0;i<cnt;i++)
                if(s&(1<<i)){
                    o=i;break;
                }
            for(int i=o+1;i<cnt;i++)
                if(s&(1<<i))
                    g[s]=min(g[s],g[s^(1<<i)^(1<<o)]+f[pos[i]-pos[o]]); 
        }
        printf("%d\n",g[(1<<cnt)-1]==inf?-1:g[(1<<cnt)-1]);
    }
}
思岚A1 上手教程 前言 寒假在家闲着也是闲着,索性就向是实验室借了一个思岚 A1激光雷达,来进一步完成自己的实验室实习项目。经过一个月在Linux上和ROS上的摸爬滚打,我已经对机器人开发和SLAM有了初步了解,现在就写个上手教程吧(以防自己以后忘了)。 Basic Support 硬件 一台电脑 思岚 A1激光雷达 软件 安装Virtual Box虚拟机 在虚拟机安装Ubuntu 16操作系统 在Ubuntu 16搭建ROS kinetic 简要步骤 1.现在w.. 阅读详情

相关推荐

企业级AI项目落地实战指南

企业级 AI 项目落地需构建“分阶段实施 + 多维度风控”的双轮驱动体系:实施端通过 POC 验证技术可行性、试点建立评估标准、规模化实现价值复制,各阶段需结合行业案例(如东阳光药、旺盈集团)提炼可复用经验;风险端则需覆盖技术(数据安全、模型稳定性)、合规(全球监管动态)、组织(人才与文化)维度,通过工具化框架(AI TRISM)与案例策略(邮储银行可解释性设计、拓斯达培训体系)实现风险可控。最终通过“场景聚焦 - 合规嵌入 - 持续优化”的循环机制,实现 AI 技术从“试点成功”到“全面价值创造”的跨越。

2509_93209761的博客 1437

BZOJ3003 LED题解(状压DP+最短路+差分)

题目:BZOJ3003. 题目大意:给定一个长度为nnn序列aia_iai​与给定mmm种操作,aia_iai​初始全为000,每种操作给定一个长度,表示可以对这个长度的区间取反.现在要你用一定次数的操作把整个序列变成只有kkk个位置为111,其余全为000,求最少操作数. 数据组数T≤10T\leq 10T≤10,1≤n≤104,1≤m≤100,1≤k≤101\leq n\leq 10^4,1\leq m\leq 100,1\leq k\leq 101≤n≤104,1≤m≤100,1≤k≤10. 对于这种

hzk_cpp的博客 700

UWB灵犀遥控器方案介绍

UWB灵犀指向遥控器的技术原理和方案介绍

xiongdauwb的博客 3898

BZOJ 3003: LED

3003: LED Time Limit: 20 Sec  Memory Limit: 128 MB Submit: 88  Solved: 19 [Submit][Status][Discuss] Description LED屏是由一个庞大的点阵小灯泡组成的,一开始每个小灯泡都不发光。每一行一共有N个小灯泡,依次标号为1~n。现在给定K个点,要求这K个点发光,其余点必须保持熄

BlackJack 828

CSP-J 复试考点

可以用来训练思维,对于学习时间短的同学,动态规划可以帮助你迅速进入编程状态,也有助于帮你发现题目背后可能隐藏的更简便的算法。动态规划、贪心都是和子问题相关的,动态规划的基本思想是将一个大的问题划分成子问题,接着分别求解,而且能够将一些重复的计算记忆化,大大提高效率。难度加大,会涉及到二分、动态规划之类的算法,容易遗漏考虑点,不易得全分,考试的时候要注意全面性。一般是压轴题,算法不明显,剪枝的搜索、动态规划、状压 DP、树形 DP 、树、图等。枚举算法是指,列举出所有可能的取值,从中找出最优解。

GuanHeTian的博客 2214

切比雪夫插值

切比雪夫插值是一种基于切比雪夫节点的多项式插值方法,其优势是减少插值误差(特别是龙格现象:表现为高维插值时在边缘处插值误差骤增)。本文对其基本操作进行说明。

平和少年的博客 1646

【BZOJ3003】LED BFS+状压DP

【BZOJ3003】LED Description LED屏是由一个庞大的点阵小灯泡组成的,一开始每个小灯泡都不发光。每一行一共有N个小灯泡,依次标号为1~n。现在给定K个点,要求这K个点发光,其余点必须保持熄灭状态。而这块LED屏的操作方式各种奇葩,一共有L种操作方法,第i种表示你能将任意长度恰为A_i的连续一段灯泡的状态取反(灭变亮,亮变灭)。 已知LED屏一共有m行,为...

aodanchui1057的博客 284

特斯拉 Model 3解析(九)特斯拉 Model 3 自动驾驶域控制器硬件架构

硬件层:车规级高密度主板 → PI/SI优化到极致传感器层:三目摄像头主导视觉,雷达补充冗余,超声波保证近距设计理念:依靠芯片算力最大化视觉潜力,而不是堆传感器这套思路的优点是:成本可控、量产快、迭代快。缺点是:极端场景下感知鲁棒性不足。纯视觉方案短期可行,但中长期必然要重新引入高分辨率雷达甚至固态LiDAR作为冗余。电源/信号完整性会越来越关键,未来域控板设计会越来越像数据中心服务器。

weixin_43199439的博客 1784

『差分思想』BZOJ3003:LED

Problem\mathrm {Problem}Problem LED屏是由一个庞大的点阵小灯泡组成的,一开始每个小灯泡都不发光。 每一行一共有N个小灯泡,依次标号为1~n。现在给定K个点,要求这K个点发光,其余点必须保持熄灭状态。 而这块LED屏的操作方式各种奇葩,一共有L种操作方法,第i种表示你能将任意长度恰为A_i的连续一段灯泡的状态取反(灭变亮,亮变灭)。 已知LED屏一共有m行,为了节省...

Ronaldo7_ZYB的博客 372

基于卷积神经网络的遥感图像地物分类

AI:89-基于卷积神经网络的遥感图像地物分类 基于卷积神经网络的遥感图像地物分类是一个令人兴奋的领域,它在环境监测、城市规划、农业、国防等领域具有广泛的应用。深度学习技术为我们提供了更准确、高效的工具,有望在未来进一步提高分类性能。在本文中,我们探讨了卷积神经网络的工作原理、数据准备、模型构建、训练和评估过程,并提供了多个代码示例。此外,我们讨论了地物分类的应用和挑战,以及未来的发展趋势。

一键难忘的博客 2717

OpenClaw实战系列02:企业微信接入完全指南

本文详细介绍了如何将OpenClaw与企业微信对接,实现智能机器人功能。主要内容包括:企业微信侧创建智能机器人或自建应用,获取必要凭证和权限;OpenClaw侧安装配置企业微信插件,设置通信通道;完成双向验证并进行功能测试。文章提供了详细的配置步骤、常见问题排查方法和进阶玩法,帮助用户在30分钟内完成对接。关键点包括:确保URL可访问、Token一致、网关正常运行,以及针对不同部署环境(云服务器/内网)的配置差异。

PeterPan的博客 3812

#12【BZOJ3003】LED BFS+状压DP

题解: 看到区间修改先想一下差分 这题用差分是为了分析问题 现在的问题就变成了 原序列全为0,要使得特定的k个点变为1,每个操作改变x,y+1 然后我们会发现 对于二元组a,b我们要修改它,实际上是在找连续的区间相连,所以实质上是最短路 为什么要差分了才能这么做呢 因为原来的区间修改可能中间涉及了有效点而变得复杂 现在每次有效操作不会影响到中间的有效点 接下来状压dp这是显然的...

weixin_30362083的博客 152

华为OD机试双机位C卷-字符串解密(Py/Java/C/C++/Js/Go)

华为OD机试(机考)双机位C卷 【字符串解密】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试 - 字符串解密。

qq_45776114的博客 733

BZOJ3569-DZY Loves Chinese II

BZOJ3569-DZY Loves Chinese II   题意:   题解:     好神的题啊...     先求出原图的任意一棵生成树,然后图中的边就分为了生成树中的边和非生成树中的边.对于非生成树中的边,你给它rand一个权值,对于生成树中的边, 它的权值就是跨过它的非生成树中边的权值的xor和.然后对于每个询问,如果在给出的边中选出一些边是它们的权值xor为0,那么就图就...

weixin_30502157的博客 114

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

bzoj 泛做

3003 这个题是这样的,对序列差分后,每个取反操作就是给两个端点的值取反,然后背包之后再状压就好了 4128 这题棒棒的QAQBSGS 23333 4176 这个杜教筛呃呃呃大爷链接 3028 我要去学学生成函数大爷链接 4025 我真TM是智商爆降了,这个东西明显的按时间分治一下就好了,管他什么lct 3498 一位大爷:“将所有点分成两类:度数 < sqrt(m)的和度数 > s...

weixin_30783913的博客 303

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

『差分』BZOJ3043数列操作

Problem\mathrm{Problem}Problem 给定一个长度为n的数列{a1,a2…an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。 问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。 Solution\mathrm{Solution}Solution 由于是区间修改,我们考虑将区间修改转化为单点修改。 那...

Ronaldo7_ZYB的博客 723

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

bzoj 3043 IncDec Sequence 差分

题面 题目传送门 解法 模型转化非常精妙 将区间[l,r]+v[l,r]+v[l,r]+v,可以变成在差分数组第lll个位置+v+v+v,在第r+1r+1r+1个位置−v−v-v 那么,我们可以考虑将问题转化一下,变成给定n−1n−1n-1个数,每一次可以将某一个数−1−1-1或+1+1+1,另一个数可以不操作,否则做和第一个数相反的操作。问至少多少次这个数列变成全0 考虑一个贪心的解法...

mysterynoip的博客 344

bzoj:2100 [Usaco2010 Dec]Apple Delivery(luogu 3003)

算法:最短路  难度:NOIP-   用d1,d2,分别跑最短路,跑两遍最短路,取和的最小值输出。 代码如下: #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; #include &lt;cstdlib&gt; #include &lt;cmath&gt; #include &lt;...

01232012的博客 220

BZOJ 1416: [NOI2006]神奇的口袋 高精度

1416: [NOI2006]神奇的口袋 Time Limit: 10 Sec  Memory Limit: 64 MB Submit: 528  Solved: 332 [Submit][Status][Discuss] Description Input Output  0/1,概率为1 应输出1/1。 Sample Input input 1 2

BlackJack 485

spfa的2种优化——洛谷P3003 [USACO10DEC]苹果交货Apple Delivery

https://daniu.luogu.org/problem/show?pid=3003 SLF:Small Label First 策略,设要加入的节点是j,队首元素为i,若dist(j) <= dist(i),则将j插入队首,否则插入队尾。 LLL:Large Label Last 策略,设队首元素为i,每次弹出时进行判断,队列中所有dist值的平均值为x,若dist(i)>x则将

我怎么这么菜的呢 543

bzoj 4925: 城市规划 差分

题意最近比特镇正在迅速建成。沿着美丽的大街,一座座新建筑拔地而起。小Q喜欢沿着大街走,但问题是不同的建筑位于街对面。为了从一个建筑到另一个建筑,有时需要通过漫长的步行穿过最近的人行道。所以他决定写一个程序,计算如何沿着大街平移所有人行道,使得人行道的布局最有利于行人。他希望尽可能多的人行道出现在某些建筑物的前面,同时人行道的移动距离应当是最小的。 大街以直线表示,人行道被视为这条线上的点。所有建筑

beginend 852

bzoj1651(差分)

其实就是找一个点,使覆盖的线段最多。 经典差分,注意需要离散化   #include #include #include #include #include using namespace std; int n; struct aa { int l,r; }q[50005]; int h[100005]; int add[100005],ji[100005];

running_in_dark的博客 403

bzoj 3043 数列操作(差分)

题面 题目描述 给定一个长度为n的数列{a1,a2…an},每次可以选择一个区间[l,r],使这个区间内的数都加一或者都减一。 问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。 输入格式 第一行一个正整数n 接下来n行,每行一个整数,第i+1行的整数表示ai。 输出格式 第一行输出最少操作次数 第二行输出

蒟蒻柴犬首相的博客 1224

【BZOJ1087】状压dp

题意十分好懂 分析 看到题目,上来敲了个爆搜,结果样例都过不去…dfs水平有待提高… 仔细分析之后发现,虽然棋盘看起来很小,只有9*9,但是状态数目极多,所以暴力是不可能过的。 所以这个题目应该是个dp题。 dp应该怎么dp呢? 如果我们知道了上一行是怎么摆放的,我们也就知道了前i行一共有多少个棋子。那么下一行我们就可以推出来了。 这就是本题的dp的转移。 于是,我们来到了本篇文章的重点部分:状态...

KIKO_caoyue的博客 332

BZOJ 3043 IncDec Sequence 差分

题目大意:给定一个序列,提供一个操作:将某个区间内所有数+1或-1 求将所有数变成一样最少多少次操作,以及最终可以有多少种数 考虑差分后的序列 每次对[l,r]进行+1/-1,相当于在差分后的数组上对l进行+1/-1,然后对r+1进行-1/+1 特殊的,如果r=n,那么就相当于对l进行了+1/-1 我们最终的目标是将差分数组变成第一个位置是最终的数字,2~n都是0 那么我们统计

世界 3010

BZOJ5293:[BJOI2018]求和(LCA,差分)

Description master 对树上的求和非常感兴趣。他生成了一棵有根树,并且希望多次询问这棵树上一段路径上所有节点深度的k 次方和,而且每次的k 可能是不同的。此处节点深度的定义是这个节点到根的路径上的边数。他把这个问题交给 了pupil,但pupil 并不会这么复杂的操作,你能帮他解决吗? Input 第一行包含一个正整数n ,表示树的节点数。 之后n-1 行...

weixin_33719619的博客 200
上一篇: BZOJ4173 数学
下一篇: Tarjan求无向图桥和割点
Devil_Gary
博客等级 码龄9年 5粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值