题解2023.5.21

news/2025/2/21 8:32:03/

B. Diverse Substrings 
思路:直接枚举超时,数的种类为0-9,所以对于每个位置只需往后延伸100位即可,超过100位必重复
 

#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>#include<vector>
#define ms(x,y) memset(x,y,sizeof x)
#define fu(i,a,b) for(int i=a;i<=b;i ++ )
#define fd(i,a,b) for(int i=a;i>=b;i -- )
#define int long long 
const int maxn=2e5+10,INF = 0x3f3f3f3f ; 
using namespace std;
int a[maxn];int i,j,k;void solve() {int n; string s;cin >> n >> s;int ans = 0;for (int i = 0; i < n; i++) {vector<int> cnt(10);int Max = 0, sum = 0;for (int j = i; j < min(n, i + 100); j++) {if (++cnt[s[j] - '0'] == 1)sum++;Max = max(Max, cnt[s[j] - '0']);if (sum >= Max) ans++;}}cout << ans << endl;}
signed main()
{ios::sync_with_stdio(false);int t;cin >> t;while (t--) {solve();}}

B - Tying Rope 
思路:vector二维数组存图,对于相连的全部度数为2则形成循环,否则不
 

#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#define int long long 
const int maxn = 2e5 + 10;
using namespace std;
bool vis[maxn];
int d[maxn];
void solve() {int n, m;cin >> n >> m;vector<vector<int>>a(n + 1, vector<int>());for (int i = 1; i <= m; i++) {int u, v;char c1, c2;cin >> u >> c1 >> v >> c2;a[u].push_back(v);a[v].push_back(u);d[u]++, d[v]++;}memset(vis, 0, sizeof vis);int x = 0, y = 0;for (int i = 1; i <= n; i++) {if (!vis[i]) {queue<int> q;q.push(i);bool flag = 0;vis[i] = true;while (!q.empty()) {int qu = q.front();q.pop();if (d[qu] != 2)flag = 1;for (auto z : a[qu]) {if (!vis[z]) {q.push(z);vis[z] = true;}}}if (!flag)x++;elsey++;}}cout << x << ' ' << y << '\n';
}
signed main()
{ios::sync_with_stdio(false);solve();
}

B. Restore the Weather
思路1:最优策略(与k无关)为:排序为a,b均从小到大排序,根据a位置输出b位置,采用结构体排序

#include<bits/stdc++.h>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#define int long long 
const int maxn=2e5+10; 
using namespace std;
int b[maxn];
struct node {int x;int y;
}a[maxn];
bool cmp(node A,node B) {return A.y < B.y;
}
bool cmp1(node A, node B) {return A.x < B.x;
}void solve(){int n, k;cin >> n >> k;for (int i = 1; i <= n; i++) {a[i].x = i;cin >> a[i].y;}for (int j = 1; j <= n; j++) {cin >> b[j];}sort(b + 1, b + 1 + n);sort(a + 1, a + 1 + n, cmp);for (int i = 1; i <= n; i++) {a[i].y = b[i];}sort(a + 1, a + 1 + n, cmp1);for (int i = 1; i <= n; i++) {cout << a[i].y << ' ';}cout << '\n';}
signed main()
{ios::sync_with_stdio(false);int t;cin >> t;while (t--) {solve();}
}

G. Hits Different
采用dp,dp公式 dp[i][j]=k*k+dp[i-1][j]+dp[i-1][j-1]-(重复部分)dp[i-2][j-1]

#include<iostream>
#include<algorithm>
#include<cstring>
#define int long long
using namespace std;
const int maxn = 1e6 + 10;
int dp[3000][3000]; 
int a[maxn];
void solve() {int n;cin >> n;cout << a[n] << '\n';}
void init() {dp[1][1] = 1;a[1] = 1;int k = 2;for (int i = 2; i <= 3000; i++) {for (int j = 1; j <= i && k <= 1000000; j++, k++) {dp[i][j] = k * k + dp[i - 1][j] + dp[i - 1][j - 1] - dp[i - 2][j - 1];a[k] = dp[i][j];}}
}
signed main()
{ios::sync_with_stdio(false);init();int t;cin >> t;while (t--) {solve();}
}

C.Zero - Sum Prefixes
思路:无论前面怎么操作,前缀和在这个位置保持一致
 最优操作把出现0位置后前缀和值出现最多的次数变成0,统计相加,最后加上第一个0前面前缀和为0个数

#pragma GCC optimize(2)
#pragma GCC optimize(3)
#pragma GCC optimize(fast) 
#include<iostream>
#include<algorithm>
#include<map>
#include<set>
#include<queue>
#include<cstring>
#include<math.h>
#include<map>
#include<vector>
#define ms(x,y) memset(x,y,sizeof x)
#define int long long 
const int maxn = 2e5 + 10, INF = 0x3f3f3f3f;
using namespace std;
int a[maxn], b[maxn];
int i;
void solve() {int n;cin >> n;int ans = 0;vector<int>v;for (int i = 1; i <= n; i++) {cin >> a[i];b[i] = a[i] + b[i - 1];if (a[i] == 0) {v.push_back(i);}}v.push_back(n + 1);map<int, int>cnt;for (int i = 1; i < v.size(); i++) {int Max = 0;cnt.clear();for (int j = v[i-1]; j < v[i]; j++) {cnt[b[j]]++;Max = max(Max, cnt[b[j]]);}ans += Max;}for (int i = 1; i < v[0]; i++) {if (b[i] == 0) {ans++;}}cout << ans << '\n';
}
signed main()
{ios::sync_with_stdio(false);int t;cin >> t;while (t--) {solve();}
}


lower_bound() 函数用于在指定区域内查找不小于目标值的第一个元素。
c++语言中,multiset是<set>库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,
而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数。(可搭配erase,lower_bount使用)
自定义排序bool cmp(类型 A,类型 B){};


http://www.ppmy.cn/news/87228.html

相关文章

Leetcode 1679. K 和数对的最大数目 双指针法

https://leetcode.cn/problems/max-number-of-k-sum-pairs/ 给你一个整数数组 nums 和一个整数 k 。 每一步操作中&#xff0c;你需要从数组中选出和为 k 的两个整数&#xff0c;并将它们移出数组。 返回你可以对数组执行的最大操作数。 示例 1&#xff1a; 输入&#xff1…

路由守卫

// 路由守卫 router.beforeEach((to, from,next) > { // 去哪里 console.log(to) // 从那来 console.log(from) // 继续执行的操作----next 不执行next哪里都进不去&#xff01;&#xff01;&#xff01; // next()-----网页正常跳转 // next(‘/’)–next中的参数是要跳转的…

Python对大量表格文件加以数据截取、逐行求差、跨文件合并等处理的方法

本文介绍基于Python语言&#xff0c;针对一个文件夹下大量的Excel表格文件&#xff0c;基于其中每一个文件&#xff0c;首先依据某一列数据的特征截取我们需要的数据&#xff0c;随后对截取出来的数据逐行求差&#xff0c;并基于其他多个文件夹中同样大量的Excel表格文件&#…

ChatGPT无限可能性:自然语言生成的奥秘

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; ChatGPT无限可能性&#xff1a;自然语言生成的奥秘 数字化时代&#xff1a;跨越语言和文化障碍 冰岛是北大西洋中部的一个岛国&#xff0c;拥有充满活力的科技产业和…

浅浅谈谈ssm的那些事儿外加AOP和DI+DAO思想的理解和处理json数据的第三方工具

MyBatis 一级缓存 默认是打开的 SqlSession级别的缓存&#xff0c;同一个SqlSession的发起多次同构查询&#xff0c;会将数据保存在一级缓存中。 在sqlsession 中有一个数据结构 是map 结构&#xff0c; 这个区域就是一级缓存区域&#xff0c;一级缓存区域中的 key 是由 sql 语…

【遥感图像】目标检测系列.1

目录 Unsupervised Domain Adaptation for Cloud Detection Based on Grouped Features Alignment and Entropy Minimization, TGRS2022 Semi-Supervised Cloud Detection in Satellite Images by Considering the Domain Shift Problem, RS2022 CoF-Net: A Progressive Coa…

非线性系统的线性化与泰勒级数

线性系统与非线性系统的区别 我们在读论文的时候经常会遇到这两个系统&#xff0c;线性系统与非线性系统&#xff0c;这两者之间有什么区别呢&#xff1f; 线性指量与量之间按比例、成直线的关系&#xff0c;在空间和时间上代表规则和光滑的运动&#xff1b;非线性则指不按比…

每日三问-前端(第九期)

2023年5月25日 先来回顾一下昨天的面试题及答案&#xff1a; 问题1&#xff1a;你有没有遇到过令人困惑的 CSS 布局问题&#xff1f;如果有&#xff0c;请分享一个例子&#xff0c;并解释你是如何解决的 对于令人困惑的 CSS 布局问题&#xff0c;例如水平居中元素或自适应布局&…