本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!