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

笔试强训(十七)

文章目录

  • 活动安排
    • 题解
    • 代码
  • 哈夫曼编码
    • 题解
    • 代码
  • 奇数位丢弃
    • 题解
    • 代码

在这里插入图片描述

活动安排

题目链接
在这里插入图片描述

题解

1. 区间贪心 + 排序
2. 如果有重叠部分,每次选择右端点较小的,可以尽可能多的选择区间个数,如果没有重叠部分,选择下一个区间的右端点为基准,重复刚刚的操作

在这里插入图片描述

代码

#include <iostream>
#include<algorithm>
using namespace std;const int N = 2e5 + 10;
typedef pair<int,int> PII;
PII a[N];int main()
{int n;cin >> n;for(int i = 0;i < n;i++) cin >> a[i].first >> a[i].second;sort(a,a+n);int ret = 0,r = a[0].second;for(int i = 1;i < n;i++){// 有重叠if(a[i].first < r){r = min(r,a[i].second);}else // 没有重叠{ret++;r = a[i].second;}}// 未记录第一个区间所以加1cout << ret + 1 << '\n';return 0;
}

哈夫曼编码

题目链接
在这里插入图片描述

题解

1. 哈夫曼编码,利用字符出现的频次构建一个二叉树,每次选择频次最小的两个数构建二叉树,根据最优二叉树编码
2. 把题目中数出现的频次放入一个小根堆中,每次取两个数相加放入堆中,然后此时也计算最短长度,直到堆中仅剩一个元素时,得到最短长度

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

代码

#include <iostream>
#include<queue>
using namespace std;const int N = 2e5 + 10;
int a[N];int main()
{// 小根堆priority_queue<long long,vector<long long>,greater<long long>> pq;int n;cin >> n;for(int i = 0;i < n;i++){cin >> a[i];pq.push(a[i]);}long long count = 0;while(pq.size() != 1){long long a = pq.top();pq.pop();long long b = pq.top();pq.pop();count += a;count += b;pq.push(a + b);}cout << count << '\n';return 0;
}

奇数位丢弃

题目链接
在这里插入图片描述

题解

1. 找规律
2. 可以看出每次删除的第一个数是2^n - 1,
求2 ^ x - 1 <= n中x的最大值就是最后剩下的数

在这里插入图片描述

代码

#include <iostream>
#include<math.h>
using namespace std;int main()
{int n;while(cin >> n){int x = 0;long long ret = 1;while(ret <= n + 1){ret += pow(2,x);x++; }cout << pow(2,x-1) - 1 << '\n';}return 0;
}#include <iostream>
using namespace std;int main()
{int n;while(cin >> n){int ret = 1;while(ret - 1 <= n) ret *= 2;cout << ret / 2 - 1 << '\n';}return 0;
}
http://www.xdnf.cn/news/6055.html

相关文章:

  • 12.1寸工业液晶屏M121XGV20-N10显示单元技术档案
  • 126.在 Vue 3 中使用 OpenLayers 实现绘制正方形、正三角形、正五边形
  • 使用PHP对接日本股票市场数据
  • 数据工具:数据同步工具、数据血缘工具全解析
  • Doris重建ROUTINE任务过程
  • vue3实现与不同的界面跳转【路由 vue-router】
  • WebGL入门:光照原理
  • binlog日志以及MySQL的数据同步
  • 项目三 - 任务5:清洗网址中垃圾字符
  • 电池自动点焊机:多领域电池制造的核心设备
  • UE5中制作动态数字Decal
  • ES6 语法
  • Rust 环境变量管理秘籍:从菜鸟到老鸟都爱的 dotenv 教程
  • Visual studio 打包方法
  • 计算机系统----软考中级软件设计师(自用学习笔记)
  • Biba安全模型详解:守护信息系统完整性的基石
  • 加速度策略思路
  • SwarmUI 基于.NET开发的开源AI图像生成WEB用户界面系统
  • git-gui界面汉化
  • 【3-2】HDLC
  • 详解注意力机制
  • Linux文件编程——读写结构体、链表等其他类型的数据
  • 9.9 Ollama私有化部署Mistral 7B全指南:命令行交互到API集成全流程解析
  • 格雷希尔G10和G15系列自动化快速密封连接器,适用于哪些管件的密封,以及它们相关的特性有哪些?
  • 参考UTD的上市公司供应链信息数据库(2017-2022)
  • 深度学习模型在目标检测任务中的前向传播(forward)和反向传播(backward)过程
  • 基于STM32、HAL库的TLV320AIC3101IRHBR音频接口芯片驱动程序设计
  • NovaMSS v1.40音乐源分离工具,一键提取伴奏人声贝斯鼓点分离音轨等
  • 交流充电桩IEC 61851-1和IEC 61851-21-2标准测试项目
  • Deno、Bun、Node.js 性能对比与选型指南