题目链接: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. 连接数据库报错的异常可以用mysqli_report来捕获

    有时候数据库密码改了或者数据库删了,就会有一个mysqli的链接报错,是因为直接使用了类似代码 $connection = new mysqli('127.0.0.1', 'test_user', ' ...

  2. python 3.7环境安装并使用csv

    因为调换需要,进了另外一个维护组,需要用python解析excel csv,所以就下载了一下他们需要的python3.7 如何做呢,看步骤 1.去官网 2.找版本 3.下源码 4.解压出来进入文件夹 ...

  3. Impala源代码分析(1)-Impala架构和RPC

    Leave a reply Impala总共分为3个组件:impalad, statestored, client/impala-shell.关于这三个组件的基本功能在这篇文章中已经介绍过了. Cli ...

  4. Win10多用户同时登陆

    1. 说明: (1)Win服务器版默认是支持多用户登陆的,甚至可以在主机上用不同用户自己远程登陆自己,如window server 2016. (2)Win10正常情况下是不允许用户同时远程的,即一个 ...

  5. k8s~service和deployment中的spec.selector

    service和deployment中的spec.selector 在 Kubernetes 中,Service 和 Deployment 的 spec.selector 在使用上是有一些不同之处的, ...

  6. 升级到 .NET Core 3.1

    微软升级的频率有点快,转眼 .NET Core 升级到 3.1 版了,这是一个长期支持版本,意味着 .NET Core 正式进入成熟期. 不过,对于开发人员来说,你的项目又需要迁移了. 升级项目文件 ...

  7. 金TECH频道|最近备受关注的应用重构,到底怎么做?

    "金TECH频道"旨在为您分享中电金信助力行业数字化转型的最新产品业务动态.技术观点洞察与应用实践案例.让我们在这里,与行业发展同频共振,共筑数字新基石. ​​

  8. C#中 CancellationTokenSource的妙用

    在.NET中,CancellationTokenSource.CancellationToken和Task是处理异步操作和取消任务的重要工具.本文将通过一些简单的例子,帮助你理解它们的用法和协作方式. ...

  9. 快速解决MySQL:Table xxx is marked as crashed and should be repaired五个办法

    查看MySQL错误日志看到 Table xxx  is marked as crashed and should be repaired 解决办法如下 第一种: 1.首先进入mysql命令台: mys ...

  10. Qt/C++编写手机版本视频播放器和Onvif工具(可云台和录像)

    一.前言 用Qt+ffmpeg写播放器很多人有疑问,为何不用Qt自己的多媒体框架来写,最重要的原因是Qt自带的目前都依赖具体的本地解码器,如果解码器不支持,那就是歇菜的,最多支持个MP4格式,而且在手 ...