假期刷题
.0-0.
stay hungry,stay foolish
展开
-
codeforces round 741div2
contents:A题意思路AC代码B思路AC代码CD1思路AC代码D2EA题意求l<=a<=b<=rmax(b%a)思路理想情况相当于将b分成数值差1的两部分,取小的那部分当b%a中a不够小(比一半中大的数还大)就直接的b%aAC代码#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--){原创 2021-08-27 01:23:08 · 229 阅读 · 0 评论 -
Codeforces Round #739 (Div. 3)
contents:A. Dislike of ThreesB. Who's Opposite?C. Infinity TableD. Make a Power of TwoA. Dislike of Threes链接: link.三的倍数不能要,位数带3的不能要#include<iostream>using namespace std;int main(){ int t; cin>>t; while(t--){ int k,p=0; cin>>k原创 2021-08-20 20:08:35 · 96 阅读 · 0 评论 -
codeforces 1550B. Maximum Cost Deletion
contents:题意思路AC代码题意题意:给出一个长度为n 的01字符串s 与常量a ,b。你需要删除若干次连续子字符串使字符串为空,每删除一次长度为len的字符串你将获得a ∗ len + b 个点数,求能获得的最大点数思路:因为最终要删除的长度必然是n,所以最终点数与a没有关系,只需要判断b的正负来进行操作。如果b为正数,那么我们要最大化操作次数使点数最大,即每次删除一个字符如果b为负数,那么我们要最小化操作次数使点数最大,可以先选择连续次数小的删除,之后剩下的就只有0或1,只需要进行一次删原创 2021-08-04 19:13:22 · 199 阅读 · 0 评论 -
codeforces1549 C. Web of Lies
这里写目录标题题意思路AC代码题意链接: link.思路用一个数组记录死亡次数模拟即可AC代码#include <bits/stdc++.h>using namespace std;const int N = 2E5 + 10;int arr[N];int main(){ int n, m; cin >> n >> m; int a, b; memset(arr, 0, sizeof(arr)); while (m--) { cin原创 2021-08-02 01:43:40 · 316 阅读 · 0 评论 -
codeforces 1549B. Gregor and the Pawn Game
题意链接: link.思路贪心即可AC代码#include <bits/stdc++.h>using namespace std;string u;string d;int main(){ int t; cin >> t; while (t--) { int n; cin >> n; cin >> u; cin >> d;原创 2021-08-02 01:41:34 · 383 阅读 · 0 评论 -
codeforces1519A. PizzaForces
没啥好说的#include <bits/stdc++.h>using namespace std;#define ll long longconst int N = 1E5 + 10;int main(){ int t; cin >> t; while (t--) { int p; cin >> p; int res = p / 2; if (res == 2)原创 2021-08-02 01:35:13 · 132 阅读 · 0 评论 -
codeforces 1555 B. Two Tables
contents:题意思路AC代码题意链接: link.8 52 1 7 44 2直接数据说话8为房间长度,5为房间宽度旧桌子的左下角坐标为(2,1),右上角坐标(7,4);桌子不能旋转问再来一张4长2宽的新桌子,旧桌子最少挪多少位置才能放得下思路见代码AC代码#include <bits/stdc++.h>using namespace std;int main(){ int t; cin >> t; while (t--原创 2021-07-31 20:25:30 · 246 阅读 · 0 评论 -
codeforces 1555 A. PizzaForces(思维)
contents:题意思路代码题意链接: link.你要烤n块披萨一整块的披萨有3种规模6块的需要15min8块的需要20min10块的需要25min问你需要最少时间烤完思路首先15/6=2.520/8=2.525/10=2.5所以性价比都一样那么8和10存在的意义是什么假设计划全烤6块的,最后可能会剩下不够6块的,可能是0到5,再烤一份那就需要15min如果你把计划中最后一整块换一种规模,每多两块披萨你上升一种规模,这样浪费的最少,时间自然最小,噢原来8和10的存在是为原创 2021-07-31 13:04:08 · 339 阅读 · 0 评论 -
codeforces 1555 C. Coin Rows(前缀)
contents:题意思路AC代码题意链接: link.地上有两排糖果,妹妹和哥哥分别从左上角爬到右下角,所过之处,糖果皆无,妹妹担心哥哥吃多糖对牙齿不好,哥哥贪吃,想要获得最多糖果,妹妹先从左上角爬到右下角,然后哥哥再爬取,最终的结果是哥哥获得的糖果数,妹妹想要结果最小,哥哥想要结果最大。爬的时候只能向下或者向右思路只有两排,那么妹妹向下爬的机会只有一次,这两排有多少列就有多少个拐点,而妹妹爬完了之后哥哥再爬就无济于事,哥哥只能获得以拐点分界的第一排的后段和第二排的前段,前缀贪心即可,还不明白原创 2021-07-31 12:42:36 · 407 阅读 · 0 评论 -
codeforces 1408 C. Discrete Acceleration
目录:题意:思路:AC代码:题意:链接: link.思路:二分AC代码:#include <bits/stdc++.h>#define rep(i, n) for (int i = 1; i <= n; ++i)using namespace std;typedef long long ll;const int N = 1E5 + 10;int a[N];int n, m;bool judge(double t) { int s1 = 1; double原创 2021-07-30 01:12:28 · 153 阅读 · 0 评论 -
codeforces 1426 C. Increase and Copy
目录:题意思路AC代码题意链接: link.数组最开始只有一个1你的目的使得数组元素之和为n你有两种方式改变元素1、复制其中一个元素到数组尾端2、将数组中的任意一个元素+1求达成目的的最少操作数思路1、首先要达到目的的步数是固定的,我们只需要找到就可以2、那么数组中的大体规模就相对固定了(元素个数)3、施加与这些元素的操作是固定的,那么我们可以想象正确答案的+1操作和复制操作数应该也是相对固定的4、我们假如将数组看成一个整体,先+1后复制(*2)是比先复制再+1要增长得快的,那么我原创 2021-07-29 11:45:45 · 173 阅读 · 0 评论 -
codeforces1409 E. Two Platforms(排序,贪心)
目录:题意思路AC代码题意链接: link.给出n个点的坐标, 给定两个长度为k的平板. 平板只能水平放置, 且假设放置好平板后所有点开始下落, 问用两个平板最多能接住多少个点.思路参考链接: link.很显然这题的纵坐标给定是没有意义的, 所以我们不需要管纵坐标, 只需要考虑点的横坐标即可.首先我们应该得对所有的点进行排序, 这样我们可以O(n)的时间枚举每一处可以放置平板的位置. 但是介于是两个平板, 我们需要考虑如何合理放置这两个平板, 不能只照顾其中一个平板. 对于题目而言, 虽然说两原创 2021-07-28 19:46:56 · 112 阅读 · 0 评论 -
codeforces 1391 C. Cyclic Permutations(数学 思维)
目录:题意思路AC代码题意链接: link.思路参考链接: link.AC代码#include <bits/stdc++.h>using namespace std;#define ll long longconst int mod = 1E9 + 7;int main(){ int n; cin >> n; ll a = 1, b = 1; for (int i = 1; i < n; i++) {原创 2021-07-28 12:47:40 · 125 阅读 · 0 评论 -
codeforces 1393 B. Applejack and Storages (思维 模拟)
目录:题意思路AC代码题意链接: link.你需要八块木板,组成一个长方形和一个正方形,正方形可以是长方形,最开始的时候仓库里有n个长度为arr[i]长度的木板;但此时你并没有购买,有q此操作,每次操作是添加一块长度木板或者减少一块已有的木板,问每次操作之后,你是否能够凑齐两个图形所需要的木板思路为了满足条件,我们需要一组四块一样长度的木板,和两组2块一样长度的木板,有四种情况1、八块木板一样长(1,1,1,1,1,1,1,1)2、四块木板一样长,另四块木板也一样长(1,1,1,1,2,2,原创 2021-07-28 00:28:33 · 243 阅读 · 1 评论 -
codeforces 1395D. Boboniu Chats with Du(贪心)
目录:题意思路AC代码题意链接: link.找到一个序列的合理排序,使得之和最大加和条件,当一个数小于临界值m时候,可直接加和,当大于临界值m时,此后d个数不计算到总和之内,如果末尾不够d个,则忽略思路贪心即可.1、我们将数字整体分为两类, a类为大于m的数字, b类为小于m的数字. 我们可以知道答案至少为所有b类数字之和.2、倘若我们此时选择1个a类数字, 则我们一定要选最大的a类数字, 且一定要把他放在最后一位是最优的(因为这样不会导致后续d个数字失效).倘若我们要选择2个a类数字,原创 2021-07-27 18:16:55 · 333 阅读 · 0 评论 -
codeforces 1401 C. Mere Array(排序)
目录:题意思路AC代码题意链接: link.给定一个数组,目的是排成升序排序规则主要是交换两个元素交换元素的规则是当两个元素的gcd(x,y)=minvminv是数组中最小值问是否通过这种规则使数组升序思路我们知道:1、swap(x,y)等价于swap(x,minv)+swap(y,minv)+swap(x,minv)交换两个元素等价于每一个元素和最小值交换2、判断规则就变成了gcd(ele,min)=min?等价于minv是否可以整除ele3、排序一遍,然后,判断每一个需要原创 2021-07-27 12:43:29 · 134 阅读 · 0 评论 -
codeforces 1399 D. Binary String To Subsequences (双指针队列)
目录:题意:思路:AC代码:题意:链接: link.一个正整数数组,其最小的元素为min,两个元素x,y能够交换的原则是gcd(x,y)=min;问是否有可以通过此交换原则来进行升序排序思路:如果存在某些元素不在正确的位置上则需要进行换序对于具体哪两个元素交换呢,我们并不关心,我们知道,swap(x,y)等价与,swap(a,tmp),swap(b,tmp).swap(a,tmp);自己列三个元素自己模拟一遍就好了,所以tmp可以就是min,这样就不用寻找比的元素来进行交换只需要先排序,找原创 2021-07-26 23:13:11 · 157 阅读 · 0 评论 -
codeforces 1466C. Canine poetry(贪心)
目录:题意思路AC代码题意链接: link.一串字符串,要求除了长度为1的子串,其余子串不允许出现回文串思路长的回文串是由短的字符串组成的,所以只要保证短的字符串不出现回文串,只需要保证长度为2和3的不为回文串,长度为2的回文串比如为“AA”,长度3为“ABA”,我们只需要修改这两种类型就可以,先修改长度为三,保证长度为3的串不出现回文串,不会出现ABA类型的,但是修改AAA之后变成AAB,此时再修改长度为2的就好,题目要求修改最少,能不修改就不修改,所以当两个字符相同的时候,优先修改后面的,比如原创 2021-07-26 21:12:43 · 153 阅读 · 0 评论 -
Codeforces 1552B Running for Gold(贪心)
目录:题意:思路:AC代码:题意:链接: link.思路:AC代码:在这里插入代码片原创 2021-07-26 17:45:30 · 176 阅读 · 0 评论 -
codeforces 1285B. Just Eat It!
目录:题意:思路:AC代码:题意:链接: link.给定一个长度为n的序列a, 问是否存在a的严格子序列b, 使得b中所有元素的和 严格大于 a中所有元素的和.思路:暴力:我们可以找到a中最大连续子序列c,我们比较sumA和sumC注意不能是a序列=c序列我们是从a中选出一段c,反过来想,我们是从中选取c两端两段只要有一段的和小于0就好了AC代码:#include <bits/stdc++.h>using namespace std;#define ll long lo原创 2021-07-25 22:05:55 · 170 阅读 · 0 评论 -
codeforces 1538G Gift Set
目录:题意思路AC代码题意链接: 题目.你有x个红气球,y个蓝气球。一份礼物需要a+b个气球组成礼物可以由方案1、a个红气球和b个篮气球组成方案2、b个红气球和a个篮气球组成问最多可以组成多少份礼物思路当a和b相等的时候,两种情况就变成了一种结果就是min(x,y)/a;结果是注定的,相当于二次函数寻找最优解,用二分来寻找答案答案区间就是[0,(x+y)/(a+b)]我们让x>y,a>b;当a!=b时,方案1与方案2不具有普遍性,我们不妨这样想,在一组礼物中,我们不原创 2021-07-25 20:21:27 · 97 阅读 · 0 评论 -
codeforces 1336A Linova and Kingdom
目录:题意思路AC代码题意链接: link.一个王国有编号1到n共n个城市,其中1是首都有n-1条公路,树形结构的一个图需要建立m个工业城市,工业城市的贡献为首都到工业城市之间存在的非工业城市数量,问总的贡献最大是多少?思路1、整体思路,选择叶子更优2、假设1~n形成一条链,如果m=1,选择叶子结点最优m=2,我们应该选择最后两个节点当一棵树有2条链,其中一条链很长,其中一条只有节点长度为1的,我们还是选择长链末端两个。所以补充一点,我们并不是选择所有叶子节点最优,我们应该选择深度最大原创 2021-07-25 19:39:23 · 185 阅读 · 0 评论 -
codeforces 1547F
目录:题意思路AC代码题意链接: 题目.给定一个长度为n的数组,下标从1到n,其中an和a1相连每轮操作得到一个新的数组b,对于所有的i∈[1,n],b[i]=gcd(a[i],a[(i+1)%n]).最后将数组b复制给a问,执行上述操作多少轮之后,a数组中的所有数字都相同思路最终的结果有多种可能两个数取gcd,相当于保留两个数的公共因子,对于整个序列执行无数次gcd操作之后,等价于序列中每个数变成原序列中所有公共因子的乘积,我们最终的结果可能是1到gcd(a[1],a[n])之间的因子,我原创 2021-07-25 16:28:30 · 145 阅读 · 0 评论 -
codeforces 1553D. Backspace
目录:题意思路AC代码题意链接: link.思路反过来暴力模拟AC代码#include <bits/stdc++.h>using namespace std;string a, b;int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int t; cin >> t; while (t--) { cin >>原创 2021-07-25 01:02:26 · 331 阅读 · 0 评论 -
codeforces round#734(Div3)1551C. Interesting Story
目录:题意思路AC代码题意链接: link.n个由(a,b,c,d,e)组成的字符串规定:一个有趣的故事由这些单词组成,但是,必须满足,该故事中的某一个字母的数量总和比其他字母数总和还多。问n个单词中组成一个有趣故事最多包含多少单词(0~n),一个都没有为0思路∑numx-∑other=∑[numx-(len-numx)]=∑(2numx-len)一个单词的贡献就是2numx-len,按照贡献排序,统计ans>0时单词数。同理可得以不同字母组成有趣故事的最大数量AC代码#incl原创 2021-07-24 23:30:30 · 135 阅读 · 0 评论 -
codeforces round #724(Div2) 1536C
目录:题意:思路AC代码题意:链接: link.一组数据只包含D和K求当前分配比的最大个数ex:in:DKDKout:1,1,1,2解释:遍历到s[0]的时候,D:K=1:0;前缀能凑成1:0的只有1个,输出1s[1],D:K=1:1;前缀能凑成1:1的只有1个,输出1s[2],D:K=2:1;前缀能凑成2:10的只有1个,输出1s[3],D:K=1:1;前缀能凑成1:1的有2个,输出2((DK),(DK));思路问的是到目前为止,完全分配方案的比例方案数简单来说就是map原创 2021-07-24 20:05:17 · 67 阅读 · 0 评论 -
20210716yp
目录:ACWAAC链接: link.链接: link.链接: link.链接: link.链接: link.链接: link.链接: link.链接: link.链接: link.WA链接: 线段树.链接: &静心.链接: 树.链接: link.链接: link.链接: link.链接: link.链接: link....原创 2021-07-16 21:43:47 · 63 阅读 · 0 评论 -
cf 1547B Alphabetical Strings
目录:题AC代码:正向思维题这题不难,他提醒我要从正反两个思维看待问题,问题有顺着思路的模拟,也有从结果出发,寻找过程量,还有从两头出发,特此记录一下;链接: cf.AC代码:#include <bits/stdc++.h>using namespace std;int t;string s;int main(){ cin >> t; while (t--) { cin >> s; int le原创 2021-07-15 16:21:25 · 254 阅读 · 0 评论 -
codeforces round111Div2 1550C.Manhattan Subarrays
链接: link.链接: link.原创 2021-07-15 14:55:09 · 169 阅读 · 0 评论 -
codeforces round726#Div2 1537E1. Erase and Extend (Easy Version)
这里写目录标题题意:思路:AC代码:题意:链接: link.思路:贪心最终的结果是字典序最小的字符串,反证法可以证明此字符串是由原字符串部分前缀重复组成的。AC代码:#include <bits/stdc++.h>using namespace std;#define rg register#define N 100000int n, k, ntf=1;char s[N];int main(){ cin >> n >> k; c原创 2021-07-15 00:03:45 · 291 阅读 · 0 评论 -
codeforces round731#div3 1547E. Air Conditioners
目录:题意:思路ac代码题意:链接: link.思路如果一个地方连续出现多个温度,以最低的温度为准,一个空调的影响是辐射状态的,所以两遍dp就可以了.ac代码#include <bits/stdc++.h>using namespace std;#define N 300005int t, len, cnt;int pos[N];int tem[N];int dp[N];int main(){ cin >> t; while (t--)原创 2021-07-14 22:28:28 · 121 阅读 · 0 评论 -
codeforces round732#Div1 1545 A. AquaMoon and Strange Sort(
这里写目录标题题意:思路:AC代码:复盘:题意:链接: 1545A.一序列一定能变成非递减序列,初始序列的属性值是有属性的,比如R,当交换两个相邻元素的时候,此时他们的属性要变成与自身相反的属性(R–>L,L–>R),问,一个序列,在变成非递增序列之后会不会属性保持和初始化属性一致?思路:原来的序列是a,排序好的是b,则ai到bj的位置,和&操作一样,当两次&操作之后,值保持不变,则最开始的属性到最终的属性是一样的,则中间量操作数应该满足偶数个,而且守恒,又因为是相邻的原创 2021-07-14 19:03:22 · 104 阅读 · 0 评论 -
Codeforces Round #729(Div2)1542B Plus and Multiply
链接: 非常清晰我就懒一波.原创 2021-07-13 21:54:11 · 97 阅读 · 0 评论 -
codeforces 1541B Pleasant Pairs
目录:题意:思路:AC题意:链接: 题目链接.满足:(i < j&& ai ∗ aj == i + j )的对数思路:链接: 思路来源.AC#include <bits/stdc++.h>using namespace std;#define ll long long#define N 100005int t, n;ll arr[N];ll ans;int main(){ cin >> t; while (t--原创 2021-07-13 00:03:50 · 82 阅读 · 0 评论 -
codeforces 1539D D. PriceFixed
这里写目录标题题意:思路:ac代码链接: 1539D.题意:有一个两元店,对,统统两元,除了如此,对于一项商品,只要你在店里买够任意数量商品(可以是其他商品)就可以半价购买此商品,数据:要买n项商品,每项商品有两个属性,ai为购买数量,bi为在本店消费多少建商品时半价门槛。求买走list上的商品需要的最少钱数思路:结局已经注定,list上的所有商品都需要买上,我们可以想象一下,商品都是一件一件买的,只是有些可以优惠,有些优惠不了,对于有些门槛非常高的一件商品,把所有其他商品都买完,也不见得可以原创 2021-07-12 18:40:49 · 202 阅读 · 0 评论 -
codeforces 1540A Great Graphs
目录:题目描述思路AC代码题目描述n个点,d[i]表示i到第一个点的距离,现在加边,可以加负边,使得距离之和最小思路1、排序2、最后一个数位最大值,也是正向最大的代价然后尽可能多的建立负边2.1、从距离较远的点到距离较近的点是负边,可以理解为从较远的点到达起点,其中较远到起点之间有多少过程点,就建立多少条较远点到起点的负边,然后再从起点到各个中间点。ex:0,2,3,4,5距离为4的点,到0、2、3有三条边,分别为从4到0,从4到2,从4到3,从4到2的点,相当于从4到0再从0到2,AC原创 2021-07-11 22:00:40 · 222 阅读 · 0 评论 -
codeforces 1539C Stable Groups
这里写目录标题题目大意思路:WAtest6wa的原因AC题目大意将一序列排序之后,相邻之间的间隔不得大于X值,否则视为断层,现在有k次添加元素的机会,使得断层数最少,求最后的分组数思路:1、将原始数组排序之后,记录不连续的差值,则差值个数为分组数-12、将差值排序,依次添加元素修复差值,若差值可被修复,则分组数减一剩下修复不了的必然在升序排列的尾部,尽可能的修复比较容易修复的(花元素少的)WAtest6#include <bits/stdc++.h>using namespac原创 2021-07-11 20:37:03 · 185 阅读 · 0 评论