Codeforces Round 979 (Div. 2)

embedded/2024/10/21 9:21:17/

A. A Gift From Orangutan

题意:

思路: 贪心 + 模拟

 重新排列的数组 -> 最大的元素放第一个位置 ,最小的元素放第二个位置

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ( x & -x )#define int long long
typedef long long ll;
typedef pair<int, int> pii;void solve()
{int n; cin >> n;vector<int> a(n + 1);for( int i = 1 ; i <= n ; i++) cin >> a[i];sort( a.begin() + 1 , a.end() );swap( a[1] , a[n] );swap( a[2] , a[n] );vector<int> b(n + 1) , c(n + 1); b[0] = 2e18;int sum = 0;for( int i = 1 ; i <= n ;i++){c[i] = max( c[i-1] , a[i] );b[i] = min( b[i-1] , a[i] );sum += c[i] - b[i];}cout << sum << endl;
}
signed main()
{int tt = 1;cin >> tt;while (tt--)solve();return 0;
}

B. Minimise Oneness

题意:

思路:构造题

一般构造题都是按照某种规律来做的 -> 关键是找规律

我的方法是先看样列,如果不能看出规律,就在手搓样例(都试几组),继续看,如果还不能,就只能猜了

我是通过手搓 n = 4发现规律的

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ( x & -x )#define int long long
typedef long long ll;
typedef pair<int, int> pii;
void insert(vector<vector<int>>& f, int x1, int y1, int x2, int y2, int c) // 二维差分模版
{f[x1][y1] += c;f[x2 + 1][y1] -= c;f[x1][y2 + 1] -= c;f[x2 + 1][y2 + 1] += c;
}
int count_binary( int x , int k ) // 返回的是 0 ~ x 中二进制第 j 位为 1 的个数
{int y = 1ll << ( k + 1 );x++;int ans = x / y * ( y / 2 );x %= y; x -= y / 2;if( x > 0 ) ans += x;return ans;
}
int qmi(int a, int b, int mod) // 快速幂模版
{int res = 1;while (b){if (b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}
bool is_prime(int n) // 判断素数模版
{if (n < 2)return false;for (int i = 2; i <= n / i; i++){if (n % i == 0)return false;}return true;
}
int gcd( int a , int b )
{return b ? gcd( b , a % b ) : a;
}
int lcm( int a , int b )
{return a * b / gcd( a , b );
}
void solve()
{int n; cin >> n;string s; for( int i = 1 ; i <= n ; i++ ) {if( i == 1 ) s += '1';else s += '0';}cout << s << endl;
}
signed main()
{int tt = 1;cin >> tt;while (tt--)solve();return 0;
}

C. A TRUE Battle

题意:

 思路:结论题

如果首尾 有 '1'  -> true

如果 有两个连续的 '1' -> true

否则 -> false

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) ( x & -x )#define int long long
typedef long long ll;
typedef pair<int, int> pii;
void insert(vector<vector<int>>& f, int x1, int y1, int x2, int y2, int c) // 二维差分模版
{f[x1][y1] += c;f[x2 + 1][y1] -= c;f[x1][y2 + 1] -= c;f[x2 + 1][y2 + 1] += c;
}
int count_binary( int x , int k ) // 返回的是 0 ~ x 中二进制第 j 位为 1 的个数
{int y = 1ll << ( k + 1 );x++;int ans = x / y * ( y / 2 );x %= y; x -= y / 2;if( x > 0 ) ans += x;return ans;
}
int qmi(int a, int b, int mod) // 快速幂模版
{int res = 1;while (b){if (b & 1) res = res * a % mod;a = a * a % mod;b >>= 1;}return res;
}
bool is_prime(int n) // 判断素数模版
{if (n < 2)return false;for (int i = 2; i <= n / i; i++){if (n % i == 0)return false;}return true;
}
int gcd( int a , int b )
{return b ? gcd( b , a % b ) : a;
}
int lcm( int a , int b )
{return a * b / gcd( a , b );
}
void solve()
{int n; cin >> n;string s; cin >> s;if( s[0] == '1' || s[n-1] == '1' ){puts("YES");  return;}for( int i = 1 ; i < n ; i++ ){if( s[i] == '1' && s[i-1] == '1' ){puts("YES");  return;}}puts("NO");
}
signed main()
{int tt = 1;cin >> tt;while (tt--)solve();return 0;
}

 D. QED's Favorite Permutation

题意:

思路:(类似于并查集)

首先观察字符串 ,如果相邻的两个字符分别是 'L' 和 'R',则一定不能交换 (就属于两个集合) 

通过改变,可以使他们变为一个集合,于是可以交换

#include<bits/stdc++.h>
using namespace std;
#define int long long
void solve()
{int n , q;cin >> n >> q;vector<int> a( n + 1 ) , am( n + 1 );for( int i = 1 ; i <= n ; i++ ) cin >> a[i];for( int i = 1 ; i <= n ; i++ ) am[i] = max( am[i-1] , a[i] );// am数组在这里类似于 并查集中的parent string s; cin >> s;s = " " + s + " ";int cnt = 0;for( int i = 2 ; i <= n ; i++ ){if( s[i-1] == 'L' && s[i] == 'R' ){if( am[i - 1] != i - 1 )cnt++; // 属于两个集合,cnt++;}}while(q--){int x; cin >> x;if( s[x] == 'L' ){if( s[x + 1] == 'R' && am[x] != x ) cnt--; // 合并两个集合if( s[x - 1] == 'L' && am[x - 1] != x - 1 ) cnt++; // 拆成两个集合s[x] = 'R';}else{if( s[x - 1] == 'L' && am[x - 1] != x - 1 )cnt--;if( s[x + 1] == 'R' && am[x] != x )cnt++;s[x] = 'L';}if(cnt)puts("NO");else puts("YES");}
}
signed main()
{int tt; cin >> tt;while(tt--)solve();return 0;
}


http://www.ppmy.cn/embedded/129231.html

相关文章

AI学习指南深度学习篇-自编码器的python实践

AI学习指南深度学习篇 - 自编码器的Python实践 自编码器是一种无监督学习算法&#xff0c;通常用于数据降维、特征学习和图像重构。它通过将输入数据编码成一个紧凑的表示方式&#xff0c;然后再将其解码回原始数据。本文将深入探讨自编码器的原理&#xff0c;并提供在Python中…

近似推断 - 引言篇

前言 在人工智能的浩瀚领域中&#xff0c;深度学习如同一颗璀璨的明星&#xff0c;引领着技术的前沿。作为其核心组成部分&#xff0c;近似推断在深度学习的模型训练与预测中扮演着至关重要的角色。近似推断&#xff0c;简而言之&#xff0c;是在面对复杂、高维的概率模型时&a…

使用ROS一键部署LNMP环境

LNMP是目前主流的网站服务器架构之一&#xff0c;适合运行大型和高并发的网站应用&#xff0c;例如电子商务网站、社交网络、内容管理系统等。LNMP分别代表Linux、Nginx、MySQL和PHP。本文介绍如何使用阿里云资源编排服务&#xff08;ROS&#xff09;一键部署LNMP环境。 前提条…

ReactOS系统中搜索给定长度的空间地址区间中的二叉树

搜索给定长度的空间地址区间 //搜索给定长度的空间地址区间 MmFindGapTopDown PVOID NTAPI MmFindGap(PMADDRESS_SPACE AddressSpace,ULONG_PTR Length,ULONG_PTR Granularity,BOOLEAN TopDown );PMADDRESS_SPACE AddressSpace,//该进程用户空间 ULONG_PTR Length,//寻找的空…

基于Neo4j的水稻病虫害问答系统

你是否在寻找一个兼具技术深度和应用价值的毕业设计&#xff1f;那你千万别错过这个基于Neo4j的水稻病虫害问答系统&#xff01; 这款项目利用了前沿的知识图谱技术&#xff0c;在Neo4j图数据库和Django框架的双重保障下&#xff0c;为用户提供了一个针对水稻病虫害的知识问答…

二、Linux 入门教程:开启大数据领域的神奇之旅

Linux 入门教程&#xff1a;开启大数据领域的神奇之旅 在当今这个飞速发展的数字化时代&#xff0c;大数据所具有的重要性正日益凸显出来。而 Linux 作为一种极为强大的操作系统&#xff0c;在大数据这一广阔的领域当中发挥着至关重要、不可或缺的关键作用。倘若你怀有涉足大数…

[ElasticSearch]分析京东商城商品搜索实现|聚合|全文查找|搜索引擎|ES Java High Level Rest Client|ES Java API Client

文章目录 背景Elasticsearch 背景介绍Elasticsearch 在商城搜索中的应用 Elasticsearch版本选择Elasticsearch环境搭建京东商城搜索页面搜索显示器上部分聚合结果&#xff0c;下部分是商品列表限制搜索100页&#xff0c;一页50个商品&#xff0c;允许跳页 搜索大床上部分聚合结…

uni-app写的微信小程序如何体积太大如何处理

方法一&#xff1a;对主包进行分包处理&#xff0c;将使用url: /pages/components/equipment/equipment跳转页面的全部拆分为分包&#xff0c;如url: /pagesS/components/equipment/equipment 在pages.json中添加 "subPackages": [{ "root"…