Educational Codeforces Round 65 (Rated for Div. 2)(ACD)B是交互题,不怎么会
A. Telephone Number
A telephone number is a sequence of exactly 11 digits, where the first digit is 8. For example, the sequence 80011223388 is a telephone number, but the sequences 70011223388 and 80000011223388 are not.
You are given a string ss of length nn, consisting of digits.
In one operation you can delete any character from string ss. For example, it is possible to obtain strings 112, 111 or 121 from string 1121.
You need to determine whether there is such a sequence of operations (possibly empty), after which the string ss becomes a telephone number.
The first line contains one integer tt (1≤t≤1001≤t≤100) — the number of test cases.
The first line of each test case contains one integer nn (1≤n≤1001≤n≤100) — the length of string ss.
The second line of each test case contains the string ss (|s|=n|s|=n) consisting of digits.
For each test print one line.
If there is a sequence of operations, after which ss becomes a telephone number, print YES.
Otherwise, print NO.
2
13
7818005553535
11
31415926535
YES
NO
In the first test case you need to delete the first and the third digits. Then the string 7818005553535 becomes 88005553535.
这个分一下是否满足11位,如果大于11位,只需要判断除去后10位前面是否有8即可
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<algorithm>
#include<vector> const int maxn=1e5+;
typedef long long ll;
using namespace std; int main()
{
int T;
cin>>T;
string str;
int n;
while(T--)
{
cin>>n;
cin>>str;
int len=str.length();
if(len>)
{
int flag=;
for(int t=len-;t>=;t--)
{
if(str[t]=='')
{
flag=;
break;
}
}
if(flag)
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
else if(len==)
{
if(str[]=='')
{
cout<<"YES"<<endl;
}
else
{
cout<<"NO"<<endl;
}
}
else
{
cout<<"NO"<<endl;
}
}
return ;
}
C. News Distribution
In some social network, there are nn users communicating with each other in mm groups of friends. Let's analyze the process of distributing some news between users.
Initially, some user xx receives the news from some source. Then he or she sends the news to his or her friends (two users are friends if there is at least one group such that both of them belong to this group). Friends continue sending the news to their friends, and so on. The process ends when there is no pair of friends such that one of them knows the news, and another one doesn't know.
For each user xx you have to determine what is the number of users that will know the news if initially only user xx starts distributing it.
The first line contains two integers nn and mm (1≤n,m≤5⋅1051≤n,m≤5⋅105) — the number of users and the number of groups of friends, respectively.
Then mm lines follow, each describing a group of friends. The ii-th line begins with integer kiki (0≤ki≤n0≤ki≤n) — the number of users in the ii-th group. Then kiki distinct integers follow, denoting the users belonging to the ii-th group.
It is guaranteed that ∑i=1mki≤5⋅105∑i=1mki≤5⋅105.
Print nn integers. The ii-th integer should be equal to the number of users that will know the news if user ii starts distributing it.
7 5
3 2 5 4
0
2 1 2
1 1
2 6 7
4 4 1 4 4 2 2
裸的并查集
代码:
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#include<map>
#include<cmath> const int maxn=5e5+;
typedef long long ll;
using namespace std;
int pre[maxn];
int find(int x)
{
if(x==pre[x])
{
return x;
}
else
{
return pre[x]=find(pre[x]);
}
}
void Merge(int x,int y)
{
int xx=find(x);
int yy=find(y);
if(xx!=yy)
{
pre[xx]=yy;
} }
int a[maxn];
int main()
{
int n,m;
cin>>n>>m;
int x;
for(int t=;t<=n;t++)
{
pre[t]=t;
}
int s1,s2;
for(int t=;t<m;t++)
{
scanf("%d",&x);
if(x!=)
scanf("%d",&s1);
for(int j=;j<x;j++)
{
scanf("%d",&s2);
Merge(s1,s2);
s1=s2;
}
} int ans=;
memset(a,,sizeof(a));
for(int t=;t<=n;t++)
{ a[find(t)]++;
}
for(int t=;t<=n;t++)
{
printf("%d ",a[find(t)]);
} return ;
}
2 seconds
256 megabytes
standard input
standard output
A string is called bracket sequence if it does not contain any characters other than "(" and ")". A bracket sequence is called regular(shortly, RBS) if it is possible to obtain correct arithmetic expression by inserting characters "+" and "1" into this sequence. For example, "", "(())" and "()()" are RBS and ")(" and "(()" are not.
We can see that each opening bracket in RBS is paired with some closing bracket, and, using this fact, we can define nesting depth of the RBS as maximum number of bracket pairs, such that the 22-nd pair lies inside the 11-st one, the 33-rd one — inside the 22-nd one and so on. For example, nesting depth of "" is 00, "()()()" is 11 and "()((())())" is 33.
Now, you are given RBS ss of even length nn. You should color each bracket of ss into one of two colors: red or blue. Bracket sequence rr, consisting only of red brackets, should be RBS, and bracket sequence, consisting only of blue brackets bb, should be RBS. Any of them can be empty. You are not allowed to reorder characters in ss, rr or bb. No brackets can be left uncolored.
Among all possible variants you should choose one that minimizes maximum of rr's and bb's nesting depth. If there are multiple solutions you can print any of them.
The first line contains an even integer nn (2≤n≤2⋅1052≤n≤2⋅105) — the length of RBS ss.
The second line contains regular bracket sequence ss (|s|=n|s|=n, si∈{si∈{"(", ")"}}).
Print single string tt of length nn consisting of "0"-s and "1"-s. If titi is equal to 0 then character sisi belongs to RBS rr, otherwise sisi belongs to bb.
2
()
11
4
(())
0101
10
((()())())
0110001111
In the first example one of optimal solutions is s=s= "()()". rr is empty and b=b= "()()". The answer is max(0,1)=1max(0,1)=1.
In the second example it's optimal to make s=s= "(())(())". r=b=r=b= "()()" and the answer is 11.
In the third example we can make s=s= "((()())())((()())())". r=r= "()()()()" and b=b= "(()())(()())" and the answer is 22.
思维,我们维护一下使得两个的深度尽可能的小,也就是当其中一个大的时候,就往另一个补,以此类推
代码:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#include<map>
#include<cmath>
const int maxn=2e5+;
typedef long long ll;
using namespace std;
char str[maxn];
int main()
{
int n;
cin>>n;
scanf("%s",str);
int s1=,s2=;
int a[maxn];
for(int t=;t<n;t++)
{
if(str[t]=='(')
{
if(s1<s2)
{
s1++;
a[t]=;
}
else
{
s2++;
a[t]=;
}
}
else
{
if(s1<s2)
{
s2--;
a[t]=;
}
else
{
s1--;
a[t]=;
}
}
}
for(int t=;t<n;t++)
{
printf("%d",a[t]);
}
return ;
}
Educational Codeforces Round 65 (Rated for Div. 2)(ACD)B是交互题,不怎么会的更多相关文章
- Educational Codeforces Round 65 (Rated for Div. 2)题解
Educational Codeforces Round 65 (Rated for Div. 2)题解 题目链接 A. Telephone Number 水题,代码如下: Code #include ...
- Educational Codeforces Round 71 (Rated for Div. 2)-E. XOR Guessing-交互题
Educational Codeforces Round 71 (Rated for Div. 2)-E. XOR Guessing-交互题 [Problem Description] 总共两次询 ...
- Educational Codeforces Round 65 (Rated for Div. 2) B. Lost Numbers
链接:https://codeforces.com/contest/1167/problem/B 题意: This is an interactive problem. Remember to flu ...
- Educational Codeforces Round 65 (Rated for Div. 2) D. Bicolored RBS
链接:https://codeforces.com/contest/1167/problem/D 题意: A string is called bracket sequence if it does ...
- Educational Codeforces Round 65 (Rated for Div. 2) C. News Distribution
链接:https://codeforces.com/contest/1167/problem/C 题意: In some social network, there are nn users comm ...
- Educational Codeforces Round 65 (Rated for Div. 2) A. Telephone Number
链接:https://codeforces.com/contest/1167/problem/A 题意: A telephone number is a sequence of exactly 11 ...
- Educational Codeforces Round 65 (Rated for Div. 2)B. Lost Numbers(交互)
This is an interactive problem. Remember to flush your output while communicating with the testing p ...
- [ Educational Codeforces Round 65 (Rated for Div. 2)][二分]
https://codeforc.es/contest/1167/problem/E E. Range Deleting time limit per test 2 seconds memory li ...
- Educational Codeforces Round 65 (Rated for Div. 2)
A:签到. #include<bits/stdc++.h> using namespace std; #define ll long long #define inf 1000000010 ...
随机推荐
- Windows-快速预览文件-QuickLook
开源.免费的文件快速预览工具, 支持图片.文档.音视频.代码文本.压缩包等多种格式. 获得 Mac OS 空格键快速预览文件相同的体验 效果图 文件夹 音视频 浏览 压缩包,文本 支持的格式: 图片: ...
- Flink中的window、watermark和ProcessFunction
一.Flink中的window 1,window简述 window 是一种切割无限数据为有限块进行处理的手段.Window 是无限数据流处理的核心,Window 将一个无限的 stream 拆分成有 ...
- tomcat启动失败的解决办法
初次安装tomcat启动失败的解决办法: 1.CATALINA_HOME C:\Program Files\apache-tomcat-8.5.242.path %CATALINA_HOME% ...
- 云原生数据库mysql对共享存储分布式文件系统的接口需求分析
1. 引言 云原生数据库跟分布式mpp数据库是有差异的,虽然两者都是计算与存储分离,但是在资源的占用上有所不同.云原生数据库是shard everything架构,其依赖的存储资源.内存资源.事务资源 ...
- JavaScript 实用方法
1.按时间显示问候语 2.强制光标停留位置 3.保存页面文本 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN& ...
- 【Redis】Redis开篇与如何安装单机版Redis,这次我会了!!
写在前面 很早之前,就有不少小伙伴微信留言说:冰河,你能不能写一个Redis专栏啊,我最近在学习Redis,看书看不下去,学习视频又觉得视频太长了,还是看你的文章比较给力!哈哈,原来我写的文章能够让小 ...
- 记一次mysql数据库被勒索(下)
背景: nextcloud的mysql数据库被黑,删库勒索.参考:记一次mysql数据库被勒索(上) mysql数据库恢复成功,nextcloud还是无法连接.参考:记一次mysql数据库被勒索(中) ...
- Virtuoso 中如何优化 Library Manager 的显示
https://www.cnblogs.com/yeungchie/ 主要从 cds.lib 文件去入手. 假设现在想把 Virtuoso 预装的库整理到 preload 分类(库)中. 首先创建一个 ...
- [NOIP2019] 划分
题目 题解 首先YY一个最简单的dp $dp[i][j]=min(dp[j][k]+(sum[i]-sum[j])^2 (sum[i]-sum[j]>=sum[j]-sum[k])$ $dp[i ...
- MySQL是如何实现事务的ACID
前言 最近在面试,有被问到,MySQL的InnoDB引擎是如何实现事务的,又或者说是如何实现ACID这几个特性的,当时没有答好,所以自己总结出来,记录一下. 事务的四大特性ACID 事务的四大特性AC ...