![](https://img-blog.csdnimg.cn/20190927151117521.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CodeForces
CF+思维
_7许
%
展开
-
CF 1425 - E. Excitation of Atoms
题目链接题意:给 nnn 个原子。每个原子有两种状态,静态和激发态。每个原子 iii 从静态转换到激发态需要消耗 d[i]d[i]d[i] 的能量,而在激发态会贡献的 a[i]a[i]a[i] 的能量。初始的时候,序号从 1−n1-n1−n 的原子是按照编号顺序连接在一起的,也就是原子 iii 连接到原子 i+1i + 1i+1。在激发原子时有一个连锁反应,就是被激发的原子会自动激发它连接的下一个原子,这个时候是不会消耗能量的。但是最后一个原子不能连接到任何一个原子。给定 KKK,我们必须要改变 K原创 2020-10-07 01:42:55 · 233 阅读 · 0 评论 -
CF 1406-D
D. Three Sequences题意:给一个长度为 nnn 的数组 aaa ,构造两个相同长度的数组 bbb,ccc 。要求:b[i]+c[i]=a[i]b[ i ] + c[ i ] = a[ i ]b[i]+c[i]=a[i],并且数组 bbb 单调不减,数组 ccc 单调不增。让我们最小化max(b[n],c[1])max(b[ n ], c[ 1 ])max(b[n],c[1]),并且输出。除了初始数组,会有 qqq 次区间加操作,对于每次更新完的数组 aaa,同样要输出max(b[原创 2020-09-16 21:46:22 · 137 阅读 · 0 评论 -
CF 1167B - Lost Numbers
CF 1167B - Lost Numbers交互题题意:猜 4,8,15,16,23,42{4, 8, 15, 16, 23, 42}4,8,15,16,23,42 的排列。至多问4次,每次询问 {i,j}\{i, j\}{i,j},可以得到 a[i]∗a[j]a[i] * a[j]a[i]∗a[j] 的结果。输出排列。思路:依次询问{1,2}\{1, 2\}{1,2} {2,3}\{2, 3\}{2,3} {3,4}\{3, 4\}{3,4} {4,5}\{4, 5\}{4,5} 可以依次得到每一原创 2020-09-12 20:41:42 · 273 阅读 · 0 评论 -
CodeForce 1407C
交互题题意:猜一个排列 a[1...n]a[1...n]a[1...n] 。通过 “? i j? \ i \ j? i j” 的方式提问 a[i]%a[j]a[i] \% a[j]a[i]%a[j] 的答案是多少,最多提问 2n2n2n次。输出“!”,然后输出排列。思路:因为是排列,没有重复数字,所以a[i] 和 a[j]一定有大有小。我们通过提问 a[i]%a[j]a[i] \% a[j]a[i]%a[j] 和 a[j]%a[i]a[j] \% a[i]a[j]原创 2020-09-12 15:16:24 · 163 阅读 · 0 评论 -
CF 1398C
C - Good Subarrays题意:给一个长度在1e5之内的大数,把大数的每一位看成一个10以内的个位数,问区间和等于区间长度的区间个数有多少个?思路:定义 prefix[x] 表示区间 [1, x) 的前缀和。对于区间[l, r),满足题意则有 prefix[r]−prefix[l]==r−lprefix[r] - prefix[l] == r - lprefix[r]−prefix[l]==r−l 由此可得:prefix[r]−r==prefix[l]−lprefix[r] - r == p原创 2020-09-04 19:49:15 · 243 阅读 · 0 评论 -
CodeForces 1399D
Binary String To Subsequences题意:给一个01串,要从里面摘出来01相间的子序列,问在满足条件的情况下最少子序列的数目是多少?思路:遍历01串,如果是0就加到结尾字符是1的子序列末尾;如果是1就加到结尾字符是0的子序列末尾。这里就只需要记录一下最新的结尾是0或1的子序列的标号,以及该标号下的上一个结尾是0或1的子序列的标号,类似链式前向星的意思。遍历过程中更新最新的标号和上一个标号即可,同时记录答案即可。#include <bits/stdc++.h>#d原创 2020-09-03 11:00:17 · 160 阅读 · 0 评论 -
CF1366D
## Two Divisors#### 题意:n个1e7内的数,求每个数的两个因子$d_1、 d_2$,满足$gcd(d_1+d_2, a[i])=1$. 如果$d_1、 d_2$不存在,那么输出-1##### 以下:对$a[i]$进行质因数分解:$a[i]=p_1^{s_1}p_2^{s_2}...p_k^{s_k}$我们把$p_1,p_2,...,p_k$分成两个集合$\{p_1,p_2,...,p_x\}$和$\{p_{x+1},p_{x+2},...,p_k\}$使$d_1=p_1p_原创 2020-06-15 21:28:09 · 198 阅读 · 0 评论 -
CodeForces - 1338A
Powered Addition题意:给一个序列,从时刻 x=1x = 1x=1 开始,每个时刻 x,我们可以从序列中选择一个子序列(不必须连续),该子序列中的每个值都加上 2x−12^{x-1}2x−1 ,当然子序列可以为空。我们需要得到一个升序的序列,问需要最少的时间是多少?思路:直接贪心使得每个 aia_iai 都等于序列 [a1,ai][a_1, a_i][a1,ai] 中的最大...原创 2020-04-25 09:17:15 · 176 阅读 · 0 评论 -
Codeforces Round #630 (Div. 2)
A. Exercising Walk题意:小猫初始位置在(x,y)(x,y)(x,y),要求小猫左右下上各走a、b、c、da、b、c、da、b、c、d步。限制小猫咪必须在左下角为(x1,y1)(x_1, y_1)(x1,y1) 右上角为(x2,y2)(x_2, y_2)(x2,y2) 的区域内。问小猫咪是否能够完成任务?思路:首先应该判断小猫咪是否可以移动:左右任意一个方向要...原创 2020-04-01 17:04:51 · 314 阅读 · 0 评论 -
记录一些CF-DP题(qwq)
CodeForces 1195C Basketball Exercise题意:有两排小哥哥,每排都有nnn个小哥哥。我们要从这2n2n2n个小哥哥里选择任意个,使得这些小哥哥的身高总和最大(花痴脸). 限制我们选择的小哥哥不能是一排中相邻的两个。思路:定义dp[ ][3]dp[ \ ][3]dp[ ][3]其中dp[pos][0]dp[pos][0]dp[pos][0]表...原创 2020-03-26 22:07:47 · 270 阅读 · 2 评论 -
CodeForces - 1312E - Array Shrinking【dp+栈】
题意相邻的两个相等的数x可以合并为x+1,问可以通过合并操作得到的数列最小长度?思路我们用dp[r]dp[r]dp[r]表示数列[1,r][1, r][1,r]的最小长度。显然如果数列[l,r][l, r][l,r]的元素可以合并为一个数,也就是数列 [l,r][l,r][l,r] 的长度为111,那么我们可以得到dpdpdp方程:dp[r]=min(dp[r],dp[l−1]+1)...原创 2020-03-10 12:46:11 · 267 阅读 · 1 评论 -
CodeForces - 1312D - Count the Arrays【组合数学】
题意:从mmm个数中选出n−1n-1n−1个数,构造出一个有一个峰值,峰值左严格递增,峰值右严格递减的数列。思路从mmm个数中选出n−1n-1n−1个数: C(m,n−1)C(m, n-1)C(m,n−1)最大的数作为峰值,毫无疑问从剩下的n−2n-2n−2个数中选择一个作为峰值左右相同的数:n−2n-2n−2现在还剩n−3n-3n−3个数,怎么处理嘞?这n−3n-3n−3个数...原创 2020-03-10 10:18:17 · 156 阅读 · 0 评论 -
CodeForces - 1100F - Ivan and Burgers【前缀_线性基】
CodeForces - 1100F - Ivan and Burgers题意给定一个长度为n的数列. 然后有q次查询,查询[L, R]区间中的某个子集异或和最大。思路我们定义p[r][i]p[r][i]p[r][i]为[1,r][1, r][1,r]的线性基,并且这个线性基区别于平常从左往右插入,这个是从右往左插。于是我们查询[L,R][L, R][L,R]某些向量异或和最大时...原创 2020-03-08 16:11:10 · 158 阅读 · 0 评论 -
[CodeForces-1323B] - Count Subrectangles
[CodeForces-1323B] - Count Subrectangles题意:给定两个只包含01的数列a[ ], b[ ],我们可以得到一个矩阵c[i][j] = a[i] * b[j]. 我们需要找到矩阵c中,面积为k的子矩阵个数。思路:可以肯定的是a数组连续1和b数组连续1才有可能构成合法矩阵。问题是我们如何得到所有合法矩阵的个数,也就是如何遍历呢?长度为n的数组a,...原创 2020-03-08 13:08:11 · 186 阅读 · 0 评论 -
[CodeForces - 1316C] Primitive Primes【假FFT?】
[CodeForces - 1316C] Primitive Primes题意:两个函数的系数卷积?得到新的函数。问新函数哪个系数和p互质?思路:对于Ci+jxi+jC_{i+j}x^{i+j}Ci+jxi+j,我们假设aia_iai是第一个与p互质的f(x)f(x)f(x)系数,bjb_jbj是第一个与p互质的g(x)g(x)g(x)系数。那么,Ci+j=(a0bi+j+a1...原创 2020-03-05 21:38:35 · 137 阅读 · 0 评论 -
[CodeForces - 1305C] - Kuroni and Impossible Calculation【同余+鸽巢】
[CodeForces - 1305C] - Kuroni and Impossible Calculation题意:一个长度为n的序列,我们可以得到任意两个数差的绝对值,所有绝对值相乘对m取模的结果?思路:(1)同余定理:如果a≡b(mod m)a \equiv b(mod \ m)a≡b(mod m),那么(a−b)≡0(mod m)(a - b) ...原创 2020-03-05 20:54:03 · 178 阅读 · 0 评论 -
[CodeForces - 1202D] Print a 1337-string...【构造TAT】
题意输出一个含有n个子序列为“1337”的串思路找这种形式的串133(777...)(333...)7 中间7的个数_7, 中间3的个数_3【别忘了前边的3. 子序列“1337”的个数为_7+C(_3, 2) 只需要尽可能找到大的C(_3, 2),那么剩余的就是7【误解】不能用乘法来做!可能有些人(比如我)就会想找到尽可能大的一个组合数是n的一个因子,但是如果n是大质数呢?会爆T....原创 2020-03-02 20:44:11 · 126 阅读 · 0 评论 -
[CodeForces-707C] Pythagorean Triples【构造right三角形】
题意:给出一个整形范围内的数n,判断是不是可以作为一个直角三角形的边,直角边斜边都可以. 另外,必须保证另外两条边是整数。思路:对于相邻平方差,我们可以得到{1, 3, 5, 7, ...}这样一个奇数数列。1 = 1^2 - 0^23 = 2^2 - 1^25 = 3^2 - 2^2……由此可以得出,一个奇数n,有:勾股定理大家一定知道!再接下来,我们考虑(...原创 2020-03-02 13:31:38 · 251 阅读 · 0 评论 -
[CodeForces - 873B] Balanced Substring【前缀和(01串) + map】
题意给一个长度为n的01串,问'0'和'1'个数相同的子串中子串的最大长度思路将01串中的0看作'-1',然后跑一遍for循环统计前缀和。那么如果两个位置ij的前缀和相同,则说明区间[i + 1, j]是一个'0'和'1'个数相同的子串. 那么我们只将未出现过的前缀和用map存起来,于是再次遇到存在于map中的前缀和则可以直接统计答案 注意,初始时需要将mp[0] = 0. 否则,如...原创 2020-03-01 19:56:06 · 206 阅读 · 0 评论 -
[CodeForces - 739B] Alyona and a tree 【树 + 差分 + 二分】
题意:给定一颗树,每个结点有对应点权,每条边也有对应边权。如果dis<v, u> <= val[u],则说明结点u被结点v所管辖。对于每个结点,输出它管辖的结点数目。思路:我们定义dis[ u ]为结点u到根结点的边权和。显而易见dis<v, u> = dis[u] - dis[v],并且dis是递增的无根树转有根树,那么对于任何一条树链,树链上结点u...原创 2020-03-01 17:29:26 · 224 阅读 · 0 评论 -
[CodeForces - 853B] Jury Meeting 【前后缀 + 贪心】
题意:城市[1, n]的jury要到城市0去,要求在城市0至少待够k天。给出所有的航班信息(城市i - 0的航班 || 城市0 - i的航班),每个航班有它飞的时间,以及它的消费。【jury到达或离开城市0的当天不能算于k天】问:所有城市的jury在城市0能待够至少k天的最小花费是多少?思路:定义dp[2][ ],其中dp[0][ i ]:表示第i天前所有jury全部到达城市0的最小花...原创 2020-03-01 12:42:07 · 211 阅读 · 0 评论 -
[CodeForces - 776C] - Molly's Chemicals
题意:给定一个长度为n的数列,找到有多少个区间和是k的次幂。思路:我们要找到区间(l, r],有sum[ r ] - sum[ l ] == power(k, ...) n^2的复杂度肯定不行,所以我们想该如何优化? 由数据范围我们可以知道,k的次幂在1e14内。那么我们可不可以转换为找到是不是存在sum[ l ] = sum[ r ] - pow[ k ]. 这样我们就变成了枚举...原创 2020-02-25 20:34:29 · 156 阅读 · 0 评论 -
[CodeForces - 1294D] MEX maximizing
题意:求当前数列中未出现的最小的数值。数列中的元素可以进行无限次数的+x或-x操作。当然我们要使得最小数值最大化。思路对于当前数列,我们可以得到数列[0, x - 1]的叠加。叠加次数可能为0可能为多,取决于木桶定律。这就给了我们一个提示,也就是统计数列元素值%x的个数。我们的数列最小值now从0开始,如果now%x存在,那么我们用该数值,++now,直到now%x不存在为止。每...原创 2020-02-20 14:22:03 · 117 阅读 · 1 评论 -
[CodeForces - 1304D] Shortest and Longest LIS【构造序列】
题意:n-1个'>''<'的字符串,我们要构造一个长度为n的包含整数[1, n]的序列a[ ]。对于每个s[ i ] == '<'表示a[ i ] < a[ i + 1 ],对于s[ i ] == '>'表示a[ i ] > a[ i + 1 ]。我们找到两个满足条件的序列,输出一个LIS最短的序列,输出一个LIS最长的序列。思路我们将'<'用1替...原创 2020-02-20 11:48:12 · 142 阅读 · 0 评论 -
[CodeForces - 1304] C - Air Conditioner【区间交集问题】
题意:从0时刻开始,会按时间顺序来n个客人,每个客人有各自的满意温度区间。0时刻的初始温度为m. 每一时刻我们可以调节温度为 +1 或 -1. 问是否可以使得n个客人全部满意。思路设两个客人来访时间相差为mx,那么上一个状态可调节的温度区间就是[last.l - mx, last.r + mx],当前区间为[now.l, now.r],如果两个区间有交集,说明可以满足现在这个客人now。如...原创 2020-02-20 10:05:54 · 292 阅读 · 0 评论 -
[CodeForces-1304B] - Longest Palindrome 【暴力哈希匹配】
题意:给出n(1 <= n <= 100)个长度为m(1 <= m <= 50)的字符串,可任意选择其中的字符串,问能构成的回文串长度最大是多少,并且要求输出最长回文串。思路因为n只有100,所以直接暴力!!哈希大水题!!(QAQ,没看数据范围,最后竟然还用了马拉车……,那份代码太丑了,不贴了我们定义两个has1[ ]、has2[ ]分别用来存正串的哈希值和反串的...原创 2020-02-20 08:41:21 · 203 阅读 · 0 评论 -
Codeforces Round #619 (Div. 2)【2020/02/14(情人节的说】
A. Three Strings题意:给三个字符串a,b,c,保证字符串的长度相同,假设为len. 对于,我们必须将c[i]和a[i]或者b[i]交换,问是否可以使字符串a和b完全相同?思路跑一遍for(i, 0->len-1),如果对于所有都有(a[i] == c[i] || b[i] == c[i] || (a[i] == b[i] && b[i] == c[...原创 2020-02-14 21:50:33 · 104 阅读 · 0 评论 -
2017-2018 ACM-ICPC Latin American Regional Programming Contest Problem B – Buggy ICPC
题意:电脑坏了,键入时,如果输入元音那么整个字符串会翻转,如果输入辅音是正常的。给一个字符串s,问有多少种输入可以得到它。思路:如果可以照着它的规则,可以把该串删除到只剩一个字符,删除的方式反过来就成了得到它的一种方式。 首尾是辅音+元音,是一定不合法的。 首尾是元音+元音,那么删除首位置的元音,并翻转整个字符串。 首尾是辅音+辅音,那么删除末尾置的辅音。 ...原创 2020-01-12 20:12:52 · 283 阅读 · 0 评论 -
【线段树||set遍历】Codeforces Round #207 (Div. 1) A. Knight Tournament
Codeforces Round #207 (Div. 1) A. Knight Tournament题意: n个骑士(编号1-n),有m场battle,保证每一场battle的人数>=2。给出m场battle的信息:每一场battle的信息是:给出一个区间[l, r],再给出一个该场battle的胜利者编号won,意思就是说[l, r]中还没有被打败的骑士都会在这一场被won打...原创 2020-01-12 15:16:19 · 200 阅读 · 0 评论 -
Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes
Educational Codeforces Round 75 (Rated for Div. 2) B. Binary Palindromes题意:有n个01串,可以任意交换串内或串和串间的字符。问最多能获得多少回文串。思路:记录奇奇串的个数为oo,记录偶偶串的个数为ee,记录奇偶或偶奇的个数为oe,然后如果oo是偶数,那么奇奇串每两个之间可以交换变成一个回文串,如果oo为奇数,那么如...原创 2020-01-11 22:14:56 · 162 阅读 · 0 评论 -
Codeforces Round #598 (Div. 3) B. Minimize the Permutation
## Codeforces Round #598 (Div. 3) B. Minimize the Permutation题意:一个n个元素的全排列(也就是1,2,3,4,5,…,n的任意一个排列)。有如下操作,可交换i位置和i+1位置的元素。所以显而易见一共有n-1种操作。限制是每种操作只能用至多一次,问能得到的最小的排列是什么。思路:从1开始跑一边n的循环,1一定可以移动到第一个位置。然后...原创 2019-12-19 15:45:52 · 94 阅读 · 0 评论 -
Codeforces Round #605 (Div. 3) D. Remove One Element
Codeforces Round #605 (Div. 3) D. Remove One Element一个数组,最多可移除一个元素,问最长连续上升序列是多长思路:就直接把连续的数组看成一个大元素,然后看相邻的两个大元素中,去掉前一个的尾元素或者去掉后一个的头元素是不是可以两个连起来,遍历一遍找到最大值即可。#include <iostream>#include <cst...原创 2019-12-18 10:30:40 · 103 阅读 · 0 评论 -
【思维+树状数组_差分】Codeforces Round #595 (Div. 3)D. Too Many Segments
题意:给n个线段,我们需要保证每个点(只考虑整数点)的重复不超过k次,让我们找出要剔除的线段,并输出这些线段的位置。D1. Too Many Segments (easy version)思路:没有思路,要说思路就是暴力!(哈哈)真的是纯暴力就是将一个线段分别以每个整数点为起点,右端点为终点,分为len个线段,都存起来。并且按照新的左端点升序,左端点相同线段长度降序排序。然后遍历...原创 2019-10-31 17:55:26 · 112 阅读 · 0 评论 -
【线段树】Codeforces Round #590 (Div. 3) D. Distinct Characters Queries
Codeforces Round #590 (Div. 3) D. Distinct Characters Queries题意:有一个字符串,对这个字符串有两种操作1:修改某个位置的字符为其他字符2:查询 [ l, r ] 的不同字符的数目思路:一共有26个字符,所以我们用26位的二进制来表示字符的存在情况:a ((1 >> 0) & 1), b(1 >...原创 2019-10-31 12:34:15 · 102 阅读 · 0 评论 -
【思维】Codeforces Round #590 (Div. 3) C. Pipes
Codeforces Round #590 (Div. 3) C. Pipes思路:因为管子可以旋转,所以实际上只有两种管子:有拐角的和直的而且非常显然直管子只能横着摆放,所以它的方向只能是向右而有拐角的管子在上一个管子的方向为向右的时候,它只能向上或者向下;在上一个管子的方向为上下的时候,它只能向右如果跑到最后管子在第一行,或者中间就卡死,就是没有摆放的方式;否则就是可以导通#i...原创 2019-10-31 11:58:56 · 154 阅读 · 0 评论 -
【进制转换】Codeforces Round #595 (Div. 3) C.Good Numbers
思路:首先将输入的数据转换成3进制,如果三进制中没有2,说明该数直接就是A GOOD NUMBER否则,我们找到最高位的2,然后使它前面第一个为0的位换为1,然后将这一位后面的所有数替换为0,之前的数保持不变,即是所求#include <iostream>#include <cstdio>#include <algorithm>#include ...原创 2019-10-26 20:49:39 · 111 阅读 · 0 评论 -
Educational Codeforces Round 74 (Rated for Div. 2)
A - Prime Subtraction#include <iostream>#include <algorithm>#include <cstdio>#include <cmath>#include <cstring>#include <string>#include <queue>#inclu...原创 2019-10-09 21:50:53 · 418 阅读 · 0 评论 -
【Codeforces Round #496 (Div. 3)】D. Polycarp and Div 3
题目链接:http://codeforces.com/problemset/problem/1005/D题意:给出一个大数,数位在2e5内,然后要求我们割分这串大数,使尽可能多的数可以被3整除。题解:0除外,所有3的倍数都有一个特点就是每位上的数值相加的和与0对模3同余。(a+b)%c=(a%c+b%c)%c,所以我们可以先将大数的每一位做模3的预处理考虑到所有情况:01 01...原创 2019-07-12 12:09:55 · 134 阅读 · 0 评论 -
【Codeforces Round #552 (Div. 3)】C.Gourmet Cat
题目链接:http://codeforces.com/problemset/problem/1154/C题意:傲娇的小猫在星期1/4/7只吃鱼,在星期2/6只吃兔,在星期3/5只吃鸡。现在有鱼兔鸡各a,b,c份,问小猫最多能连续吃几天。题解:如果鱼兔鸡的比例在3:2:2那么不管从哪天开始吃,都可以吃7天,所以我们先把整周算出来,然后剩下的就从星期一开始枚举能吃几天。最后取最大值。My_Fee...原创 2019-07-12 09:52:22 · 129 阅读 · 0 评论 -
Minimum Ternary String(Codeforces 1009 B)
题目链接:http://codeforces.com/problemset/problem/1009/B题目大意:输入一个数(只含012),我们能够交换0和1以及1和2,但是我们不能交换0和2,我们要经过0次或多次交换得到尽可能小的数(也就是将这串数字尽可能往0 1 2的顺序排)。输出最后的数。题解:思维题。考虑到条件,我们可以发现1是可以任意移动的,然后0和2的相对位置是无法改变的。于是我...原创 2019-04-16 12:41:45 · 125 阅读 · 0 评论