合集-记录随手刷过的编程题
摘要:This is a programing problem on codefores with a difficulty score of 1400. It presents an intresting challenge that can be solved using the principle
阅读全文
摘要:This is a chanllenging problem on codeforces with a diffcuilt score of 1400. It presents a intressting chanllege that can be solved by using the princ
阅读全文
摘要:https://codeforces.com/problemset/problem/1369/C This is a hard problem on codefores with a diffcuilty score of 1400 It can also be solved by using th
阅读全文
摘要:https://codeforces.com/problemset/problem/550/B Brute force problem void solve(){ int n, l, r, x; cin >> n >> l >> r >> x; vector<int> a(n); for(auto&
阅读全文
摘要:This a constructive problem on codeforces with a diffcuilty score of 1400. https://codeforces.com/problemset/problem/1463/B It's evident that we can a
阅读全文
摘要:https://codeforces.com/problemset/problem/1490/E This is a chanllenging problem on codeforces with a diffcuilty score of 1400. It can be solved by usi
阅读全文
摘要:https://codeforces.com/problemset/problem/277/A It presents a problem that we need to make all element connected, it can be solved by using dsu. I did
阅读全文
摘要:https://codeforces.com/problemset/problem/762/A This is a easy problem based on number theory. We just simply iterate i from 1 to the value of sqrt(n)
阅读全文
摘要:It's a simple problem on codeforces. we traverse the through the string n, if we encouter a '1', we add a new string to ans and set stop to false.Othe
阅读全文
摘要:这是一个dp题,可以用4维数据来表示所有的状态。 但是有一个需要注意的点,一般来说,对于每个坐标,有拿跟不拿两种情况,如果没有拿任务宝物的状态表示为0,那么拿取了价值为0的宝物时,要以另一种情况来跟没拿区分。 处理的方法就是将所有宝物的价格+1。 long long dp[55][55][15][1
阅读全文
摘要:https://codeforces.com/contest/977/problem/D void solve(){ int n; cin >> n; vector<pair<int, long long>> a(n); for (auto&[x, y] : a){ cin >> y; x = 0;
阅读全文
摘要:https://codeforces.com/problemset/problem/1355/D We have a constructive problem where we need to construce an array with a required sum value using n
阅读全文
摘要:https://codeforces.com/problemset/problem/1332/B void solve(){ int n; cin >> n; vector<vector<int>> ans(1234); for (int i = 0; i < n; ++i){ int t; cin
阅读全文
摘要:题意:给定n个区间,左端点和右端点表示工作开始时间和结束时间。求最长一直有人在工作的时间和无人工作的时间。 思路:想到了并查集,还有差分树状数组,最后选择差分数组。左端点加,右端点减,然后一次遍历即可。 总结:习惯性的在右端点+1的位置减少了1,但是不适用于这个题目的逻辑。 因为在右端点+1的位置修
阅读全文
摘要:题意:给定一个宽度w,n个数,每个数有一个权值。窗口可以变换位置,求该窗口能容纳的最大权值。 思路:前缀和+滑动窗口硬算。 总结:一开始感觉是fenwicktree,但是每次查询的区间固定,不需要fenwicktree,不如滑动窗口来的方便。 void solve(){ int n, w; cin
阅读全文
摘要:https://www.luogu.com.cn/problem/P8818 什么玩意儿。。这种策略题不就是你来我往的,你如果选那个我就选这个,到了最后俩人都做不了决策,一直在博弈吗 放个示例跑不过去的代码 真不想调,这种题就是恶心啊,你说说怎么调呢 针对一方的选择,另一方总能选出更优的策略来。然后
阅读全文
摘要:A. Painting the Ribbon 题意:n个物体,m个颜色,alice要给每个物体任意涂一个颜色。bob可以给k个物体涂色 ,问alice能否阻止bob让所有的物体颜色都相同。 思路:思维题。如果m=1,那么无解。如果m > 1,那么bob如果想要染成同一个颜色,alice可以让bob需
阅读全文
摘要:https://codeforces.com/contest/1954/problem/E 题意:n个数,可以对每个数释放闪电,闪电从释放的位置一直传到左右边界或者传到某个小于等于0的数终止,并且每个数都会减去闪电值k。问最少多少次释放闪电后可以让所有的数小于等于0。 思路:从左往右考虑,假设第一个
阅读全文
摘要:题意:给一个树和一个bfs序,并保证从节点1出发,判bfs序是否合法。 思路:双指针,在bfs序上从左往右遍历。慢指针指向当前节点u,快指针指向当前节点应该访问的节点的位置。 然后设两个集合,一个集合存储在当前节点上应该访问的节点,另一个存储在当前节点上实际访问的节点,然后遍历即可。 总结:一开始想
阅读全文
摘要:https://codeforces.com/problemset/problem/161/D 题意:给一棵树,求树上距离为k的节点对的数量。 思路:树上dp,随便找个节点开始遍历。然后枚举当前点的距离为i的节点数与当前点的孩子节点距离为k - i - 1的节点数相乘。 总结:想到了树上dp,也想到
阅读全文
摘要:https://codeforces.com/problemset/problem/448/D 题意:n*m矩阵,对应位置的数值是行列下标相乘,求排序后第k个元素数值。 思路:元素值最大是n * m, 最小是1,在这个范围内2分,统计出所有比当前数值x(二分值)小的数的数量cnt,如果cnt<k,那
阅读全文
摘要:https://codeforces.com/contest/1359/problem/C 题意:给h和c两个数,并且操作顺序必须是hchchchch...对这些操作求和后除以操作次数得到均值,要求这个均值尽可能的接近t。问在最接近t的情况下,最少需要进行多少次操作。 思路:如果(h + c) /
阅读全文
摘要:题意:n个节点的图,每次操作删除一个节点。求每次操作之前,所有的图中的有序对(i, j)的最短路径之和。 思路:n <= 500, 弗洛伊德最短路径算法。因为每次的操作是删除节点,所以可以考虑将操作反着来,每次往图中添加节点,每添加一个节点更新一下最短路径。 总结:因为要添加的节点已经存储在了图中,
阅读全文
摘要:题意:a,b,k3个数。问a和b能否通过k次操作,让a和b相等。其中每次操作是选一个c能整除a或者b,然后a/c或者b/c。输出yes或者no。 思路:有点像图的问题,但是可以从质因子数量这一块入手。先线性筛,然后对于输入a和b,如果两个数的质因子数量 >= k,那么则可以通过刚好k次操作让他们都变
阅读全文
摘要:题意:n个数,求任意两个数的最大异或值。 思路:01前缀树 总结:确定了处理01最大异或问题时,采用先bitset<32>(x).to_string()再插入和计算的方式。 32位有符号整数的最大值应该是(1 << 31) - 1,而不是1 << 32位,1 << 32位代表这个1在第33位上。但是
阅读全文
摘要:https://www.acwing.com/problem/content/description/3488/ 题意:n个数,在区间长度最长为m的情况下,求最大连续异或值。 思路:连续异或值只要将前缀和存储起来再异或即可。对于限制了区间长度的连续异或值,可以将区间的前缀和放到树中,使用滑动窗口把区
阅读全文
摘要:https://codeforces.com/contest/427/problem/C 题意:给个图,每个点是一个junction,在junction可以建立一个checkpost,不同的junction建立checkpost有不同的代价。但是如果两个junction是强连通的,那么可以在这两个j
阅读全文
摘要:https://codeforces.com/contest/600/problem/E 题意:给一颗树,如果当前叶子为根的树中数字出现最多次数为k,求该树中所有出现次数为k的数字之和。 思路:dfs + 线段树合并。 总结:第一次接触线段树合并,整理了3个上午才整理出模板来,不知道这种线段树合并有
阅读全文
摘要:https://codeforces.com/contest/86/problem/D 题意:n个数,m个查询。每个查询给出一个区间,查询的结果是区间内每个数出现次数的平方*该数的总和。 思路:莫队算法。分块,查询排序,输出。 总结:莫队算法适用于离线的情况,他的原理是将查询按左端点分块,块的大小是
阅读全文
摘要:https://codeforces.com/contest/1537/problem/D 题意:给定数n,alice和bob博弈,alice先手。每次操作可以减去当前n的一个因子,并且该因子不能为n和1。问谁必胜。 思路:策略分析。基础分析:如果n是奇数,那么没有偶数因子。如果n是偶数,可能有偶数
阅读全文
摘要:https://codeforces.com/contest/1980 A. Problem Generator 题意:There is going to be m rounds next mouth, each of the month should be consist of "ABCDEFG"
阅读全文
摘要:A. Guess the Maximum 题意:给定一个数组,求一个k值,k满足对于任意的这个数组的区间的最大值max,k < max。求满足条件的最大k。 思路:只考虑长度为2的区间即可。参与到比较中的数值一定是两个数中的大数,从所有大数中选出最小的一个即可。 总结:赛时很快就A掉了,但是思考的不
阅读全文
摘要:A - Sanitize Hands 题意:给定一个序列和m,问m按顺序减去这个序列,m >= 0情况下最多能减多少个数 思路:前缀和 + prev(upper_bound()) 总结:disinfectan(消毒ji), disinfect(消毒,杀毒), aliens(外星人), void so
阅读全文
摘要:A. Creating Words void solve() { string a, b; cin >> a >> b; swap(a[0], b[0]); cout << a << ' ' << b << '\n'; } B. Maximum Multiple Sum 总结:作为一个等差数列,快速
阅读全文
摘要:A - Welcome to AtCoder Land void solve() { string s, t; cin >> s >> t; if (s == "AtCoder" && t == "Land"){ cout << "Yes\n"; return; } cout << "No\n";
阅读全文
摘要:https://codeforces.com/contest/577/problem/B 题意:给定长度为n个数组和一个m(1 <= n <= 1e6, 2 <= m <= 1e3),其中n中的元素(1 <= x <= 1e9)。问n中是否有子序列的和可以被m整除,输出YES或NO。 思路:维护一个
阅读全文
摘要:题意:给出a和b(1 <= b <= a <= 5e6),问a!/b!变成1,最多要经过多少轮?没轮可以选择一个它的因子来除它。 思路:质因子数量,先线性筛,再质因子分解每个数,再前缀和,然后O1查询。 总结:在模板中使用范围质数筛选时,当范围到了5e6就MLE了,没法弄,最后用的线性筛+质因子分解
阅读全文
摘要:https://atcoder.jp/contests/abc359/tasks A - Count Takahashi void solve() { int n; cin >> n; int ans = 0; while (n --){ string s; cin >> s; if (s == "
阅读全文
摘要:A. X Axis 题意:给3个x轴上的点xi,我们要放置一个点到x轴上,到这3个点的距离最短。(1 <= xi <= 10) 思路:直接暴力破解即可 int a, b, c; inline int cal(int x){ return abs(x - a) + abs(x - b) + abs(x
阅读全文
摘要:A. Soccer 题意:给定开始前两个分数和结束时两个分数,问有没有可能在这段期间两个队伍从来没有过分数相等的情况。(每次得分只能+1) 思路:确定了两种一定有分数相等的情况(一对之前的分数较低,但是后面的分数较高),其他就是可能没有出现分数相等的情况。 void solve() { int a,
阅读全文
摘要:A - ABA and BAB 题意:给定一个长度为n的字符串,每次操作可以将s中连续的子串"ABA"->"A", 或者"BAB"->"B"。该操作可以执行任意的次数,但是相同的串不进行计数。 问有多少种不同的串可以通过操作得到。 思路:根据操作的特性,可以想到奇偶性相同的位数上的字符需要相等,并且
阅读全文
摘要:https://atcoder.jp/contests/abc360/tasks/abc360_d 题意:给定n个箭头,有往左的有往右的,问有多少个有序对(i, j)在时间T内会相交。每个时间点移动一个单位。 思路:考虑所有往右的箭头,那么可以求出可以移动的最右边的坐标,然后找出数组中所有小于这个坐
阅读全文
摘要:推荐个C++编程仓库模板 https://github.com/yxc-s/programming-template A - Insert void solve() { int n, k, x; cin >> n >> k >> x; vector<int> a(n); for (auto& x :
阅读全文
摘要:推荐个C++编程仓库模板 https://github.com/yxc-s/programming-template A. Only Pluses 总结:为什么优先增加最小的数,它们的乘积会是最优的呢?可以这么理解,假如只有两个数a和b,b>a,那么a + 1,就增加一份b。如果b + 1,只能增加
阅读全文
摘要:https://codeforces.com/contest/1996/problem/E 题意:给定一个01字符串s,统计区间[l, r]中,[x, y]([l, r]的子区间)中0和1出现次数相等的字符串。 思路:维护一个cnt值,并计算以当前下标j结尾,所有满足条件的起始下标i中,对最后答案的
阅读全文
摘要:没有时间参赛 直接补几道简单题吧~ B. Make Three Regions 题意:给一个2行的字符串,有block和其他东西,问把一个位置变成block让联通的部分变成3个部分,有多少种方法 思路:找规律,找所哟符合条件的块即可 void solve(){ int n; cin >> n; ar
阅读全文
摘要:题意:给定n个数,每次操作任选两个数,将其中较小的数改为它们的和。问最小操作次数可以让n个数奇偶性相同。 思路:如果初始时奇偶性相同,则不操作,否则,最后结果一定是数组中全为奇数。找到最大的奇数,对偶数排序后考虑所有的偶数。如果当前奇数 > 偶数,则更新奇数最大值为偶数和奇数的和。否则,奇数要先变的
阅读全文
摘要:https://www.luogu.com.cn/problem/P1972 莫队算法被卡,只能得60points 正解有点像基于贪心的fenwick tree策略 fenwick的每个位置表示当前位置上是否是某个数的最后一次出现位置,值为0或者1 右指针升序排序,然后右指针移动过程中更新每个数最后
阅读全文
摘要:A. Primary Task 枚举所有情况即可 void solve(){ string s; cin >> s; if (s.substr(0, 2) != "10" || s.size() < 3 || s[2] == '0' || (s.size() < 4 && s[2] < '2'))
阅读全文
摘要:思维问题 题意:n个room和n-1个door,给定两个区间,有俩人在这两区间的任意房间中。问锁多少个door,可以保证两人不会见面。 思路:如果两个区间没有重叠,则锁一个门即可。如果有重叠,首先要把重叠的区间中门全锁住,然后判断两个区间左右端点是否重叠,如果不重叠还要锁靠内的区间端点的门。 voi
阅读全文
摘要:https://codeforces.com/contest/2004/problem/C 总结:一开始看错题了,思维惯性的认为alice会拿前一半大的元素,bob会拿后一半大的元素。。其实不是,而是每个人都挑最大的拿 void solve(){ int n, k; cin >> n >> k; v
阅读全文
摘要:https://codeforces.com/contest/2004/problem/D 题意:给定n个字符串,每个字符串有2个字符,如果两个字符串中有相同的字符,则这两个位置互相到达,到达的代价为坐标距离。并且所有字符串的种类只有6种,给定m个查询,求两个地方到达的最小代价。 思路:直接暴力,为
阅读全文
摘要:A. Make All Equal 题意:给定n个数每次可以选2个相邻的数,并且前面的数不能比后面的数大,并且删除其中的一个。这个数组是循环数组,最后一个数是第一个数的前一个数。问最少操作多少次,可以让剩下的数全都相等。 思路:红黑树+一次遍历,记录出现次数最多的数,剩下的数全部删掉即可。 总结:看
阅读全文
摘要:https://codeforces.com/contest/1998/problem/D 思路:求出到达每个点的最短路径,然后从每个点i考虑跳跃到点j(i->j有边),i+1默认为必胜态,则必败态为j - 从1~j的步数。 如果必败态所在的位置>必胜态,则更新差分数组,最后求和即可。 总结:一开始
阅读全文
摘要:https://codeforces.com/contest/2003/problem/C 题意:。。。 思路:如果要使满足条件的有序对最多,那么首先如果两个字符相等,那么无论如何排列,最终的贡献值都不会变。 再看字符不相等的情况, 假如有aabbcc,那么abcabc总是优于aabbcc,因为如果
阅读全文
摘要:A. Sakurako's Exam 总结:一看n <= 20,直接暴力+剪枝即可 inline void solve(){ int a, b; cin >> a >> b; vector<int> d; d.reserve(a + b); while (a --) { d.push_back(1)
阅读全文
摘要:https://codeforces.com/contest/2008/problem/G 总结:一开始思路错了,考虑的只有n = 1和g = 1,还有其他情况。其实情况应该分为其他三种:n = 1,n个数之间的所有空缺都能被填完(并且k仍剩余可以继续往后填),n个数之间的空缺不能被填完三种情况。
阅读全文
摘要:A - Minimize! inline void solve(){ int a, b; cin >> a >> b; cout << b - a << '\n'; } B - osu!mania inline void solve(){ int n; cin >> n; vector<string
阅读全文
摘要:https://codeforces.com/contest/2005/problem/C 题意:n个长度为m的字符串,可以任意选取若干个字符串组合起来,然后从中选择narek5个字符拼凑字符串,拼凑成功加5分,如果字母是narek中的其中一个并且没有使用,则扣一分,求最大分数。 思路:dp,维护一
阅读全文
摘要:https://codeforces.com/contest/26/problem/B 给定一个包含括号的字符串,问最少移除多少字符可以让字符串合法 两个点,第一是如果当前)超标了,那这个必须删除。第二是遍历完所有字符后,如果(是多的,要算到总数里面。 inline void solve(){ st
阅读全文
摘要:https://codeforces.com/problemset/problem/1167/C n个人m个组别,相同组别的人可以传递消息,一个人可能属于多个组别。问,考虑第i个人(i∈[1,n])有消息时,可以传递给多少人。 思路:并查集,秒了。 /* * DisjointSet(并查集) * 设
阅读全文
摘要:https://codeforces.com/problemset/problem/816/B 题意:给定n个区间,每次将n个区间中的所有数值统计一次,还有数值k,和q个询问区间。问每次询问的区间中,有多少个数值出现统计的次数>=k次。 思路:差分+前缀和,求出每个数出现的次数。再将所有出现次数>=
阅读全文
摘要:https://codeforces.com/problemset/problem/1692/G 题意:给定n个数和一个长度k,寻找符合条件的长度为k + 1的区间数量。条件:将连续区间中的每个数从左到右依次与2^j次方相乘(j∈[0, k]),得到的连续区间严格递增。 思路:每个数都乘2的某个幂次
阅读全文
摘要:https://codeforces.com/problemset/problem/1362/C 题意:给定一个数n∈[0, 1e18],求每两个相邻的数的不同bit位数量的总和 思路:要找规律,发现相邻的两个数都是在最低的bit位上增加一,那么相邻的两个数最低位永远不同。那第二位应该是每两次比较就
阅读全文
摘要:https://codeforces.com/problemset/problem/295/A 题意:给定n个数,m次操作,k个设定。操作:给定区间[l, r]和d,对数组该区间内每个数增加d。k个设定:每次给定区间[l, r]∈[1, m],代表第l~r次操作执行了一次。问,最终执行完所有操作后,
阅读全文
摘要:https://codeforces.com/contest/670/problem/D2 本来做的是D1,但是D2是增加了数据范围,那就直接剖析D2了。 题意:给定n个数的数组a和b,合成蛋糕需要n个元素,数组a代表了每个元素需要的数值,数组b表示现在每个元素有的数值。并且存在一个数值k,可以将k
阅读全文
摘要:https://codeforces.com/problemset/problem/1701/C 题意:n个worker跟m个任务,每个任务指定了哪个worker是精通它的。worker精通任务时,一个小时可以完成,否则需要两个小时。问完成所有任务最少需要多少个小时。 思路:一眼感觉有点贪心,肯定是
阅读全文
摘要:https://codeforces.com/problemset/problem/1245/C 题意:给定一个字符串s,字符串中连续的"nn"和"uu"可能由m和w变换而来,但也可能不是。问有多少种字符串是合法的?字符串如果包含任意的m和n则不合法。 思路:动态规划,依次考虑第i个位置的字符,如果
阅读全文
摘要:https://codeforces.com/problemset/problem/546/C 题意:给定一个不超过10的数n,代表有n张牌,a和b每个人各分几张。然后玩比大小的游戏,问多少回合,谁先赢,或者谁都赢不了? 思路:看到n不超过10,直接暴力了。 总结:没有太明白的搞清楚都赢不了的情况,
阅读全文
摘要:https://codeforces.com/problemset/problem/1519/C 题意:给定n个学生,每个学生属于一个学校,并且每个学生都有一个力量s。现在有个轮询k∈[1, n],每个学校会将最强的学生分为k组,这k组学生的力量总和代表了当前学校的总和,对于每个k,询问所有的力量总
阅读全文
摘要:https://codeforces.com/contest/1931/problem/E 题意:给定n个数字和m,A和B玩游戏,A先手。A可以反转任意数字,B可以将任意两个数字连接。问最后谁能赢?如果最后剩下的数字<10^m,则A赢,否则B赢。 思路:应该算是模拟题,只要搞清楚两个玩家的最优策略即
阅读全文
摘要:https://codeforces.com/contest/289/problem/B 题意:给定n * m的矩阵,还有一个数d,现可执行操作,每次操作可任选一个数将其±d,问最少操作多少次可以让矩阵中所有的数相等?或者输出-1表示无解。 思路:将数存到一维数组中并升序排序,做差分,如果存在某个差
阅读全文
摘要:https://codeforces.com/problemset/problem/1634/B 题意:给定n个数,Alice和Box玩游戏,Alice的初始数值是x,Bob是x+3,再给一个定值y,问,alice和bob谁能够通过连续对n个数进行操作后得到y。可以执行的操作类型:加上当前的数或者异
阅读全文
摘要:https://codeforces.com/contest/1095/problem/C 题意:给定一个数n和一个数k,问n能否通过k个2的整数次幂相加得到?如果可以,则输出yes并输出这些数,否则输出no。 思路:只能想到暴力了 + 剪枝了!从lower_bound(),第一个最接近的n的二次幂
阅读全文
摘要:https://codeforces.com/problemset/problem/1624/D 题意:给定一个长度为n的字符串s还有一数字k <= n,s只包含小写字母。现在需要将s中的字符分为k组回文串,可以使用任意数量的字符,求k组中最小的最大长度是多少。 思路:只选择一部分字符进行分组,而且
阅读全文
摘要:https://codeforces.com/problemset/problem/1515/C 题意:给定n个tower,每个tower有一个高度h,并且每个h都不超过x。现要将n个tower合并为m个tower,问能否保证合并后的m个tower最大的高度差不超过x?如果能,则输出yes,并输出分
阅读全文
摘要:https://codeforces.com/contest/1605/problem/C 题意:给定一个长度为n的字符串s,s只包含字符abc,现问满足条件的字符串的最短长度是多少?要求长度至少为2。条件:a出现的次数严格大于b和c各出现的次数。 思路:考虑各种情况,假如有aa,那么答案就是2;有
阅读全文
摘要:https://codeforces.com/contest/1320/problem/A 题意:给定n个数的数组a,现要构造数组,要求构造的数组所使用的a中元素的下标[ci, ci + 1, ...],c[i + 1] - c[i] = a[c[i + 1]] - a[c[i]],问所有符合条件的
阅读全文
摘要:https://codeforces.com/contest/702/problem/C 题意:给定n个城市坐标和m个tower,问tower的最小半径是多少,可以罩住所有的城市。 思路:二分半径,优先更新上界。难点在于如何判定当前半径r是否可以包含所有城市,可以采取这个方法:求出m个区间,然后对区
阅读全文
摘要:https://codeforces.com/problemset/problem/1462/D 题意:给定含有n个元素的数组a,问最少执行多少次操作后可以让数组中所有的元素相等。操作:选择ai,消除ai,并将ai的数值加到前面或后面元素 思路:操作的特性说明数组总和sum不变,于是可以得出剩下的可
阅读全文
摘要:https://codeforces.com/contest/1312/problem/C 题意:给定一个长度为n的数组a,还有一个长度为n的数组v(初始时全是0),还有一个数值k。现可进行如下操作:将k^i添加到数组v的某个数中,或者不使用k ^ i。问不限操作次数的操作后,v能否变成a。 思路:
阅读全文
摘要:https://codeforces.com/problemset/problem/1535/C 题意:给定一个长度为n的字符串s,s包含0,1,或者?,问有多少子串符合条件。 条件:子串没有相邻的0或者相邻的1。?可以当作0或者1。 思路:答案最初设定为子串的数量,然后去寻找不符合条件的子串t,并
阅读全文
摘要:https://codeforces.com/contest/1393/problem/B 题意:给定n个木条,q个询问。4个长度相等的木条可以组成一个长方形,两对长度相等的木条可以组成一个矩形。q个询问中,可能拿去或者给予一个长度为x的木条,对于每个操作,判断当前拥有的木条能否组成一个正方形 +
阅读全文
摘要:https://codeforces.com/problemset/problem/1932/C 题意:给定长度为n的数组a和字符串s,s包含L和R,再给定一个数字m。 有n次操作,每次操作根据S中的字符,删除a中最左边或者最右边的一个数字。在每次操作之前,输出当前数组a中所有的数字相乘 % m的结
阅读全文
摘要:https://codeforces.com/contest/1974/problem/C 题意:给定长度为n的数组a,a中每连续的3个数组成一个triplet,问所有的triplet组成的有序对中,只有一个数字不相等的triplet的总数是多少个? 思路:从前往后遍历,维护一个红黑树。依次去查找,
阅读全文
摘要:https://codeforces.com/contest/1579/problem/D 题意:n个人,每个人有个能量。能量>0时,可以跟另一个有能量的人交谈,交谈完后两个人的能量都减少1。问,所有人一共最多可以交谈多少次。 思路:典型的套路,先看最大值是否大于剩下的值,如果是的话最大次数就是剩下
阅读全文
摘要:https://codeforces.com/contest/1548/problem/A 题意:n个点m条边,q个询问:可能会加边,减边,或者询问。询问指删除所有符合条件的点,条件指当前点有至少一条边,并且当前点小于所有相邻的点。 思路:如果当前点从孤立到被加到了某个更大的点中,那么当前点一定会被
阅读全文
摘要:https://codeforces.com/problemset/problem/1881/E 题意:给定一个长度为n的整数数组a,现问执行至少多少次删除元素操作可以让beautiful。 beautiful:a可以分成若干个块,块的第一个数字代表块的从第二个数字起到结尾的长度。 思路:动态规划,
阅读全文
摘要:https://codeforces.com/contest/1907/problem/D 题意:n个区间,从[0, 0]开始跳跃,每次跳跃的步长不能超过k,并且第i次跳跃的落脚点必须在第i个区间范围内,求最小k是多少。 思路:一眼二分,范围是[0, 1e9],维护一个当前可以达到的区间端点,然后看
阅读全文
摘要:https://codeforces.com/problemset/problem/701/C 题意:求包含所有类型字符的最小区间长度。 思路:双指针,先右指针逐渐移动,移动过程中如果与左指针组成的区间包含了所有类型字符,那么开始移动左指针,一直到再移动左指针就会打破当前区间包含了所有类型的字符这个
阅读全文
摘要:https://codeforces.com/contest/1728/problem/C 模拟题 inline void solve() { int n; cin >> n; multiset<int> a, b; for (int i = 0; i < n; ++i) { int t; cin
阅读全文
摘要:https://codeforces.com/problemset/problem/1955/D 题意:给定数组a和b,问a中有多少连续长度跟b相同的连续区间,包含与b至少相同的k个字符。 思路:滑动窗口,维护一个变量same表示当前相同的字符,每次去除字符看要去除的字符是否对same有贡献,只要这
阅读全文
摘要:https://codeforces.com/problemset/problem/1923/C 题意:构造题,问能否重构区间,要求重构后区间和不变,且之前位置与新区间位置不能有相同字符。 思路:题目不要求使用原区间数字,如果有这个要求,那就是一个区间出现次数最多数字的问题。那么这个问题可以从构造的
阅读全文
摘要:题意:给定长度为n的数组,每次操作可以选下标(i, j),将abs(a[i] - a[j])加到数组末尾,问经过k次操作后,数组中可以达到的最小值是多少。 思路:如果k >= 3,那么结果必然是0,只需考虑k = 1和k = 2的情况。 k = 1时,答案就是数组中的最小数,或者某两个数经过一次运算
阅读全文
摘要:https://codeforces.com/problemset/problem/448/B 题意:给定字符串s和t,判断s能否通过纯交换字符位置,或者纯移除字符,或者移除+交换来获得字符串t。 总结:纯交换看字符数是否相等;纯移除使用双指针看t是否是s的子序列;交换+移除看s是否包含了t的序列并
阅读全文
摘要:https://codeforces.com/problemset/problem/1691/C 题意:给定长度为n的字符串s只包含0跟1,每次操作可以交换相邻的字符串的位置,求操作后所有的s.substr(i, i + 1)的数的和最小是多少。 思路:假如位置n - 1不是1,那么把最后一个1放到
阅读全文
摘要:https://codeforces.com/problemset/problem/1234/D 题意:长度为n的字符串s,包含小写字母。q个操作,可能是将s中位置p的字符换成另一个,或者查询{l, r}不同字符的数量。 思路:线段树,单点修改区间查询,维护的updateNode类型考虑两种操作,插
阅读全文
摘要:https://codeforces.com/problemset/problem/1514/C 题意:求1~n中,最长的乘积模n后为1的子序列. 思路:模n为1说明序列的乘积为n的乘法逆元,则每个元素都与n互质.默认序列包含了所有与n互质的元素,最后看模n后结果是否为1,如果不为1,则从序列中移除
阅读全文
摘要:https://codeforces.com/problemset/problem/1451/C 题意:给定长度为n的字符串s跟t,以及一个数字k。每次操作可以交换s中任意两个相邻的字符,或者连续k个相同的字符c(c < 'z'),将c变为c + 1,问不限次数的操作之后,s能否变成t。 思路:可以
阅读全文
摘要:https://codeforces.com/problemset/problem/1183/D 题意:给定n个数的数组,每个数<=n,现要将这些数出现的次数组合到一起,并且组合后每个数出现的次数不能相同,问组合后最多有多少数? 思路:统计后降序排序,维护一个变量pre,然后累加即可。 inline
阅读全文

浙公网安备 33010602011771号