题目链接:Codeforces Round 998 (Div. 3)

总结:复建,Cwa两发,E读假题了。

A. Fibonacciness

tag:签到

Solution:简单模拟一下即可。

void solve(){
int a[5];
for (int i = 0; i < 5; i ++){
if (i == 2){
continue;
}
cin >> a[i];
}
a[2] = a[0] + a[1];
int ans = 0;
for (int i = 2; i < 5; i ++){
if (a[i] == a[i - 1] + a[i - 2])
ans ++;
else
continue;
}
a[2] = a[3] - a[1];
int ans2 = 0;
for (int i = 2; i < 5; i ++){
if (a[i] == a[i - 1] + a[i - 2])
ans2 ++;
else
continue;
}
cout << max(ans, ans2) << endl;
}

B. Farmer John's Card Game

tag:签到

Solution:显然需要按顺序一个人一个人递增的出牌,将每个人的牌排序以后,模拟出牌顺序,看是否能够满足。

void solve(){
int n, m;
cin >> n >> m;
vector<pii> ans(n); //
set<int> a[n]; for (int i = 0; i < n; i ++){
ans[i].se = i; // 每个人的位置
for (int j = 0; j < m; j ++){
int x;
cin >> x;
a[i].insert(x);
}
ans[i].fi = *(a[i].begin()); // 每个人最小的牌
} sort(ans.begin(), ans.end());
int t = 0;
for (int j = 0; j < m; j ++)
for (int i = 0; i < n; i ++){
if (*(a[ans[i].se].begin()) == t){
a[ans[i].se].erase(t);
t ++;
}
else{
cout << -1 << endl;
return;
}
} for (int i = 0; i < n; i ++){
cout << ans[i].se + 1 << " \n"[i + 1 == n];
}
}

C. Game of Mathletes

tag:思维

Solution:得分是固定的,只要有两个数能够加起来等于K,那么b就能得分。

void solve(){
int n, k;
cin >> n >> k;
vector<int> a(n); multiset<int> st;
for (int i = 0; i < n; i ++){
cin >> a[i];
st.insert(a[i]);
}
sort(a.begin(), a.end()); int ans = 0;
for (int i = 0; i < n; i ++){
if (st.size() == 0 || a[i] >= k)
break;
int b = k - a[i];
if (st.find(a[i]) != st.end() && st.find(b) != st.end()){
auto x = st.find(a[i]);
st.erase(x);
if (st.find(b) == st.end()){ // 当a == b时,避免RE
st.insert(a[i]);
continue;
}
auto y = st.find(b);
st.erase(y);
ans ++;
}
} cout << ans << endl;
}

D. Subtract Min Sort

tag:思维

Description:给定n个数,可以进行任意次操作,每次操作令\(a_i\)和\(a_{i + 1}\)同时减去\(min(a_i, a_{i +1})\)。问能否将原序列变为非递减序列。

Solution:从第一个数开始模拟,显然第一个数比第二个数大不行,否则我们让它们进行操作,则第一个数变为零,向后继续操作即可。

void solve(){
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; i ++){
cin >> a[i];
} for (int i = 1; i < n; i ++){
if (a[i - 1] > a[i]){
cout << "NO\n";
return;
}
a[i] -= a[i - 1];
} cout << "YES\n";
}

E. Graph Composition

tag:并查集

Description:给定两个无向图F和G,可以对F操作:

  • 在u,v之间建一条边。
  • 删除一条u,v之间的边。
  • 求最小操作次数,使得F中u,v之间有一条路径,当且仅当G中u,v之间有一条路径。

Solution:建两个并查集f和g,将g中的点进行合并,首先枚举F中的边,如果两点在g中不属于同一个并查集则将它们删除,否则在f中合并它们。然后枚举g中的边,如图两点在同一个并查集中,则在f中将它们合并,记录操作次数。

Competing:将图看成了连通图。

void solve(){
int n, m1, m2;
cin >> n >> m1 >> m2;
set<pii> a1, a2;
DSU f(n + 1), g(n + 1); for (int i = 0; i < m1; i ++){
int x, y;
cin >> x >> y;
if (x > y)
swap(x, y);
a1.insert({x, y});
} for (int i = 0; i < m2; i ++){
int x, y;
cin >> x >> y;
a2.insert({x, y});
g.merge(x, y);
} int ans = 0;
for (auto [x, y] : a1){
if (g.find(x) != g.find(y)){ // 必须删
ans ++;
}
else{
f.merge(x, y);
}
} for (auto [x, y] : a2){
if (g.find(x) == g.find(y)){
ans += f.merge(x, y);
}
}
cout << ans << endl; }

Codeforces Round 998 (Div. 3)的更多相关文章

  1. Codeforces Round #366 (Div. 2) ABC

    Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...

  2. Codeforces Round #354 (Div. 2) ABCD

    Codeforces Round #354 (Div. 2) Problems     # Name     A Nicholas and Permutation standard input/out ...

  3. Codeforces Round #368 (Div. 2)

    直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...

  4. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  5. Codeforces Round #279 (Div. 2) ABCDE

    Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems     # Name     A Team Olympiad standard input/outpu ...

  6. Codeforces Round #262 (Div. 2) 1003

    Codeforces Round #262 (Div. 2) 1003 C. Present time limit per test 2 seconds memory limit per test 2 ...

  7. Codeforces Round #262 (Div. 2) 1004

    Codeforces Round #262 (Div. 2) 1004 D. Little Victor and Set time limit per test 1 second memory lim ...

  8. Codeforces Round #371 (Div. 1)

    A: 题目大意: 在一个multiset中要求支持3种操作: 1.增加一个数 2.删去一个数 3.给出一个01序列,问multiset中有多少这样的数,把它的十进制表示中的奇数改成1,偶数改成0后和给 ...

  9. Codeforces Round #268 (Div. 2) ABCD

    CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...

  10. 贪心+模拟 Codeforces Round #288 (Div. 2) C. Anya and Ghosts

    题目传送门 /* 贪心 + 模拟:首先,如果蜡烛的燃烧时间小于最少需要点燃的蜡烛数一定是-1(蜡烛是1秒点一支), num[g[i]]记录每个鬼访问时已点燃的蜡烛数,若不够,tmp为还需要的蜡烛数, ...

随机推荐

  1. 『玩转Streamlit』--图像与媒体组件

    Streamlit中的图像与媒体组件,主要是st.image.st.audio和st.video. 它们是专为在Streamlit Web应用程序中嵌入和展示多媒体内容而设计的,这些组件不仅丰富了应用 ...

  2. 【实战问题】-- 布隆过滤器的三种实践:手写,Redission以及Guava(2)

    前面我们已经讲过布隆过滤器的原理[实战问题]-- 缓存穿透之布隆过滤器(1),都理解是这么运行的,那么一般我们使用布隆过滤器,是怎么去使用呢?如果自己去实现,又是怎么实现呢? 目录 布隆过滤器 手写布 ...

  3. kettle 简单使用

    概要 KETTLE 是一个ETL工具,它可以在不同的数据源之间进行数据的抽取转换.下面简单介绍一下他是如何使用的. 下载 https://nchc.dl.sourceforge.net/project ...

  4. 使用LOGSTASH 将数据导入到ES

    logstash 执行过程 input -->filter -->output filter 可以对数据进行处理 输出插件 codec plugin 使用脚本将数据导入到ES input ...

  5. Winform多线程持续读取PLC数据

    1.Winform窗体界面 2.后台代码 点击查看代码 using Modbus.Device; using System; using System.Collections.Generic; usi ...

  6. nvm安装node报错Get "https://nodejs.org/dist/latest/SHASUMS256.txt": dial tcp 104.20.23.46:443: i/o timeout

    windows上通过nvm管理node版本,在本地安装了nvm后,通过nvm安装node,报错了,信息: Could not retrieve https://nodejs.org/dist/late ...

  7. Docker安装开源版obs对象存储服务minio,并后台运行

    ​​>Minio 是一个基于Apache License v2.0开源协议的对象存储服务,虽然轻量,却拥有着不错的性能.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据. 例如 ...

  8. 鸿蒙应用开发从入门到入行 - 篇4:层叠布局、自定义组件、ForEach

    第四篇 - 层叠布局.自定义组件.ForEach循环生成组件 导读:在本篇文章里,您将掌握层叠布局.自定义组件的用法,特别是自定义组件将来的开发中必然会用,其中应该特别关注自定义组件的一些规范与装饰器 ...

  9. 有关IOS内存读写冲突

    有关IOS内存读写冲突 在写内存相关代码时,获取已使用内存代码中报错 let hostPort: mach_port_t = mach_host_self() var host_size = mach ...

  10. 4 步缩减 Script Evaluation Time

    4 步缩减脚本评估时间 (Script Evaluation Time) https://touch.marfeel.com/resources/blog/reduce-script-evaluati ...