C

题意

给定一个合法的括号序列,如果区间【l, r】之间是一个合法序列,那么就在l, r之间连一条边 问最后有几个连通块

思路

相邻的两个括号并不会使答案+2,只有嵌套的括号才能使答案增加,而嵌套的括号结尾必然是’))'我们只需要维护‘)’的连续出现次数,如果大于1则增加答案

代码实现

void solve()
{int n;cin >> n;string s;cin >> s;int res = 0;int cnt = 0;for (int  i = 0 ; i < s.size(); i ++){if (s[i] == '('){if(cnt)res += cnt - 1;cnt = 0;}else cnt ++;}cout << res + cnt << endl;
}

D

题意

给定n个点,m条边 m<= n + 2且给定的图联通无重边 选择一些边为red , 一些边为blue
请问边选定后,能使两个图的得到最小连通块的方案是什么,(打印任意)

思路

根据最小生成树kruskal的推论,一条边可以减少一个连通块,那么我们最好的操作就是求一个最小生成树,那么还有一个小问题,就是剩下的三条边可能是个环,这样答案不是最佳。解决方案是判断剩下的三条边如果是环,我们任意将环上一边变成另一种颜色,在将这边上的某一点的所有边的零一点全变色, 这样能构造出一个没有环的图

代码实现

#include<bits/stdc++.h>
#define x first
#define y second
#define int long long
#define endl '\n'
using namespace std;
typedef pair<int, int> PII;
typedef long long LL;
const int N = 2e5 + 10, mod = 1e9 + 7, INF = 1e9;
PII seg[N];
int p[N];
char ans[N];
int find (int x)
{if (p[x] != x) p[x] = find (p[x]);return p[x];
}
void solve()
{int n, m;cin >> n >> m;for (int i = 1 ; i <= m ; i ++){int l, r;cin >> l >> r;seg[i] = {l, r};}vector<int> red;vector<vector<pair<int, int>>> g (n + 2);for (int i = 1 ; i <= n ; i ++) p[i] = i;for (int i = 1 ; i <= m ; i ++){int l = seg[i].x, r = seg[i].y;if (find (l) != find (r)){ans[i] = '1';p[find(l)] = find (r);g[l].push_back ({r, i});g[r].push_back ({l, i});}else ans[i] = '0', red.push_back (i);}if (m == n + 2){set<int> S;for (auto x : red)S.insert (seg[x].first), S.insert (seg[x].second);if (S.size() == 3){ans[red[0]] = '1';int p = seg[red[0]].x;for (auto [u, id] : g[p]) ans[id] = '0';}}for (int i = 1 ; i <= m ; i ++)cout << ans[i];cout << endl;
}
signed main()
{// freopen("data.in","r",stdin);// freopen("cfcode.out","w",stdout);std::ios::sync_with_stdio (false);std::cin.tie (nullptr);int t = 1;cin >> t;while (t--)solve();return 0;
}```

Codeforces Round #819 C - D相关推荐

  1. Codeforces Round #819 (Div. 1 + Div. 2) D题解

    题目链接 思路 观察数据可以发现m <-= n + 2, 若想使两种颜色的联通块总和最小,可以想到一颗生成树与剩下几天边分开. 当剩下0.1.2条边时无特殊条件,而当剩省下3条边时,需要考虑练成 ...

  2. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  3. Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈)

    Codeforces Round #417:E. FountainsSagheer and Apple Tree(树上博弈) 标签: codeforces 2017-06-02 11:41 29人阅读 ...

  4. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

  5. Codeforces Round #270

    Codeforces Round #270 题目链接 A:我是筛了下素数.事实上偶数仅仅要输出4和x - 4,奇数输出9和x - 9就可以 B:贪心的策略,把时间排序后.取每k个的位置 C:贪心.每次 ...

  6. 构造 Codeforces Round #302 (Div. 2) B Sea and Islands

    题目传送门 1 /* 2 题意:在n^n的海洋里是否有k块陆地 3 构造算法:按奇偶性来判断,k小于等于所有点数的一半,交叉输出L/S 4 输出完k个L后,之后全部输出S:) 5 5 10 的例子可以 ...

  7. [Educational Codeforces Round 16]A. King Moves

    [Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...

  8. Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...

  9. Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...

最新文章

  1. 网卡绑定技术linux c,Linux多网卡绑定
  2. ios 日期时间打印
  3. Groovy 1.5.7 出现java.lang.LinkageError问题
  4. Linux网络编程——黑马程序员笔记
  5. 兄dei,Python数据竞赛和5万现金奖励了解一下
  6. require_once的用法
  7. --save 和--save-dev的区别
  8. 数组排序(冒泡、排序)
  9. ddos应急处理_写给十九大安保应急的兄弟们 来看看DDOS攻击应急预案
  10. d630 无线驱动 linux,fedora 8下DELL D630无线网卡驱动的安装
  11. python中event_Python Event实现线程通信
  12. SAP License:COPA凭证冲销
  13. php如何进行界面切换,PHP 页面跳转到另一个页面的多种方法方法总结
  14. 快速删除node_modules文件夹!!!
  15. Jupyter notebook 转 pdf [完整转换]
  16. 2016最新淘宝客申请高佣金以及分析抓包详情
  17. IT行业的6大热门岗位,薪酬都有多高?
  18. Android APK文件反编译 查看appid等信息
  19. Java文字转语音功能实现
  20. 彻底搞懂AQS-重点方法精讲 [并发劝退- 哭唧唧]

热门文章

  1. 学习笔记(01):巫妖王51单片机开发板配套视频课程-LED闪烁和流水灯效果
  2. Linux安装Skype
  3. ps插件DR5扩展面板dr4.5升级版磨皮调色工笔画集合
  4. 新基建形势下安全公共服务平台建设机遇
  5. pda扫描mysql,获取pda扫码枪 扫描的数据
  6. 计算机组装前的主意事项有,组装电脑前的准备与注意事项
  7. 电源管理芯片的更新换代和各种应战
  8. android studio播放视频权限,Android Studio实现本地视频播放
  9. “文贼“当道引公愤 抄袭经济能持续多久?
  10. ubuntu 麦克风录音_如何在Ubuntu中禁用麦克风和网络摄像机 | MOS86