Codeforces Round #384 (Div. 2)E.Vladik and cards【二分+状压dp】(未敲)

双闭环PWM整流器VOC控制 +SVPWM调制仿真(Simulink仿真实现) 内容概要:本文详细介绍了基于Simulink平台构建的双闭环PWM整流器VOC(虚拟磁链定向控制)与SVPWM(空间矢量脉宽调制)相结合的仿真模型,系统阐述了三相电压型PWM整流器在电压定向控制策略下的建模方法与控制实现。通过设计外环直流电压控制与内环电流控制的双闭环结构,实现了对整流器的高功率因数运行、能量双向流动及动态性能优化的精确调控。结合SVPWM调制技术,有效提升了直流侧电压利用率并显著降低输出电流谐波含量,增强了系统的整体效率与稳定性。该仿真模型适用于新能源发电、电动汽车充电系统、微电网等高性能电能变换应用场景,文档还配套提供了丰富的学习资源与技术支持渠道,便于深入研究与工程实践。; 适合人群:面向电气工程、自动化、电力电子及相关专业的高校学生、科研人员以及从事新能源、智能电网、电力传动等领域研发工作的工程师;尤其适合已具备自动控制理论、电力电子变换技术和MATLAB/Simulink仿真基础的专业人士进一步深化学习与应用。; 使用场景及目标:①深入理解PWM整流器的工作机理及其双闭环控制系统的架构设计;②掌握VOC控制与SVPWM调制的协同工作机制,提升系统动静态响应性能;③支撑科研课题、课程设计、毕业设计或实际工程项目中的整流器控制系统开发与验证;④作为高级电能变换技术的学习范例,促进对现代电力电子系统控制策略的综合理解与创新能力培养。; 阅读建议:建议结合文中提供的百度网盘链接与公众号资源,下载完整的Simulink仿真模型进行实操演练,在MATLAB环境中调整控制器参数并观察仿真结果,深入剖析控制逻辑与系统响应特性;同时可参考同系列资源如PI双闭环控制、电网不平衡工况下的控制策略等案例,开展对比分析与拓展研究,全面提升系统建模与控制设计的综合能力。 立即下载

转自:http://blog.youkuaiyun.com/mengxiang000000/article/details/53695321
E. Vladik and cards
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Vladik was bored on his way home and decided to play the following game. He tookn cards and put them in a row in front of himself. Every card has a positive integer number not exceeding8 written on it. He decided to find the longest subsequence of cards which satisfies the following conditions:

the number of occurrences of each number from 1 to8 in the subsequence doesn't differ by more then 1 from the number of occurrences of any other number. Formally, if there areck cards with numberk on them in the subsequence, than for all pairs of integers the condition|ci - cj| ≤ 1 must hold.
if there is at least one card with number x on it in the subsequence, then all cards with numberx in this subsequence must form a continuous segment in it (but not necessarily a continuous segment in the original sequence). For example, the subsequence[1, 1, 2, 2] satisfies this condition while the subsequence[1, 2, 2, 1] doesn't. Note that [1, 1, 2, 2] doesn't satisfy the first condition. 

Please help Vladik to find the length of the longest subsequence that satisfies both conditions.
Input

The first line contains single integer n (1 ≤ n ≤ 1000) — the number of cards in Vladik’s sequence.

The second line contains the sequence of n positive integers not exceeding8 — the description of Vladik’s sequence.
Output

Print single integer — the length of the longest subsequence of Vladik’s sequence that satisfies both conditions.
Examples
Input

3
1 1 1

Output

1

Input

8
8 7 6 5 4 3 2 1

Output

8

Input

24
1 8 1 2 8 2 3 8 3 4 8 4 5 8 5 6 8 6 7 8 7 8 8 8

Output

17

Note

In the first sample all the numbers written on the cards are equal, so you can’t take more than one card, otherwise you’ll violate the first condition.

题目大意:

给你一个长度为N的一个序列,需要我们找到一个最长的序列,保证每个元素(1~8)的个数之前的绝对值差小于等于1,而且对应选出来的序列中,需要保证相同的元素是连续的。

思路(补题真好玩系列0.0):思路来源于(http://www.cnblogs.com/Saurus/p/6183721.html);

1、首先我们很容易想到状压,我们肯定是状压8个数字的状态,其中1表示这个位子上的数已经选完了,0表示没有选完,那么我们在想dp数组的维度的时候,以及初算时间复杂度的时候,发现这个出现的次数一直是一个很难处理的点,那么我们首先对这个出现的次数进行优化:

①我们可以通过枚举来dp,每次枚举一个出现的次数,进行最大值的维护 ,我们不难想到:对应这个出现的次数越多,结果就可能越长,那么其具有单调性。

②对于可以枚举的具有单调性存在的变量,我们可以通过二分查找来进行优化。

2、那么我们每一次二分枚举出的当前值mid,表示本次二分枚举出来每个数将要出现的次数。

①对于当前值mid,每种数字出现的次数要么是mid次,要么是mid-1次。

②考虑dp,我们设定dp【i】【j】表示dp过程进行到第i位,对应j状态下的最多出现mid次的数字的个数。

③那么考虑状态转移方程:

如果我们直接暴力的话肯定时间复杂度是吃不消的,那么我们考虑调用一个vectormp;mp【i】用于存储数字i出现的各个位子,我们按照升序排列存储。

那么接下来:

④维护好每次二分情况的最大值即可。

Ac代码:

    #include<stdio.h>  
    #include<string.h>  
    #include<algorithm>  
    #include<vector>  
    using namespace std;  
    int a[100050];  
    int ans,n;  
    vector<int >mp[1050];  
    int cur[1050];  
    int dp[1050][1<<8];  
    int Slove(int mid)  
    {  
        int end=(1<<8);  
        for(int i=1;i<=8;i++)cur[i]=0;  
        memset(dp,-1,sizeof(dp));  
        dp[1][0]=0;  
        for(int i=1;i<=n;i++)  
        {  
            for(int j=0;j<end;j++)  
            {  
                if(dp[i][j]<0)continue;  
                for(int k=1;k<=8;k++)  
                {  
                    if(j &(1<<(k-1)))continue;  
                    if(mp[k].size()-cur[k]<mid-1)continue;  
                    dp[mp[k][cur[k]+mid-2]][j|(1<<(k-1))]=max( dp[mp[k][cur[k]+mid-2]][j+(1<<(k-1))],dp[i][j]);  
                    if(mp[k].size()-cur[k]<mid)continue;  
                    dp[mp[k][cur[k]+mid-1]][j|(1<<(k-1))]=max( dp[mp[k][cur[k]+mid-1]][j+(1<<(k-1))],dp[i][j]+1);  
                }  
            }  
            cur[a[i]]++;  
        }  
        int sum=-0x3f3f3f3f;  
        for(int i=1;i<=n;i++)sum=max(sum,dp[i][(1<<8)-1]);  
        if(sum<=0)return 0;  
        ans=max(ans,sum*mid+(8-sum)*(mid-1));  
        return 1;  
    }  
    int main()  
    {  
        while(~scanf("%d",&n))  
        {  
            for(int i=1;i<=n;i++)scanf("%d",&a[i]);  
            for(int i=1;i<=n;i++)mp[a[i]].push_back(i);  
            int l=2,r=n;  
            ans=0;  
            while(r-l>=0)  
            {  
                int mid=(l+r)/2;  
                if(Slove(mid)==1)  
                {  
                    l=mid+1;  
                }  
                else r=mid-1;  
            }  
            if(ans==0)  
            {  
                for(int i=1;i<=8;i++)if(mp[i].size()>0)ans++;  
            }  
            printf("%d\n",ans);  
        }  
    }  
把MinerU集成到Dify 本文介绍了如何将本地部署的MinerU与Dify平台进行集成。首先需要确保Dify和MinerU在Docker环境中正常运行,并通过配置虚拟网络实现互联。然后详细说明了在Dify平台安装MinerU插件的步骤,包括从插件市场搜索安装、配置连接参数等关键操作。特别强调了要等待MinerU容器完全启动(healthy状态)后再进行Dify配置,否则会出现连接错误。通过简单的URL指向和API密钥设置,用户即可实现Dify平台与本地MinerU算力网络的对接,为后续的AI应用开发提供基础支持。 阅读详情

相关推荐

Cube生成定时器2触发双ADC同步采集并用DMA传输

前言 用cube生成一个用定时器触发ADC1,ADC2同步采集的程序,单片机选择的是STM32L476RGT6,用定时器2进行ADC采集触发,更改定时器2的定时周期便可以更改ADC的采样周期,ADC1和ADC2使用同步规则模式,并用DMA进行数据的传输。 STM32的ADC采样完成总共需要的时间是 ADC完成采样时间=采样周期+12个转换周期 举个例子,假如ADC的时钟是15MHz,采样周期是3个周期,3个采样周期加上12个转换周期,一共是15个周期,因为时钟是15MHz,所以完成一次ADC转换总共需要的时

一行代码的博客 4513

【二分+状压DP】Codeforces743E[Vladik and cards]题解

题目概述给出一个序列 {An}\{A_n\} ,其中 Ai∈Z,Ai∈[1,8]A_i\in Z,A_i\in[1,8] ,求一个最大子序列,这个子序列满足: |numi−numj|≤1|num_i-num_j|\le 1 ,其中 numinum_i 表示 i∈Z,i∈[1,8]i\in Z,i\in[1,8] 的出现次数。 相同的数连在一起,不能出现断开的情况。如 1,2,11,2,1 是不合法的

ZigZagK的博客 528

从 JDK8 到 JDK17:CRMEB 框架升级

【摘要】CRMEB开源框架已成功从JDK8升级至JDK17,带来显著性能提升:并发吞吐量提高35%,响应延迟降低40%,资源占用减少25%。升级方案解决87个技术卡点,支持模块化扩展和微服务转型,兼容SpringBoot3.0等新技术。提供基础版到企业级的升级服务,包含代码重构指导和性能调优。经金融级验证的方案可帮助电商平台实现日均10万+UV承载,支付成功率提升至99.7%。现以低于市场30%的价格提供全周期技术支持,助力企业抢占技术先机。

weixin_39782540的博客 701

CodeForces743E. Vladik and cards 二分+状压dp

这个题我们可以想象成_---___-----__的一个水柱它具有一遍优一遍行的性质因此可以用来二分最小值len,而每次二分后我们都要验根,we可以把这个水柱想成我们在每个数段里取前一段的那个数后一段有也不选,而且最后一个区间的第一个数一定可以使这个数区间对应的数,那么我们只要在某个位置上不选或选就可以啦,这we很容易想到2n的验根但是这样还不如打暴力,这时我们发现这个dfs是低效的他会很多进入等效...

weixin_30640291的博客 118

AI辅助游戏开发实战:Kimi K3提升Unity开发效率与代码质量

在游戏开发领域,有限状态机(FSM)是构建角色AI行为逻辑的核心设计模式,它通过定义明确的状态和转换条件,使游戏实体能够智能地响应环境变化。其原理在于将复杂的行为分解为离散的状态节点,并通过事件驱动状态切换,从而实现清晰、可维护的AI架构。这项技术的价值在于显著提升了游戏角色的行为真实感和开发效率,被广泛应用于NPC行为控制、角色动画管理、UI流程等场景。随着AI编程助手的兴起,开发者现在可以借助如Kimi K3这类工具,通过自然语言指令快速生成和优化FSM等复杂系统的代码框架,将更多精力投入到核心玩法与性

weixin_30430677的博客 407

Scratch 3.0角色控制避坑指南:为什么你的键盘移动总卡顿?

本文深入剖析了Scratch 3.0中角色移动卡顿的根本原因,指出依赖`当按下`事件积木的局限性。通过对比分析,推荐采用`重复执行`结合`如果<键被按下?>`的循环控制方案,并引入速度变量模拟惯性,从而实现流畅、实时的键盘控制优化,显著提升游戏操作体验。

dd012的博客 1013

[CF 743E] Vladik and cards

题目 戳这洛谷 思路 似乎想到一个状态,感觉不甚靠谱。 正解: 似乎和我的思考有一些相似之处,然而我是把出现次数放进 dpdpdp 数组的状态里,这样是不好搞的,这就是我放弃自己思路的原因。 而题解里选择的方法是:直接二分这个最少的出现次数——似乎很可行? 定义 dp[i][j]dp[i][j]dp[i][j] :考虑前 iii 位,状态(即为数组出现的不可重集)为 jjj 可得到的最长序列长度。满足二分出来的最小长度 xxx。转移似乎很简单了,考虑 xxx 个和 x+1x + 1x+1 个就好了。 Cod

ICEEBBING的博客 239

Gromacs空蛋白模拟实战:从PDB文件到动力学轨迹的完整流程解析

本文详细解析了使用Gromacs进行空蛋白分子动力学模拟的完整实战流程。从PDB文件处理、力场选择与拓扑构建,到模拟盒子创建、溶剂化与电荷中和,再到能量最小化、NVT/NPT平衡及最终的生产模拟与基础分析,提供了每一步的命令详解和关键注意事项,旨在帮助计算生物学研究者系统掌握这一核心研究工具。

weixin_28454475的博客 275

codeForces-743E Vladik and cards(状压+记忆化搜索+二分)

传送门:http://codeforces.com/contest/743/problem/E 题意:有n个元素的序列,每个元素均是[1,8]中的整数,要求找出他的最长子序列满足以下2个条件:①在这个序列中,[1,8]每个数字出现的次数之差的绝对值不超过1;②相同的数字必须连续.输出最长子序列的长度 题解:①对于每种数字保存他出现时的下标;②二分每种数字至少出现x次,因此每种元素可能出现的次数

十分残念的博客 748

C#实战:通过ZPL指令与斑马打印机交互及状态监控全解析

本文全面解析了在C#中通过ZPL指令与斑马打印机进行交互及状态监控的实战方法。文章详细介绍了TCP/IP网络打印和Windows Raw打印两种核心连接方式,并深入讲解了ZPL指令的构建。重点阐述了通过SGD命令和斑马官方SDK实现实时打印状态监控的策略,为工业自动化场景下的可靠打印提供了完整解决方案。

weixin_29294395的博客 117

【学习系列】SAP RAP 4:通过注解来完成一些常规需求

本文介绍了RAP应用中常用注解的实现方式,包括搜索帮助、文本描述绑定、联动搜索、字段控制等功能。通过@Consumption、@UI等注解可以实现搜索帮助定义、多字段联动、必输校验、默认排序和默认值设置。管理字段可通过@Semantics注解自动记录创建/修改信息,长文本使用@UI.multiLineText实现多行显示。这些注解可优化界面交互和数据管理,为后续行为定义功能开发奠定基础。文章结构清晰,针对不同需求提供了具体的实现方案和代码示例。

DeveloperMrMeng的博客 694

【二分+乱搞】Codeforces 743E Vladik and cards

题面在这里发现子序列的长度是单调的,所以可以直接二分答案如果答案确定了,那么每个数字(1~8)(1\text{~}8)只能取⌊mid8⌋\lfloor \frac {mid} 8 \rfloor或⌊mid8⌋+1\lfloor \frac {mid} 8 \rfloor+1再8!8!暴力枚举一下8个数字出现的顺序然后直接乱搞就可以验证答案是否符合题意复杂度:由于加了很多剪枝,复杂度远小于O(nlog

linkfqy 666

AI 赋能 DBA:如何用 DeepSeek 等大模型简化数据库管理工作

数据库管理员(DBA)的工作涉及 SQL 优化、故障排查、性能监控等复杂任务。而 DeepSeek、ChatGPT 等大模型可以大幅减少重复劳动,提高 DBA 的工作效率。:某电商平台的订单查询 SQL 执行缓慢(平均 5s),DBA 需要优化。:DBA 需要监控 MySQL 的慢查询,但不想手动写脚本。:某金融系统频繁出现数据库死锁,DBA 需要快速定位原因。:大模型可分析 SQL 执行计划,推荐索引优化方案。:用日常语言查询数据库,无需写复杂 SQL。:一键生成监控、备份、数据迁移脚本。

专注于编程、AI、人工智能等多个领域内容研究和分析 564

【二分+状压dp】Codeforces Round #384 (Div. 2) E. Vladik and cards

【二分+状压dp】Codeforces Round #384 (Div. 2) E. Vladik and cards 【vj链接】 题目 Vladik was bored on his way home and decided to play the following game. He took n cards and put them in a row in front of hi...

xuziling_的博客 231

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Vladik and cards的题解,应该算比较详细的#_#

题目来源:Codeforces Round #384 (Div. 2)E.Vladik and cards 题意:给定一个长度为n的序列,对于序列中的每个数ai均有1&lt;=ai&lt;=8,要求在此序列中找出一个最长的子序列,其满足性质:1.对于任意数字i,j的出现次数ci,cj,均有|ci-cj|&lt;=1;2.对于任意数字k在此子序列中一旦出现,则必须连续。       注意:当某一...

qq_41034353的博客 424

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Codeforces Round #384 (Div. 2) E. Vladik and cards 状压dp

题目链接 http://codeforces.com/contest/743/problem/E 题面 Vladik was bored on his way home and decided to play the following game. He took n cards and put them in a row in front of himself. Every card ha...

c_czl的博客 158

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

E. Vladik and cards Codeforces Round #384 (Div. 2) 好题 二分+(贪心+状态压缩DP)判断

题意:给一串取值为1-8的序列,找出满足下列要求的最长子序列(不要求连续): 1.每个值出现的次数相差不超过1; 2.子序列中相同的值得出现在一起。 设满足要求的子序列数字出现次数至少为len。 性质: 1.子序列中出现次数至少为len,且有t个值出现len+1次,则长度为len*8+t; 2.若存在满足最少出现次数为len的子序列,则一定存在len-1的子序列(所有取值均丢掉一个即可

亂丟程式碼的天空 619

Codeforces Round #384 (Div. 2)E.Vladik and cards【二分+状压dp】

E. Vladik and cards time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vladik was bored on his way home and decided to p

mengxiang000000 1028

Codeforces Round #384 (Div. 2) E. Vladik and cards

E. Vladik and cards题意有n长的序列(仅有1~8),问满足下列条件的最长子序列长度: 对于任意i∈[1,8] , j∈[1,8]i \in [1,8] \ , \ j \in [1,8], ∣ci−cj∣≤1\mid c_i - c_j \mid \le 1 ,其中ckc_k表示数字k出现的次数 任意数字若出现,则必须连续。example: [1,1,2,2] 满足条件2,[1,

DorMOUSENone的博客 680

E. Vladik and cards 二分+状态压缩dp Codeforces Round #384 (Div. 2)

1、这个题被我以前做的题迷住了,总是把我的思路带偏其实这个就是一个简单的二分。 2、我们在定状态的时候会发现很多的量我们没有办法统计,如果长度定的话我们还是很好的统计的。 3、dp[i][j] : 转载于:https://www.cnblogs.com/Heilce/p/7406785.html...

anp53732的博客 146

Codeforces Round #384 (Div. 2) 734E Vladik and cards

E. Vladik and cards time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Vladik was bored on his way home and ...

weixin_30767835的博客 96

CF743E Vladik and cards

一、题目 点此看题 二、解法 答案具有单调性,所以可以先二分,假设二分出来xxx,每个数要选xxx个或者x+1x+1x+1个,由于只有888个数,可以考虑状压。设dp[i][s]dp[i][s]dp[i][s]为考虑到第iii位,已经选出来的数状压为sss的最大额外长度(有多少个是x+1x+1x+1类型的),转移就找到从当前位置开始选某个数x/x+1x/x+1x/x+1次,到达的位置转移即可,预先处理一个表示位置的vectorvectorvector #include <cstdio> #inc

C202044zxy的博客 236
上一篇: Codeforces Round #449 (Div. 1) A. Nephren gives a riddle 模拟.
下一篇: BZOJ 4300: 绝世好题 动态规划
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值