abc-347

2024-04-02 17:36
文章标签 347 abc

本文主要是介绍abc-347,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


title: abc 347
date: 2024-04-01 01:57:25
tags: 比赛
categories: 赛后思考与总结

A

思路

能够被整除的就输出

代码

void solve()
{int n,k;cin >> n >> k;vector<int> vec;for(int i = 1; i <= n ; i ++){int x; cin >> x;if(x % k == 0) vec.push_back(x / k);}for(auto x : vec) cout << x << ' ';}

B

思路

用set存储每一个不同的子串,输出个数即可

代码

void solve()
{set<string> s;string str; cin >> str;for(int i = 0; i < str.size(); i ++){string t;for(int j = i; j < str.size(); j ++){t += str[j];//cout << t << endl;s.insert(t);}}cout << s.size() << endl;}

C

思路

我们只关心这些日子在一周内的相对位置,将位置排序我,然后两个相对日子的位置中间可以插入一个b,则输出 Yes。

代码

int c[N];void solve()
{int n,a,b;cin >> n >> a >> b;for(int i = 1; i <= n; i ++){	cin >> c[i];c[i] %= (a + b);}sort(c + 1,c + 1 + n);c[n + 1] = c[1] + a + b;for(int i = 2; i <= n + 1; i ++){//cout << c[i] << ' ';if(c[i] - c[i - 1] > b){cout << "Yes\n";return;}}cout << "No" << endl;}

D

思路

当x与y之和比目标数1的数量还要少,那一定是无解。异或是相同的为0不同的为1,那么我们在构造的时候,先将目标数位数为1的时候进行构造。当填完1的时候,剩余为0的部分,a 和 b的大小一定要相同,否则无法构造,则无解。最后在判断一下a 与 b是否都为0,否则无解,最后输出结果即可

代码

int c[N];void solve()
{int a,b;cin >> a >> b;ll n;cin >> n;int cnt = bpt(n);ll x = 0, y  = 0;if(a + b < cnt){cout << -1 << endl;return ;}for(int i = 0; i <= 60; i ++){if(n & (1ll << i)){if(a > b){a --;x += (1ll << i);}else if(b){b --;y += (1ll << i);}}}if(a != b){cout << -1 << endl;return;}for(int i = 0 ; i <= 60; i ++){if(a && b && !(n & (1ll << i))){a --,b --;x += (1ll << i);y += (1ll << i);}}if(a || b){cout << -1 << endl;return;}cout << x << ' ' << y << endl;
}

E

思路

朴素做法是,每一次操作将数组的值更新,这肯定超时。一个x在集合s当中做出的贡献是一段连续的区间,在这段出现然后删除的这段区间里,x的贡献值就是这个操作区间的前缀和。因此我们维护一个操作区间的前缀和,同时维护x何时放入的位置即可。

代码

void solve()
{int n,q;cin >> n >> q;vector<ll> ans(n + 1);vector<ll> pre;vector<int> lt(n);set<int> s;pre.push_back(0);for(int i = 1; i <= q;  i++){int x; cin >> x;if(s.count(x)){ans[x] += pre[i - 1] - pre[lt[x] - 1];s.erase(x);}else{s.insert(x);lt[x] = i;}pre.push_back(pre.back() + s.size());}for(auto i : s){ans[i] += pre[q] - pre[lt[i] - 1];}for(int i = 1; i <= n ; i ++ ) cout << ans[i] << ' ';
}

这篇关于abc-347的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/870621

相关文章

力扣第347题 前K个高频元素

前言 记录一下刷题历程 力扣第347题 前K个高频元素 前K个高频元素 原题目: 分析 我们首先使用哈希表来统计数字出现的频率,然后我们使用一个桶排序。我们首先定义一个长度为n+1的数组,对于下图这个示例就是长度为7的数组。为什么需要一个长度为n+1的数组呢?假如说总共有三个数字都为1,那么我们需要把这个1放在数组下标为3的位置,假如说数组长度为n,对于这个例子就是长度为3,那么它的

【Hot100】LeetCode—347. 前 K 个高频元素

目录 1- 思路自定义Node结点 + 哈希表实现 2- 实现⭐347. 前 K 个高频元素——题解思路 3- ACM实现 原题连接:347. 前 K 个高频元素 1- 思路 自定义Node结点 + 哈希表实现 ① 自定义 Node 结点: 自定义 Node 结点中有 value 和 cnt 字段,其中 value 为具体的数字,cnt 为具体的值实现 ① getCn

js中怎样对“abc”进行MD5、sha256哈希计算?

在 JavaScript 中,可以使用 CryptoJS 库来进行 MD5 哈希计算。首先,你需要在 HTML 文件中导入 CryptoJS 库,例如: <script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.9-1/crypto-js.min.js"></script> 然后,在 JavaScript 文件中,可

2024国赛数学建模ABC题思路模型

完整的思路模型请查看文末名片 完整的思路模型请查看文末名片 完整的思路模型请查看文末名片

【ZOJ】3881 From the ABC conjecture【暴力容斥】

传送门:【ZOJ】3881 From the ABC conjecture 复杂度大概 O(N0.67) O(N^{0.67}),我也不会算www,首先转换一下(我们是根据积性函数打表找规律得到的,也可以推出来)使得: g(N)=∏pi ϵ N(pia+1) g(N)=\prod_{pi~\epsilon ~N} (pi^a+1) 暴力展开发现贡献为: h(N)=

题解AtCoder ABC 358 F Easiest Maze

一道模拟题。 思路 最短的路线是直接竖着走下来,经过 n n n 个格子,所以 k k k 最小是 n n n。如果想要延长路线,可以采用九转大肠的形状,就像这样: 可以发现,每次向左走之后都必须走回来,所以每次新经过的格子数是偶数,得到 k − n k-n k−n 是偶数才有可行的方案。 首先,把整张图表的初始状态设为如下形式(即每个格点都是独立的): +++++S++o|o|o

面试算法题:三线程循环打印ABC

面试遇到三线程循环打印ABC的题目,当时没写出来,然后经过查阅,进行整理了一下。 1、题目 有A、B、C 三个线程,A线程 输出“A”,B线程 输出“B”,C线程 输出“C”,要求同时启动3个线程,按照顺序输出“ABC”,循环10次,请使用代码实现。 2、问题分析 A、B、C 三个线程;这表示我们要使用多线程同步,有人说了这不废话吗。是的,笔者只是想说,多线程的实现,有几种方式,①继承Th

[Algorithm][综合训练][小葱的01串][小红的ABC][不相邻取数]详细讲解

目录 1.小葱的01串1.题目链接2.算法原理详解 && 代码实现 2.小红的ABC1.题目链接2.算法原理详解 && 代码实现 3.不相邻取数1.题目链接2.算法原理详解 && 代码实现 1.小葱的01串 1.题目链接 小葱的01串 2.算法原理详解 && 代码实现 解法:滑动窗口 --> ⻓度固定的滑动窗⼝,要想符合要求,必定是⼀半⼀半的 选择区域的时候,仅需

ABC 368 G - Add and Multiply Queries

原题链接:G - Add and Multiply Queries 题意:给出数组a和b,三种操作,第一种:以 1 i x 的形式给出。用x替换ai​。第二种:以 2 i x 的形式给出。用x代替 bi​ 。第三种:以3 l r的形式给出,初始值为0,从l到r每个位置上可以选择加上a[i],或者乘上b[i],输出最大值。 思路:链表+set+树状数组+二分。题目中给出了答案的范围不会超过1e1

代码随想录算法训练营第十一天|150. 逆波兰表达式求值 、239. 滑动窗口最大值、347.前 K 个高频元素

Leetcode150. 逆波兰表达式求值 题目链接:150. 逆波兰表达式求值 C++: class Solution {public:int evalRPN(vector<string>& tokens) {stack<long long> st; for (int i = 0; i < tokens.size(); i++) {if (tokens[i] == "+" || toke