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

笔试——Day36

文章目录

  • 第一题
    • 题目
    • 思路
    • 代码
  • 第二题
    • 题目:
    • 思路
    • 代码
  • 第三题
    • 题目:
    • 思路
    • 代码

第一题

题目

提取不重复的整数

在这里插入图片描述

思路

模拟

使用哈希表统计当前数字出现的次数,当次数为1时,加入结果;

代码

#include <iostream>
#include <string>
using namespace std;string str;int main() 
{cin >> str;string res;int n = str.size();int hash[10] = {0};for(int i = n - 1; i >= 0; i--){hash[str[i] - '0']++;if(hash[str[i] - '0'] == 1) res += str[i];}cout << res << endl;return 0;
}
// 64 位输出请用 printf("%lld")

第二题

题目:

哈夫曼编码

在这里插入图片描述

思路

代码

#include <iostream>
#include <vector>
#include <queue>
using namespace std;
using LL = long long;
int main() 
{int n; cin >> n;priority_queue<LL, vector<LL>, greater<LL>> pq;for(int i = 0; i < n; i++){LL x; cin >> x;pq.push(x);}LL res = 0;while(pq.size() > 1){LL a = pq.top(); pq.pop();LL b = pq.top(); pq.pop();res += (a + b);pq.push(a + b);}cout << res << endl;return 0;
}
// 64 位输出请用 printf("%lld")

第三题

题目:

abb
在这里插入图片描述

思路

动态规划

  • 状态表示:dp[i]表示以i为结尾的所有子序列,有多少个abb形式的序列

  • 状态转移方程:

    • dp[i]:表示以第i个字符为结尾的所有abb形式子序列的数量
    • f[x]:表示截止到当前位置,以字符x结尾的 ab形式子序列的数量(即第一个字符与第二个字符x不同)
    • g[x]:表示截止到当前位置,字符x出现的总次数
  • 返回值:整张dp表的和

代码

#include <iostream>
#include <string>
using namespace std;const int N = 1e5 + 10;int f[26];  // f[x]表示以字符x结尾的"ab"形式子序列数量
int g[26];  // g[x]表示字符x出现的总次数
int dp[N];  // dp[i]表示以i为结尾的"abb"形式子序列数量int main() 
{int n = 0; cin >> n;string s; cin >> s;long long res = 0;  // 存储最终结果,使用long long避免溢出for(int i = 0; i < n; i++){int x = s[i] - 'a';  // 将字符转换为0-25的索引// 累加当前字符作为最后一个b时能形成的abb子序列数量res += f[x];// 更新以当前字符为结尾的ab子序列数量f[x] = f[x] + i - g[x];// 更新当前字符的出现次数g[x] = g[x] + 1;}cout << res << endl;return 0;
}
http://www.lryc.cn/news/618722.html

相关文章:

  • Unity-VR插件AutoHand
  • Day 10-2: Mini-GPT完整手写实战 - 从组件组装到文本生成的端到端实现
  • 武汉火影数字|VR红色文化馆打造 沉浸式体验红色文化
  • Coze开源 Agent 的“乐高时代”
  • 【19】万集科技——万集科技嵌入式,校招 一面,二面,面试问答记录
  • Java 编程每日一题:实现一个简易的 LRU 缓存
  • 站在Vue的角度,对比鸿蒙开发中的递归渲染
  • C++单继承虚函数表探索
  • 什么是跨域访问问题,如何解决?
  • 使用 rsync 上传下载文件:详解原理、目录同步和常见问题
  • 间隙锁(Gap Lock)
  • 【C++】5. 内存管理
  • 卫生间装修防水怎么做合适?
  • redis原理篇--Dict
  • 《Linux基础知识-1》
  • Linux随记(二十二)
  • Secure 第二天作业
  • SM2和SM4加密算法详解
  • 防火墙快速管理软件,66K超小巧
  • 【网络运维】Linux和自动化:Ansible
  • WEB虚拟主机3种部署方式全解析
  • Linux软件编程(三)文件操作-文件 I/O
  • Outstanding和Credit的概念详解
  • 动态路由协议(一)
  • 《Redis日志系统操作:LIST结构实现日志收集与查询》
  • 在线免VIP的动漫网站
  • 机器学习-集成学习(EnsembleLearning)
  • GitHub的简单使用方法----(4)
  • 为什么灰度图用G(绿色)通道?
  • CSRF 攻击