每日刷题
文章平均质量分 84
小酒窝.
研一菜鸡一只,欢迎来交流讨论,一起进步!
展开
-
22 杭州训练赛
从该位置来转移。(和之前租共享单车的那个题一样)(可能在两个车站之间花费了多元,比如两个车站相距 2s,所以枚举所有能花费的钱数来转移,不只是花费 1)假设到当前车站花费 c 元,那么最早是在。原创 2022-09-26 12:21:09 · 683 阅读 · 3 评论 -
CF1400:1561B. Charmed by the Game(思维)、1519C. Berland Regional(技巧)
1561B. Charmed by the Game(思维)题意:最终题意转化为:给定一串ab循环串(ababab...或bababa...)。问可以修改(a变为b或b变为a)多少次,使得a,b出现的次数分别为n,m?输出所有答案。思路:找出出现次数的差值,然后需要这些a或者b能够补齐。所以最小的修改次数便是这个差值。后面的修改便是画蛇添足,为了使差值不变,就需要同时变两个(一个a变成b,一个b变成a),相互抵消。所以要看还剩多少个完整的ab对能够修改。奇偶分开讨论。Code:in原创 2021-11-04 22:34:56 · 139 阅读 · 0 评论 -
CF:1607D. Blue-Red Permutation(巧妙)、1607E. Robot on the Board 1(思维);双人作业问题(dp)
1607D. Blue-Red Permutation题意:给定长度为 n 的数列,每个位置的颜色为蓝或者红。判断该数列能否变换成n的全排列,通过任意次下述操作:任选红色位置的数+1,或任选蓝色位置的数-1。思路:先将所给的数看作位置,所给的颜色放到对应到这个位置上。对于超过1~n范围的数,如果是红色并且小于1,那么就放在1位置上;如果是蓝色并且大于n,那么就放在n位置上。其他的不能利用,舍弃。然后就是要将颜色移动(把颜色看作物品,移动到一个位置上),看能否让每一个位置至少有一种颜色。因为原创 2021-11-04 00:06:24 · 380 阅读 · 0 评论 -
CF1400:1490E、448B、1462FD、650A、1380B、1451C
1490E. Accidental Victory(二分)题意:一共n个人参加比赛,每个人有一个强壮值。每次随机挑选两人pk,赢的人获得另一人的强壮值。如果强壮值相同,随机赢。问,最终有哪些人有赢的可能性?思路:也就是问,有哪些人必输了。一个人所得的到的最大强壮值为比其小的所有强壮值之和。法1: 将所有人从小到大排序。对于一个位置的前缀和如果不少于下一位置的值,说明当前位置可以胜过下一位置。如果不能,说明当前位置以及前面所有位置都没有赢的可能。找出最后一个不会赢的位置。法2:二分原创 2021-11-03 01:21:33 · 189 阅读 · 0 评论 -
1606C. Banknotes、1604B(思维),1604C(思维)
1606C. Banknotes题意:定义 f(x)f(x)f(x) 为数 xxx 能被 10ai10^{a_i}10ai 表示所用的最小个数。例如:ai=a_i=ai={ 0,1,20,1,20,1,2 } 时,f(59)=14。(59=5∗101+9∗100,5+9=14f(59) = 14。(59=5*10^1 + 9*10^0,5+9=14f(59)=14。(59=5∗101+9∗100,5+9=14)给定一个数 kkk,求数 xxx 的最小值使得 f(x)>kf(x)>kf原创 2021-11-01 23:32:38 · 296 阅读 · 0 评论 -
CF1400:1560D、1245C
1560D. Make a Power of Two(思维,双指针)题意:给定一个数n,问最少需要多少次操作,能够将其变为2的幂次数。(n ≤1e9)1.选择一个数位,删掉。2.在最后面增加一个数位,为任意值。思路:仅仅由所给数n来判断最终能变成2的那么次幂数是很难的。但是2的次幂数一共就60个,所以可以遍历所有的幂次数x,判断当前值变为x所需要的最小操作数。取所有数答案的最小值。那么数n变为幂次数x最小需要操作多少次呢?由于增加一个数位操作只能增加到最后一位,所以数n只能对幂次数前面的数原创 2021-10-30 00:43:54 · 165 阅读 · 0 评论 -
CF1400:1320A(小思维)、1312C(思维)、289B(绝对值)、1201C(模拟)
1320A. Journey Planning(小思维)题意:给定一个数列ai。从中找一个子序列,满足i>j, i-j=a[i]-a[j]。这样的子序列和最大为多少?思路:满足i-j=a[i]-a[j],即满足i-a[i]=j-a[j]。然后map记录值相同的总和。取最大。就是一个简单的公式变形,一开始还想着暴搜,dp。。Code:const int N = 200010, mod = 1e9+7;ll T, n, m, a[N];ll sum,ans;bool f[N];原创 2021-10-28 23:57:03 · 362 阅读 · 0 评论 -
CF1400:1463B(构造,思维)、1303B(二分答案)、977D(map,暴搜)
1463.B. Find The Array(构造,思维)题意:给出数列a,其总和为S。要构造一个数列b,满足其相邻两项可以相互整除,并且|ai-bi|之和不超过S/2。思路:两种思路。思路1:设a数列的奇数位置之和为S奇,偶数位置之和为S偶。那么,S奇+S偶=S。同时,满足S奇和S偶中,至少有一个不超过S/2。(反证,如果都超过了,那么两者之和就超过S了)我们把数列b中,这种位置 (奇数或偶数位置)上的所有数构造为1,其他位置构造为ai。首先,满足了相邻位置两项可以互相整除。其次,这原创 2021-10-27 23:48:26 · 115 阅读 · 0 评论 -
Codeforces1602C、546C、1520E、277A
C. Array Elimination(逻辑运算)题意:给出一组数,对于一个数k,每次可以选择k个位置进行若干次操作:k个位置上的数减去这k个数的与值。求出所有能够使得这组数都变为 0 的数 k。思路:要把所有数都变为0,也就是将所有数的数位变为0。每次操作,减去的是k个数的与值。所以,为了将一个数位变为0,减去的这个与值的该数位也要为0。为了让与值的该数位为0,那么挑选的k个位置上的数该数位都为1。因为可以操作若干次,所以对于一列数位的x个1来说,可以选择x的因子y个1,能够将这y个数的原创 2021-10-26 23:10:07 · 127 阅读 · 0 评论 -
Mathmen、Codeforces Round #750 (Div. 2)
昨天的一道题,Mathmen。Mathmen(贪心,二分)题意:给定n个位置,和m个船只,要从一个位置到后面一个位置挨个走。每只船只都有两种属性:行驶距离和花费。每个位置都有m条船,从一个位置到下一位置选择一艘船,行驶距离至少为两位置间距离。问,如果选择,使得总花费最少?思路:思路1:二分一开始想的是这样二分:将船只按行驶距离和花费排序,找到第一个行驶距离大于间距的船只,答案+=此船花费。 但是可能后面行驶距离更短的船只花费还更少呢?所以,从第一个行驶距离不小于间距的那条船开始,到后面的原创 2021-10-24 23:50:36 · 1854 阅读 · 0 评论 -
1393B、1354C1、序列变换
1393.B. Applejack and Storages1354.C1. Simple Polygon Embedding原创 2021-10-23 00:53:00 · 141 阅读 · 0 评论 -
拼题A打卡奖励 (25 分),1355D,1362C;
7-2 拼题A打卡奖励 (25 分)(背包)题意:求,从 n 个物品中选(每个物品有体积 vi, 价值 wi ),总体积不超过 m 的最大价值?n≤1e3,m≤7e5,vi≤600,wi≤30n ≤1e3, m ≤7e5, vi ≤600, wi ≤30n≤1e3,m≤7e5,vi≤600,wi≤30。思路:如果按照经典套路:求总体积不超过m的最大价值:先枚举所有物品,再枚举所有体积,这样时间复杂度为O(n*m),超时。所以,需要转换一下:因为最大总价值不超过 wi∗n=3e4wi*n=3e4原创 2021-10-19 23:09:49 · 1427 阅读 · 0 评论 -
538B.Quasi Binary、1380C.Create The Teams、 AtCoder Beginner Contest 223;
中午upc,只出了一道。下午刷了两道1400,晚上Atcoder一场。E: Rescue Mission(前缀和,map)题意:给出长度为 n 的数列,求每一个位置往后延伸的最短距离,使得这个区间中的所有数为10的倍数。思路:和之前做过的求总和为x的倍数的最大区间,或者区间个数这样的题 思路相同。处理前缀和,前缀和取模,判断当前的值是否在前面出现过。如果是,那么中间这一段总和就为x的倍数了。这里就是要把前面一次该数出现的位置+1这个位置 的答案赋值为这一区间长度就行了。注意标记0位置为数原创 2021-10-18 00:01:55 · 104 阅读 · 0 评论 -
Codeforces Round #748 (Div. 3)
B. Make it Divisible by 25(思维)题意:给出一个数n,问最少去掉多少数位,能够使得所得到的新数为25的倍数?(n≤1e18)思路:一个数为25的倍数,那么这样的数有一定的特点:末尾为:25 或 50 或 75 或 x*100。所以只需要找到2的位置和5的位置,将其中间的和5后面的所有位置去掉,就能保证所得到的新数是25的倍数了。50和75同理。而所给的数 n 是没有前导0的,所以最后一种x*100的情况,只需要判断两个0就行了。找到两个0的位置,中间和第二个0后面的原创 2021-10-16 00:39:13 · 202 阅读 · 0 评论 -
2021 RoboCom 世界机器人开发者大赛-本科组(初赛)
7-1 懂的都懂 (20 分)题意:给出n个数a1,a2,a3…an。给出m个数,判断这个数是否为 从n个数中抽4个,这4个数的平均数?思路:原创 2021-10-14 20:58:12 · 886 阅读 · 0 评论 -
Codeforces Round #747 (Div. 2);AtCoder Beginner Contest 222;Educational Codeforces Round 115 (Div.2)
今天是2020.10.10,记录一下这三天的刷题。前天晚上有场cf:Codeforces Round #747 (Div. 2)A. Consecutive Sum Riddle(思维)题意:给出数n,求两个数x和y,使得x+ x+1 + x+2 + … + y-1 + y = n。n≤1e18,-1e18≤x<y≤1e18。思路:x和y都可以取负数,所以可以让0左右两边的数都抵消掉,只剩下n就可。所以x=-n+1,y=n。B. Special Numbers(思维,二进制)原创 2021-10-10 23:42:55 · 224 阅读 · 0 评论 -
1400——1475C,1332B;
今天2021.10.6。中午组队赛,遇到一个分层图最短路的模板题,但是不会做。。没学过,所以现学了一下:https://blog.csdn.net/Mr_dimple/article/details/120629967;把昨天最后的那道题补了:1475.C Ball in Berland(思维,容斥)题意:一共n对关系 (xi,yi),从中挑出两对,确保两队中人不冲突(同一个人不在两个队中),一共可以挑选出多少组两对?思路:只能在O(N)或者O(logN)的时间内过。依次遍历n对关系,统原创 2021-10-06 22:56:39 · 89 阅读 · 0 评论 -
B. Perfect Flush、Milk Scheduling、车站分级;1400——414B、401C;
今天2021.10.5。上午把昨天upc的题补了。中午有场组队赛,碰见个拓扑排序的题,没做出来。。晚上写了两道1400。B. Perfect Flush (单调栈)题意:给出一个长度为n的数列,其中元素大小为1~m。要找出一个子序列,使得1~m元素出现且只出现一次,并使其字典序尽可能小。思路:每个元素都要有,并且只能出现一次。所以能尽量小的就尽量小,但是如果遇到最后出现的元素,一定要拿着。单调栈,遍历每个位置,将栈中比其大的元素都出栈,将该位置元素压栈。但是要注意的是,出栈的元素都是原创 2021-10-06 00:15:05 · 141 阅读 · 0 评论