Codeforces Round #656 (Div. 3)题解

A.Three Pairwise Maximums

解题思路:

依照题意和样例,三个整数x,y,z必须有两个相同且都比第三个数大。

如果x==y则说明a为最大值,此时需要满足a>=z,如果不满足该条件,则无解,因为z=max(b,c),我们不能确定b,c谁比较大,所以我们就假设两个数一样的即可。而当y == z和x == z同理。

#include<bits/stdc++.h>
using namespace std;
int a[3];
int main() {
//freopen("in.txt", "r", stdin);
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
int t; cin >> t; while (t--) {
cin >> a[0] >> a[1] >> a[2];
sort(a, a + 3);
if (a[1] != a[2]) {
cout << "NO" << endl;
continue;
}
cout << "YES" << endl;
cout << a[0] << " " << a[0] << " " << a[2] << endl;
}
}

B.Restore the Permutation by Merger

题目说是相对顺序插入的,所以我们可以直接遍历来做。

#include<bits/stdc++.h>
using namespace std;
int t, n, a;
int main() {
//freopen("in.txt", "r", stdin);
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> t; while (t--) {
cin >> n; int b[55] = { 0 };
for (int i = 0; i < 2 * n; ++i) {
cin >> a;
if (!b[a])
cout << a << " ";
b[a]++;
}
cout << endl;
}
}

C.Make It Good

解题思路:

满足中间大两边小。

要找最长“好序列”,从后往前找,找到第一个不满足从后往前递增条件的元素,然后从这个元素往前找,找到开始升的那个元素就停止。最后答案就是n减去最长“好序列”长度。

#include<bits/stdc++.h>
using namespace std;
int a[200005];
int main()
{
int t;
cin >> t;
while (t--)
{
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> a[i];
int R = n;
while (a[R - 1] >= a[R] && R >= 1) R--;
while (a[R - 1] <= a[R] && R >= 1) R--;
int ans = R - 1;
if (ans == -1) ans = 0;
cout << ans << endl;
}
return 0;
}

D. a-Good String

解题思路:

暴力枚举,取最小值

#include<bits/stdc++.h>
using namespace std;
char a[131073];
int t, n;
int solve(int l,int r,char m) {
if (l == r) {
if (a[l] == m)return 0;
else return 1;
}
int mid = (l + r) >> 1, left = 0, right = 0,len = r - l + 1;
for (int i = l; i <= mid; ++i) if (a[i] == m)left++;
for (int i = mid + 1; i <= r; ++i) if (a[i] == m)right++;
int ans = min(len / 2 - left + solve(mid + 1, r, m + 1), len / 2 - right + solve(l, mid, m + 1));
return ans;
} int main() {
//freopen("in.txt", "r", stdin);
ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
cin >> t; while (t--) {
char m = 'a';
cin >> n;for(int i = 1;i <= n;++i){
cin >> a[i];
}
cout << solve(1, n, m) << endl;
}
}

E. Directing Edges

解题思路:

首先可以看出这是一道拓扑的题。但由于不太好维护得建图。建反方向的边,最后再拓扑排。但由于我太菜了,就没做出来。代码就放dalao们做的了。

#include<bits/stdc++.h>
using namespace std;
vector<int>e[200005];
int u[200005],v[200005];
int T,n,m;
int in[200005],tp[200005];
queue<int>q;
bool topsort(){
int ct=0,tmp=0;
for(int i=1;i<=n;i++) if(!in[i]) q.push(i),ct++,tp[i]=++tmp;
while(!q.empty()){
int U=q.front();q.pop();
for(int V:e[U]){
in[V]--;
if(!in[V]) q.push(V),ct++,tp[V]=++tmp;
}
}
return ct<n;
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);memset(in,0,sizeof(in));
for(int i=1;i<=n;i++) e[i].clear();
for(int o,i=1;i<=m;i++){
scanf("%d%d%d",&o,&u[i],&v[i]);
if(o) in[v[i]]++,e[u[i]].emplace_back(v[i]);
}if(topsort()) puts("NO");
else{
puts("YES");
for(int i=1;i<=m;i++)
if(tp[u[i]]<tp[v[i]]) printf("%d %d\n",u[i],v[i]);
else printf("%d %d\n",v[i],u[i]);
}
}return 0;
}

Codeforces Round #656 (Div. 3)部分题解的更多相关文章

  1. # Codeforces Round #529(Div.3)个人题解

    Codeforces Round #529(Div.3)个人题解 前言: 闲来无事补了前天的cf,想着最近刷题有点点怠惰,就直接一场cf一场cf的刷算了,以后的题解也都会以每场的形式写出来 A. Re ...

  2. Codeforces Round #557 (Div. 1) 简要题解

    Codeforces Round #557 (Div. 1) 简要题解 codeforces A. Hide and Seek 枚举起始位置\(a\),如果\(a\)未在序列中出现,则对答案有\(2\ ...

  3. Codeforces Round #540 (Div. 3) 部分题解

    Codeforces Round #540 (Div. 3) 题目链接:https://codeforces.com/contest/1118 题目太多啦,解释题意都花很多时间...还有事情要做,就选 ...

  4. Codeforces Round #538 (Div. 2) (A-E题解)

    Codeforces Round #538 (Div. 2) 题目链接:https://codeforces.com/contest/1114 A. Got Any Grapes? 题意: 有三个人, ...

  5. Codeforces Round #531 (Div. 3) ABCDEF题解

    Codeforces Round #531 (Div. 3) 题目总链接:https://codeforces.com/contest/1102 A. Integer Sequence Dividin ...

  6. Codeforces Round #527 (Div. 3) ABCDEF题解

    Codeforces Round #527 (Div. 3) 题解 题目总链接:https://codeforces.com/contest/1092 A. Uniform String 题意: 输入 ...

  7. Codeforces Round #499 (Div. 1)部分题解(B,C,D)

    Codeforces Round #499 (Div. 1) 这场本来想和同学一起打\(\rm virtual\ contest\)的,结果有事耽搁了,之后又陆陆续续写了些,就综合起来发一篇题解. B ...

  8. Codeforces Round #545 (Div. 1) 简要题解

    这里没有翻译 Codeforces Round #545 (Div. 1) T1 对于每行每列分别离散化,求出大于这个位置的数字的个数即可. # include <bits/stdc++.h&g ...

  9. Codeforces Round #624 (Div. 3)(题解)

    Codeforces Round #624 (Div.3) 题目地址:https://codeforces.ml/contest/1311 B题:WeirdSort 题意:给出含有n个元素的数组a,和 ...

  10. Codeforces Round #821(Div.2) (A-C) 题解

    Codeforces Round #821(Div.2) (A-C) A.Consecutive Sum 大致题意 给定一组共 n 个数据 ,如果俩个数的下标在 mod k 意义下同余,则可以交换a[ ...

随机推荐

  1. MySQL-防止误删除的方案就是删除,看不见岂不就是删除了吗,所以就是把它隐藏起来。

    版权声明:原创作品,谢绝转载!否则将追究法律责任. ----- 作者:kirin 伪删除: 用update替代delete 1.添加状态列 ALTER TABLE student2 ADD state ...

  2. 学会XPath,轻松抓取网页数据

    一.定义 XPath(XML Path Language)是一种用于在 XML 文档中定位和选择节点的语言.XPath的选择功能非常强大,可以通过简单的路径选择语法,选取文档中的任意节点或节点集.学会 ...

  3. #ifndef、#define、#ifdef等命令在C#中的应用

    1.#ifndef指令的理解 #ifndef是一个预处理指令,用于判断一个表示符是否被定义.如果该标识符未被定义,则执行条件编译中的代码块.否则,将跳过该代码块.下面是一个简单的粒子. 1 #ifnd ...

  4. Net 高级调试之一:开始认识一些调试工具

    当进行网络高级调试时,使用合适的工具可以帮助我们更深入地了解问题所在,并提供有效的解决方案.下面是一些常用的网络调试工具,以及它们的功能和用法. 1. Wireshark:Wireshark是一个流行 ...

  5. 最好用的oa办公系统?

    OA办公系统是一种集成办公自动化.协同办公.信息管理等功能于一体的软件系统,旨在提高办公效率,优化流程管理,提供更好的团队协作和信息共享.下面将详细介绍几个目前市场上认为较为优秀的OA办公系统. 一. ...

  6. springboot下添加全局异常处理和自定义异常处理

    前言 在spring项目中,优雅处理异常,好处是可以将系统产生的全部异常统一捕获处理,自定义的异常也由全局异常来捕获,如果涉及到validator参数校验器使用全局异常捕获也是较为方便. 相关代码: ...

  7. FolkMQ 内存型消息中间件,v1.0.21 发布

    简介 采用 "多路复用" + "内存运行" + "快照持久化" + "Broker 集群模式"(可选)+ 基于 Sock ...

  8. A Novel Cascade Binary Tagging Framework for Relational Triple Extraction(论文研读与复现)

    A Novel Cascade Binary Tagging Framework for Relational Triple Extraction Zhepei Wei,Jianlin Su, Yue ...

  9. 华企盾DSC手机app登录不上常见处理方法

    1.DSC服务器是否正常运行. 2.telnet外网是否通.(需要在程序与功能中添加telnet功能才能在cmd窗口用telnet命令 举例:telnet 172.17.2.20 5558) 3.其它 ...

  10. javacv图片美颜处理,视频美颜处理

    javacv图片美颜处理,视频美颜处理 国产剧明星演戏自带十级滤镜,是众所周知的秘密: 使用opencv也能实现一定的美颜效果: 一.图片美颜 代码 package top.lingkang.test ...