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

[题解]P12025 [USACO25OPEN] Sequence Construction S

P12025 [USACO25OPEN] Sequence Construction S

Ref:P12025 [USACO25OPEN] Sequence Construction S 题解 - Little_x_starTYJ

我们的构造要满足三个条件:

  • \(1\le N\le 100\)
  • \(\sum_i^N A_i=M\)
  • \(\bigoplus_i^N \text{popcount}(i)=K\)

异或和的条件不是很好看,考虑先解决它。

考虑紧贴下界(最小化和)进行构造,只需依次取出 \(K\) 的每个 lowbit \(x\),将 \(2^x-1\) 加入答案即可。

记此时的和还差 \(M'\)\(M\)

我们分类讨论一下:

  • \(M'<0\):最小化和的情况下仍不合法,所以无解。

  • \(M'=0\):已经合法。

  • \(M'=1\)

    • 若当前方案中存在 \(1\),则将这个 \(1\) 变成 \(2\)
    • 若当前方案中不存在 \(1\),则无解。
  • \(M'>1\)\(M'\) 为偶数:补两个 \(\dfrac{M'}{2}\)

  • \(M'>1\)\(M'\) 为奇数:先补 \(1,2\),再补两个 \(\dfrac{M'}{2}\)

这样构造序列长度的上界大概是 \(5+4=9\)

点击查看代码
#include<bits/stdc++.h>
#define eb emplace_back
using namespace std;
int t,m,k;
vector<int> ans;
inline int lb(int x){return x&-x;}
inline void output(){cout<<ans.size()<<"\n";for(int i:ans) cout<<i<<" ";cout<<"\n";
}
signed main(){cin>>t;while(t--){ans.clear();cin>>m>>k;for(int i=k;i;i-=lb(i)){int t=(1<<lb(i))-1;ans.eb(t);m-=t;}if(m<0) cout<<"-1\n";else if(m==0){output();}else if(m==1){bool flg=0;for(int& i:ans) if(i==1){i=2,flg=1;break;}if(flg) output();else cout<<"-1\n";}else if(m&1){ans.eb(1),ans.eb(2);m-=3;if(m) ans.eb(m/2),ans.eb(m/2);output();}else{ans.eb(m/2),ans.eb(m/2);output();}}return 0;
}
http://www.jsqmd.com/news/33508/

相关文章:

  • 【日记】我居然解决了三家运营商都没解决的问题(539 字)
  • 深入解析:Jackson 入门:为什么它是 Java JSON 处理的首选?
  • 大模型在流行性乙型脑炎极重型预测及个体化诊疗专业的方案中的应用研究
  • markdown入门(复盘)
  • 卡尔算法哈希表
  • Rust 之二 各组件工具的源码、构建、配置、使用 - 教程
  • java第三天
  • 新东方听力day2
  • P9596 [JOI Open 2018] 冒泡排序 2 做题记录
  • 超级管理员目录索引的Google搜索技巧
  • 被称作永恒之物 在交替更迭中徒劳地缝补 被称作易逝之物 书写了十四行啼哭
  • 无限欢愉 深入推进 我沦陷在那片故地 我渴饮着 你的呼吸 却得不到 你的心
  • 【学术】数论分块保姆级教程
  • 基础架构
  • 2025数据库审计产品选型指南:十大厂商综合评测与趋势解析
  • Word表格1.5倍行距居中问题
  • 详细介绍:后端_Redis 分布式锁实现指南
  • 构建AI智能体:五十七、LangGraph + Gradio:构建可视化AI工作流的趣味指南 - 教程
  • 日总结 23
  • 详细介绍:基于Echarts+HTML5可视化数据大屏展示-车辆综合管控平台
  • 基于ollama和streamlit的聊天机器人
  • CSP-S 2025 T2 [道路建设]
  • 使用Git钩子+ husky + lint语法检查提高前端项目代码质量
  • [题解]P10277 [USACO24OPEN] Bessies Interview S
  • 关于 Java快速查找详细
  • 什么是Ansible 清单 - 详解
  • 完整教程:如何用开源软件
  • 第一次团队项目作业
  • 隨機變量本質之最終闡述
  • 足式机器人适应多地形的方案