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

WPF Multi-Touch 开发:Windows 安装多点触屏模拟器

瞬染赋涡前置芝士

动态规划 / DP

子集划分问题 / 可行性背包

思路

首先观察这个放书的性质。结论:对于在同一个书架上的书,只需要一个人去负责。

证明也比较简单,考虑某个人去放了这一排最远的(

最大的)书,那么它一定可以顺带放路上经过的所有的书。有了这个结论,就可以推出:在第

个书架放书的用时是固定的,就是:

那么这个问题转化成了:

为最大书架编号)个数字,把他划分成两组,求两组内部元素的和的最大值的最小值。

但是由于从一个书架移动到另一个还要花费时间,所以还有额外的代价。考虑去放书的时候移动一定是按照下标递增顺序的,同理,放完书回来也不用回头,所以下标一定单调递减。设第一组的总和为

,最大下标为

,第二组的总和为

,最大下标最大为

;则代价为

。你需要求这个代价的最小值。

上述第一个问题,是一个经典的“子集划分”问题。直接跑可行性背包加上 std::bitset 优化即可。

对于第二个问题,比较复杂,我们继续观察性质:注意到,由于这两组的并集是全集,所以

一定有一个是

这样,我们可以固定

,然后枚举,从

枚举

的值。接下来考虑如何做到

。由于

表示最大下标,所以任意

的下标都不能划分至第一组。

还是可行性背包,但是有了初始代价。

第一组初始代价是在书架之间走路所花费的

,则第二组的初始代价是在书架之间走路的代价

加上下标

的所有书架放书的代价:

;第二组的总初始代价为

这个时候再去跑可行性背包,使得两部分尽量平均即可。

Code

#include

using namespace std;

using ll = long long;

inline int read(){/*快读模板 略*/};

int cost[505];

bitset<250005> used;

void solve(){

for(int i=1;i<=500;i++) cost[i]=0;

int n=read(),m=0;

for(int i=1;i<=n;i++){

int r=read(),c=read();

cost[r]=max(cost[r],c);

m=max(m,r);

}

used.reset();

used.set(0);

int cnt=0,sum=0,ans=3e15;

for(int i=1;i<=m;i++) cost[i]*=2,sum+=cost[i];

for(int i=1;i

cnt+=cost[i];

used|=(used<

int a=m*2+sum-cnt,b=i*2;//a是第二组的初始代价,b是第一组的初始代价

if(cnt

ans=min(ans,a);//无法达到两个相等,直接取较大值

}else{

ans=min((int)(b+(cnt+a-b+1)/2+(used>>((cnt+a-b+1)/2))._Find_first()),ans);//可行性背包:寻找最接近平均值的数

ans=min((int)(a+(cnt-a+b+1)/2+(used>>((cnt-a+b+1)/2))._Find_first()),ans);

}

}

cout< <

}

main(){

int T=read();

while(T--) solve();

return 0;

}

http://www.jsqmd.com/news/454164/

相关文章:

  • Android整体印象
  • 2026厂房管道安装改造扩建公司哪家强?厂房管道安装工程专业公司推荐 - 品牌2026
  • rfid智能书柜排名 - 聚澜智能
  • 跑回归为什么平行趋势有些期自动Omit掉了
  • 如何在保障业务连续性的前提下实现 MySQL 负载的平滑平移?
  • 帝国cms部署https(ssl)后会员无法登录
  • Windows Azure Platform体验():SQL Azure
  • Java 程序员 和 .NET 程序员
  • 2026年超声波清洗机厂家深度测评:基于清洗效率与行业适配的五维对比。 - 品牌推荐
  • Windows Azure Platform体验():Windows Azure
  • 2026年 无机纤维喷涂厂家推荐排行榜:硬质/外墙/高铁机场/电梯井/地下室/车库顶板/厂房/矿物/超细无机纤维棉喷涂,专业防火隔音工程解决方案 - 品牌企业推荐师(官方)
  • C#会重蹈覆辙吗?系列之:华而不实的C#析构器
  • 2026年美国移民公司深度测评:基于法律合规与案例实效的五维对比分析 - 品牌推荐
  • 综述:编程语言的发展趋势及未来方向
  • 2026无纸化会议室会议系统优质品牌推荐榜 - 优质品牌商家
  • Windows上安装Go并配置环境变量(图文步骤)
  • 开发者必备:【Java】 设计模式从入门到精通
  • 2026 年贵州省变频器厂家优质推荐 本土实力企业甄选指南 - 深度智识库
  • 2026年高端智能语音机器人厂商盘点及智能语音应答机器人实力对比 - 品牌2026
  • 基于HFSS的宽带圆极化天线设计
  • [继续讨论]关于Windows PE和.net assembly的加载
  • 2026厂房无尘室洁净室工程改造扩建公司哪家强?厂房无尘室洁净室专业公司推荐 - 品牌2026
  • 浏览器自动化技术全景:Playwright + Midscene.js 核心原理与实战方案
  • WPF基础到企业应用系列——深入剖析依赖属性(WPF/Silverlight核心)
  • 我心目中的企业应用系统框架
  • 2026年 碟形弹簧/碟簧垫圈/不锈钢碟簧厂家推荐排行榜:精密弹性元件与耐高温叠簧的工业实力之选 - 品牌企业推荐师(官方)
  • DNP3设备数据 转 SNMP项目案例
  • 2026年全国降本增效咨询公司哪家优质?实力强劲服务落地赋能降本增收 - 深度智识库
  • 一致性Hash算法(KetamaHash)的c#实现
  • 【召集讨论】设计模式是语言表达能力低下的产物,is‘t it?