当前位置:网站首页>Codeforces Round #793 (Div. 2)(A-D)
Codeforces Round #793 (Div. 2)(A-D)
2022-07-04 08:39:00 【ccsu_ yuyuzi】
Catalog
A. Palindromic Indices
The question : Give you a palindrome string , You can delete a string , Ensure that this palindrome string is still a palindrome string , There are several ways to delete
Ideas : Just delete one of the same characters in the middle paragraph .
#include<map>
#include<cmath>
#include<set>
#include<queue>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_set>
#include<unordered_map>
#define int long long
using namespace std;
const int N =5e5+10,mod=998244353;
void solve()
{
int n;
string s;
cin>>n>>s;
int cnt=0;
if(s.size()%2==0)
{
int l=(s.size()-1)/2;
for(int i=l;i>=0;i--)
{
if(s[i]==s[l])
cnt++;
else
break;
}
cnt*=2;
}
else
{
int l=s.size()/2;
for(int i=l;i>=0;i--)
{
if(s[i]==s[l])
cnt++;
else
break;
}
cnt=cnt*2-1;
}
cout<<cnt<<"\n";
return ;
}
signed main()
{
int t;
cin>>t;
while(t--)
solve();
return 0;
}B. AND Sorting
Problem - B - Codeforces
https://codeforces.com/contest/1682/problem/B
The question : Give you an array , There is the original ascending array ( It was 0,1,2,3...n-1), There is one. x, When (a[i]&a[j])==x When , You can exchange , Asking when x When the maximum is, we can get the array given by the title from the original array .
Ideas : Must let x As a transfer station, you can exchange all the numbers in different positions , It is not in the original position of the digital phase & that will do :
#include<map>
#include<cmath>
#include<set>
#include<queue>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_set>
#include<unordered_map>
#define int long long
using namespace std;
const int N =5e5+10,mod=998244353;
void solve()
{
int n,x;
cin>>n;
int ans=-1;
for(int i=1;i<=n;i++)
{
cin>>x;
if(ans==-1&&x!=i-1)
{
ans=x;
}
else if(ans!=-1&&x!=i-1)
{
ans&=x;
}
}
cout<<ans<<"\n";
return ;
}
signed main()
{
int t;
cin>>t;
while(t--)
solve();
return 0;
}C. LIS or Reverse LIS?
The question : Give you an array , You can rearrange it after , Find the length of its positive strictly longest ascending subsequence and the length of its reverse strictly longest ascending subsequence . Take the minimum of both , Find the minimum value and the maximum value .
Ideas : We use it map Record the number of all array elements ,map The length of is the longest length in ascending order , Then we calculate that each element in this ascending sequence exceeds 2 Number of , Put them on the right , That is, the length of the inverse longest ascending subsequence , However, since the length of the forward longest ascending subsequence on the left may be greater than that of the reverse longest ascending subsequence on the right . We can appropriately move some numbers on the left to the right . for instance :
Array
1 1 1 2 3 4 4 4 4 4 4 5 6 6
After we operate , Put the longest ascending subsequence in reverse and forward on both sides :
1 2 3 4 5 6 6 4 1
At this time, the value of the result is 3, But we found that we can appropriately move some values on the left to the right , It becomes :
1 2 4 5 6 6 4 3 1
The answer can be obtained by the above operation
#include<map>
#include<cmath>
#include<set>
#include<queue>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_set>
#include<unordered_map>
using namespace std;
const int N =5e5+10,mod=998244353;
map<int,int>ma;
int a[200005];
void solve()
{
ma.clear();
int n,x;
cin>>n;
for(int i=1;i<=n;i++)
cin>>x,ma[x]++;
if(n==1)
{
cout<<"1\n";
return ;
}
int len1=ma.size(),len2=0;
for(auto &it:ma)
{
if(it.second>=2)
len2++;
}
int ans=(len1+len2+1)/2;
cout<<ans<<"\n";
return ;
}
signed main()
{
int t;
cin>>t;
while(t--)
solve();
return 0;
}D. Circular Spanning Tree
Problem - D - Codeforces
https://codeforces.com/contest/1682/problem/D
The question : Give you a string ,(0-n-1) Corresponding 1-n Parity of degrees of points , When the degree of the current point is odd , The character is expressed as '1', Instead of '0'. We need to construct a tree based on this string .
Ideas : First, rule out the impossible situation . We know that trees exist n-1 Edge adjustment , Then there must be even points with odd degrees , And the degree of these points should be greater than 0. In addition, direct output NO.
Then there is the construction of trees . We can take each point with odd degree as the head of a chain , Because there must be an even number of points with odd degrees , Then there must be an even number of chains , We connect the end of the chain directly ( All connected to the tail of the same chain , This can avoid cross ). In this way, each chain tail has its own degree 1, Then link odd points , Degrees must become even . Then it can be established .
#include<map>
#include<cmath>
#include<set>
#include<queue>
#include<string>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<unordered_set>
#include<unordered_map>
using namespace std;
vector<int>wei;
void solve()
{
wei.clear();
int n,st=0;
string s;
cin>>n>>s;
int cnt=0,len=s.size();
for(int i=0;i<len;i++)
{
if(s[i]=='1')
cnt++,st=i;
}
if(cnt<2||cnt%2==1)
{
cout<<"NO\n";
return ;
}
cout<<"YES\n";
for(int i=0;i<len;i++)
{
if(s[(st+i+1)%len]=='1')
{
wei.push_back((st+i)%len);
continue;
}
cout<<(st+i)%len+1<<" "<<(st+i+1)%len+1<<"\n";
}
for(int i=1;i<wei.size();i++)
{
cout<<wei[0]+1<<" "<<wei[i]+1<<"\n";
}
return ;
}
signed main()
{
int t;
cin>>t;
while(t--)
solve();
return 0;
}边栏推荐
- C # implements a queue in which everything can be sorted
- C#实现一个万物皆可排序的队列
- What if I forget the router password
- [test de performance] lire jmeter
- Li Kou today's question -1200 Minimum absolute difference
- 广和通高性能4G/5G无线模组解决方案全面推动高效、低碳智能电网
- @Role of pathvariable annotation
- Mouse over to change the transparency of web page image
- If the array values match each other, shuffle again - PHP
- Basic operations of databases and tables ----- view data tables
猜你喜欢

System disk expansion in virtual machine

Getting started with microservices: gateway gateway

How college students choose suitable computers

Take you to master the formatter of visual studio code

Azure ad domain service (II) configure azure file share disk sharing for machines in the domain service

Educational Codeforces Round 119 (Rated for Div. 2)

C, Numerical Recipes in C, solution of linear algebraic equations, Gauss Jordan elimination method, source code

DM8 tablespace backup and recovery

一文了解数据异常值检测方法

DM8 database recovery based on point in time
随机推荐
微服務入門:Gateway網關
Group programming ladder race - exercise set l1-006 continuity factor
Call Baidu map to display the current position
[untitled] 2022 polymerization process analysis and polymerization process simulation examination
埃氏筛+欧拉筛+区间筛
Azure ad domain service (II) configure azure file share disk sharing for machines in the domain service
Developers really review CSDN question and answer function, and there are many improvements~
FRP intranet penetration, reverse proxy
What does range mean in PHP
deno debugger
Take you to master the formatter of visual studio code
Codeforces Round #803 (Div. 2)(A-D)
Sort by item from the list within the list - C #
Put a lantern on the website during the Lantern Festival
AcWing 244. Enigmatic cow (tree array + binary search)
DM8 uses different databases to archive and recover after multiple failures
Four essential material websites for we media people to help you easily create popular models
ArcGIS application (XXII) ArcMap loading lidar Las format data
Laravel page load problem connection reset - PHP
力扣今日题-1200. 最小绝对差
https://codeforces.com/contest/1682/problem/A