Codeforces Round #808 (Div. 1)(A~C)

A:Doremy’s IQ

题目大意

给你一个序列,然后你从左到右可以选择弄或者不弄。
然后你有一个智商值,如果你当前弄的数小于等于它就无影响,否则智商值减一,如果变成了 000 就无法操作。
要你最大化弄的次数,并构造方案。

思路

小溪了这题就卡了半天。
甚至不如先做 T2。

正着我们会有一个 DP,但是似乎不太能优化。
所以考虑反着来,会发现问题就变成了一开始你是 000,每次如果碰到大于的你可以选择 +1+1+1 并通过它,然后你只能加到 qqq。
会发现显然可以贪心,就能 +1+1+1 就加一,然后模拟一遍过程就好了。

代码

#include<set>
#include<map>
#include<queue>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
//#define mo 998244353
//#define mo 1000000007using namespace std;const int N = 1e5 + 100;
int T, n, q, a[N], jian[N], big, newbig;
int ans[N];int main() {scanf("%d", &T);while (T--) {scanf("%d %d", &n, &q);for (int i = 1; i <= n; i++) scanf("%d", &a[i]), ans[i] = 0;if (q >= n) {for (int i = 1; i <= n; i++) putchar('1'); putchar('\n'); continue;}int now = 0;for (int i = n; i >= 1; i--)if (now < a[i]) {if (now == q) continue;now++; ans[i] = 1;}else {ans[i] = 1;}for (int i = 1; i <= n; i++) printf("%d", ans[i]);printf("\n");}return 0;
}

B:Difference Array

题目大意

给你一个排好序数组,你要对它不断进行以下操作直至数组长度变为 111,并输出最后的数。
把它差分,把差分得到的数组排序。

思路

我只能说有点诈骗。
首先发现数组每一项的和只会最多是数组长度的两倍。

那很多地方都会相同, 那因为一开始就排好序所以差分就会有很多 000。
然后你会你只需要保留一个 000 来进行操作,所以真正操作的量会很少。
所以直接模拟即可。

代码

#include<set>
#include<map>
#include<queue>
#include<cstdio>
#include<vector>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
#define ll long long
//#define mo 998244353
//#define mo 1000000007using namespace std;const int N = 1e5 + 100;
int T, n, a[N], l, r, tmp[N];void work() {for (int i = l; i < r; i++) tmp[i] = a[i + 1] - a[i];sort(tmp + l, tmp + r);for (int i = l; i < r; i++) a[i] = tmp[i];if (l > 1) l--; r--;
}int main() {scanf("%d", &T);while (T--) {scanf("%d", &n);for (int i = 1; i <= n; i++) scanf("%d", &a[i]);l = 1; r = n; while (l < r && !a[l] && !a[l + 1]) l++;for (int i = 1; i < n; i++) {work();while (l < r && !a[l] && !a[l + 1]) l++;}printf("%d\n", a[l]);}return 0;
}

C:DFS Trees

题目大意

给你一个图,然后问你从每个点出发得到的 dfs 树是否是最小生成树。
每条边边权不同且为 1∼m1\sim m1∼m 的值。

思路

麻用错性质想了半天。(虽然看起来想法能写但来不及了,主要是想到的性质太复杂啦)

你会发现因为是最小生成树所以你对于一条非树边,你如果从一段走过去,你还是优先走树边。
那怎样会出现问题呢?就是你走完树边,发现到不了非树边连的点,那你就只能走非树边了。
画个图理解一下,你就会发现这些不行的位置都是在非树边两个点之间的路径上的点(以及它的子树),就是中间的部分,你只要从一头进去都是没问题的。

那我们考虑对每条非树边都得到一些判断:
从某些点出发 dfs 可以某些不行,具体一点我们把非树边 x,yx,yx,y 在树上的路径断开,然后 x,yx,yx,y 的子树是可以的。
那如果一个点要完全可以,它要满足每条非树边的条件,那我们就维护每个点满足了多少了条件。
至于子树赋值就直接打标记然后最后跑个 dfs 下传下去即可。

代码

#include<cstdio>
#include<vector>using namespace std;const int N = 1e5 + 100;
int n, m, fa[N], sum[N], go[N];
vector <int> g[N], G[N], bh[N];
bool tree[N << 1], in[N];int find(int now) {return fa[now] == now ? now : fa[now] = find(fa[now]);}void dfs(int now, int father) {in[now] = 1;for (int i = 0; i < g[now].size(); i++) { int x = g[now][i];if (x == father) continue;go[now] = x; dfs(x, now);}for (int i = 0; i < G[now].size(); i++) { int x = G[now][i];if (tree[bh[now][i]]) continue;tree[bh[now][i]] = 1;if (!in[x]) sum[now]++, sum[x]++;else sum[now]++, sum[1]++, sum[go[x]]--;}in[now] = 0;
}void get_sum(int now, int father) {for (int i = 0; i < g[now].size(); i++) { int x = g[now][i];if (x == father) continue;sum[x] += sum[now]; get_sum(x, now);}
}int main() {scanf("%d %d", &n, &m);for (int i = 1; i <= n; i++) fa[i] = i;for (int i = 1; i <= m; i++) {int x, y; scanf("%d %d", &x, &y);if (find(x) != find(y)) fa[find(x)] = find(y), tree[i] = 1, g[x].push_back(y), g[y].push_back(x);else G[x].push_back(y), bh[x].push_back(i), G[y].push_back(x), bh[y].push_back(i);}dfs(1, 0);get_sum(1, 0);for (int i = 1; i <= n; i++)printf("%d", (sum[i] == m - (n - 1)) ? 1 : 0);return 0;
}

Codeforces Round #808 (Div. 1)(A~C)相关推荐

  1. Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解(每日训练 Day.16 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #696 (Div. 2) (A ~ E)超高质量题解 比赛链接:h ...

  2. Codeforces Round #712 Div.2(A ~ F) 超高质量题解(每日训练 Day.15 )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #712 Div.2(A ~ F) 题解 比赛链接:https:// ...

  3. Codeforces Round #698 (Div. 2)(A ~ F)6题全,超高质量题解)【每日亿题】2021/2/4

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 [每日亿题]Codeforces Round #698 (Div. 2)(A ~ F)6题全,超 ...

  4. Codeforces Round #699 (Div. 2) (A ~ F)6题全,超高质量良心题解【每日亿题】2021/2/6

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Codeforces Round #699 (Div. 2) (A.B.C)[每日亿题]2021/2/ ...

  5. Codeforces Round #739 (Div. 3)(AK实况)

    Codeforces Round #739 (Div. 3) A. Dislike of Threes 找到第kkk个既不是333的倍数,个位数上也不是333的数,也已预处理然后O(1)O(1)O(1 ...

  6. Codeforces Round #703 (Div. 2)(A ~ F)超高质量题解【每日亿题2 / 19】

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A. Shifting Stacks B - Eastern Exhibition C1 - G ...

  7. Codeforces Round #764 (Div. 3)(A~G)

    考试结束rua!开始写题解. 这场打完后明显感觉到自己水平下降了很多,考试结束后该回回手了. 赛中过了A~D,F,E题题目读错了干想了一个多小时.....给整麻了 A. Plus One on the ...

  8. Codeforces Round #827 (Div. 4)(A~G)(F已更新)

    "爷爷,你关注的up主要更新拉!" 今天起开始CF/At不定期更新 A. Sum(暴力) 只需判断a,b,c是否为和关系即可 #include <bits/stdc++.h& ...

  9. Codeforces Round #784 (Div. 4)(A~F)

    更好的阅读体验 \color{red}{更好的阅读体验} 更好的阅读体验 文章目录 A. Division? B. Triple C. Odd/Even Increments D. Colorful ...

最新文章

  1. MATLAB实战系列(二十一)-基于遗传算法的BP神经网络优化算法(附MATLAB代码)
  2. 【Pandas】apply,applymap和map的区别
  3. spring的aop的动态代理机制都有哪些_Spring学习(4):Spring AOP
  4. 热点事件发现、演化及时间线Timeline、故事线Storyline自动生成
  5. 浅析开源蜜罐识别与全网测绘(安全客)
  6. 大型网站架构系列:缓存在分布式系统中的应用(三)
  7. 通过代码设置radiobutton不同方位图标的两种方法
  8. java的GUI之SWT框架 配置开发环境(包含但不限于WindowBuilder完整教程,解决Unknown GUI toolkit报错,解决导入SWT包错误)...
  9. EdrawMax v12.0.2跨平台图表软件
  10. 一次性补助20万,博士买房比市价低1.5万/平!26城硕博引进政策哪家强?
  11. vue+element-ui 实现上传前图片压缩功能
  12. 谷歌浏览器元素定位神器 -- chropath插件
  13. SV学习(8)——随机约束和分布、约束块控制
  14. uniapp app内使用微信H5支付
  15. tableView表格重写表头增加全选功能和实现翻页(读写excel和读ini)
  16. 模拟时针--微信小程序制作
  17. BPM 应用系统开发案例实战
  18. include,include_once,require,require_once的区别
  19. python如何使用matplotlib画散点图使不同类别的点有不同的形状和颜色?
  20. 怎么把视频中的水印去除?建议收藏这几种去水印方法

热门文章

  1. python计算召回率_机器学习之分类:精确率和召回率
  2. jqGrid 学习笔记整理——进阶篇(一 )
  3. 人生节点 | 2021年终总结2022年度计划
  4. 视频教程-系统集成项目管理工程师考试历年真题讲解-软考
  5. dev c++ 中的Program received signal SIGSEGV Segmentation fault
  6. 【BlackDuck】Black-Duck-User-Guide用户指导书
  7. python组合无重复三位数
  8. C#流程控制————分支结构
  9. Win7-64 重装 Anaconda3
  10. python跳到微软商城解决 cocos 所有指令没有反应解决方法