CF
文章平均质量分 55
GrayShore
这个作者很懒,什么都没留下…
展开
-
Educational Codeforces Round 117 (Rated for Div. 2)
A题暴力枚举即可 B:(贪心+构造) 题目大意:给出a b n n为偶数,构造一个长度为n的permutation,使得前n/2项的最小值为a,后n/2项的最大值为b。 思路:先将a放到序列中,再贪心地从大到小插入,同时用桶标记插入过的数,因为插入较大的数,就能尽可能保证剩下的数的最大值足够小,插完后将剩下的没被标记的数插入,最后再遍历一遍验证合法性即可 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll;原创 2021-11-23 20:34:45 · 694 阅读 · 0 评论 -
拓扑排序模板
拓扑排序模板: vector<int> g[N]; queue<int> q; int deg[N];//出度数 for (int i = 1; i <= n; i++) if (deg[i] == 0) q.push(i);//初始化,将叶子节点加入队列 int cnt = 0; while (!q.empty()) { int t = q.front(); q.pop(原创 2021-11-22 21:48:13 · 340 阅读 · 0 评论 -
Codeforces Round #551 (Div. 2)
A 给出n号线公交车,给出人到达车站的时间点,给出每号公交车第一次到达车站和每几分钟来一班。人总是坐他到达车站之后来的第一辆公交车,如果有好几辆同时到,就输出任意一个。 1.如果i号车第一次到的时间小于人到的时间,就找出i号车第一个大于人到达时间的到达时间。 2.维护一个最小值,输出最小值的编号即可。 #include<bits/stdc++.h> using namespace std; const int N = 10050; typedef long long ll; int原创 2021-11-11 18:42:29 · 250 阅读 · 0 评论 -
Codeforces Round #750 (Div. 2)
Codeforces Round #750 (Div. 2) A: 共有分别有ABC首一二三分钟的歌,将这些歌分到两场演唱会里,问你两场演唱会持续时间的差值最小是多少。 解:因为abc都大于1,至少有一个两分钟的和一个一分钟的歌,所以两场音乐会的持续时间的差值最大就是1,当且仅当所有歌的时间和为奇数时,差值为1. B: 给你一个序列,问你有几个子序列的和等于原序列的和-1,只需要统计一下0和1的个数即可,符合条件的子序列个数=2cnt0 * cnt1 C: 给你一个字符串,要求删掉一种字母,使得字符串变原创 2021-10-25 20:23:43 · 99 阅读 · 0 评论 -
B. Take Your Places!(双指针,暴力)
B. Take Your Places! 原题地址: 题意 给你一串数,只能交换相邻的两个数,使得数列中不存在相邻的奇偶性相同的数,就是按照 奇数 偶数 奇数 偶数 …\dots… …\dots… 交替排列,求最小的交换次数。 思路: 记录奇数和偶数的个数,如果奇偶数的个数差大于1,必然不能奇数偶数交替排列,如果奇数比偶数大1,必然是 奇 偶 奇 偶 奇 …… 奇 这样排列,反之就是偶数打头。 遍历数组时用 cnto和 cnte记录一下当前有几个奇数偶数了,如果当前数i 是奇数,那它需要移动的距离是原创 2021-09-08 20:49:09 · 119 阅读 · 0 评论 -
B. Moamen and k-subarrays
链接:https://codeforces.com/contest/1557/problem/B 题意:将一个数组分成k份,将每一份视作一个整体重新排序,问是否存在一种顺序,使得整体数组有序。 思路:计算出将一个数组搞成有序至少需要将数组分成多少份,如果这个份数小于k,那么我们可以任意多分几个,更多的份数意味着更容易使数组有序。如果这个份数大于k,显然不行。 那么如何寻找这个最少的份数呢? 我们只需要将原数组中,不符合排序之后的数组的前后关系的子序列的个数求出即可: 例如 : 1 3 4原创 2021-08-10 12:37:24 · 175 阅读 · 1 评论