当前位置:网站首页>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 - Codeforceshttps://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 - Codeforceshttps://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;
}
边栏推荐
- [untitled] 2022 polymerization process analysis and polymerization process simulation examination
- 微服務入門:Gateway網關
- C, Numerical Recipes in C, solution of linear algebraic equations, Gauss Jordan elimination method, source code
- System disk expansion in virtual machine
- Put a lantern on the website during the Lantern Festival
- Developers really review CSDN question and answer function, and there are many improvements~
- Sort by item from the list within the list - C #
- @Role of pathvariable annotation
- deno debugger
- Turn: excellent managers focus not on mistakes, but on advantages
猜你喜欢
Turn: excellent managers focus not on mistakes, but on advantages
【性能測試】一文讀懂Jmeter
ctfshow web255 web 256 web257
[CV] Wu Enda machine learning course notes | Chapter 9
From scratch, use Jenkins to build and publish pipeline pipeline project
How college students choose suitable computers
What if the wireless network connection of the laptop is unavailable
What should I do if there is a problem with the graphics card screen on the computer
一文了解数据异常值检测方法
[attack and defense world | WP] cat
随机推荐
Take you to master the formatter of visual studio code
A method for detecting outliers of data
Developers really review CSDN question and answer function, and there are many improvements~
The right way to capture assertion failures in NUnit - C #
L1 regularization and L2 regularization
What if I forget the router password
小程序容器技术与物联网 IoT 可以碰撞出什么样的火花
【无标题】转发最小二乘法
1. Getting started with QT
What sparks can applet container technology collide with IOT
If the array values match each other, shuffle again - PHP
WordPress get_ Users() returns all users with comparison queries - PHP
go-zero微服务实战系列(九、极致优化秒杀性能)
Conversion of yolov5 XML dataset to VOC dataset
DM8 uses different databases to archive and recover after multiple failures
DM8 tablespace backup and recovery
[Chongqing Guangdong education] National Open University spring 2019 455 logistics practice reference questions
@Role of requestparam annotation
deno debugger
Figure guessing game