自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小飞猪的博客

半醉寻过往,江湖何处藏

  • 博客(23)
  • 收藏
  • 关注

原创 容斥定理

题意:给出一个数N,求1至N中,有多少个数不是2 3 5 7的倍数。 例如N = 10,只有1不是2 3 5 7的倍数。思路:给定的范围很大,这里我们可以巧妙地运用容斥定理。容斥原理:假如有两个集合:A,B,则AUB = A+B-AB三个集合:A,B,C,AUBUC = A + B + C - AB - AC - BC + ABC四个集合,可以想象成3维的,AUBUCUD = A+B...

2020-03-28 09:34:49 1077

原创 codeforce..Sasha and a Bit of Relax

类似于前缀和的思想。。代码:#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<map>#include<vector>#include<set>#include<string>#...

2020-03-25 12:33:15 119

原创 codeforce..Remove One Element

题意:可以删去一个数,找出最长的上升子序列思路:dp。用0行的dp数组记录当前位置为末尾的最大上升子序列的长度,用1行的dp数组记录当前位置为开始的最大上升子序列的长度。然后我们从前遍历一次,取当前位置为首的最大长度,加上去掉当前点前后两段加和的最大长度,取最大值,遍历之后即为答案。代码:#include<cstdio>#include<iostream>#i...

2020-03-25 11:10:16 177

原创 Vasya and Multisets

题意:在一个集合中只出现一次的数是nice的。给出一个集合,我们能否将其分为两个集合,每个集合的nice数的数量一样多。思路:因为每个数都是小于等于100的,所以我们开个数组b将每个数出现的次数记录下来。还要记录出现次数为1和大于等于三的数量。因为等于1的,肯定是nice,那我们一定得将它们分开在两个集合中。如果等于1的数量是偶数,我们只要将前一半的1的数分到一组,其余的数分到另一组就可以了...

2020-03-25 09:34:14 132

原创 codeforce.. WOW Factor

题意:给出一串字符,vv算作一个w,问字符串中包含wow的个数。思路:最开始只想求出所有w的字段长度,在求出所有o的字段长度,再分别加和乘就可以了。不过工作量大不说,还很容易漏判和错判很多情况。后来想到了线性时间解决的办法。用s记wow的总数,l记vv的总数,t来记录所有出现过的vvo的数量。每次遇到o,wo的数量就是之前的wo数量加上之前vv的数量。代码:#include<cst...

2020-03-25 09:09:02 227

原创 codeforce. Vitamins

题意:想要得到ABC,所需要的最小花费是多少。思路:由于给出的是ABC,又有不用类型的搭配,与二进制很相似,所以我们用二进制来表示。每次计算得到当前二进制数的最优解。代码:#include<cstdio>#include<iostream>#include<algorithm>#include<queue>#include<m...

2020-03-24 20:43:17 138

原创 codeforce. Just Eat It!

题意:如果有[l,r]这一段的和比数组总和大,就是NO,否则就是YES思路:就一段一段判断就可以。如果加和之后比a[i]还小,那就从a[i]从新开始计数。从一开始之后还要从2开始一遍,因为从一开始的,无法忽略不存在1的这种情况。代码:#include<bits/stdc++.h>using namespace std;long long n,k,t,mod=1e9+7,s...

2020-03-24 09:54:18 109

原创 codeforce. Covered Path

题意:给出初始速度,末尾速度,总时间,每秒速度变换最大值d,求最大的走过的路程。思路:因为最后要恢复到b这个速度,所以我们每秒钟最优的速度都可以得到。从前看,每秒的最大速度是v1+d,从后面看,每秒的速度是v2+d*(s-1)//不理解的话笔推一下即可代码:#include<iostream>#include<stdio.h>#include<bits/...

2020-03-24 09:43:13 128

原创 codeforce Maximum Sum of Digits

题意:给出n,让你在1到n中找到两个数,满足a+b等于n并且使S(a)+S(b)的值最大。S就是每位数位上的数值加和的结果。思路:这道题的解题点在于加和最大,而数位上的数值中9是最大的,所以我们要尽可能多的凑出9这个数字。我们可以这样想,首先讲最高的数值分离出来减一,作为a,因为他是n范围内9最多的数。然后剩下的数加一,作为第二个数b。这样的结果应该就是最优的。代码:#include&...

2020-03-22 16:37:29 189

原创 codeforce. D. Pair of Topics

题意:太简单了,一读就懂。思路:预处理a[]-b[]的值,然后使用二分搜索寻找结果。注意,upper_bound函数很好用,手打二分也可以。如果不用,就会超时。////别问我为什么知道的代码:#include<bits/stdc++.h>using namespace std;const int N = 2e5+10;int a[N] , b[N] , c[N] , d...

2020-03-18 22:44:39 177

原创 A. Competitive Programmer

题意:给出一串数字,数字的顺序可以随意变换,如果有一种情况可以是该数字能够整除60,那么输出red;否则输出cyan思路:60=2 * 2 * 5 * 3 = 10 * 2 * 3。所以如果要想输出red,就要满足下面三个条件:1 序列必须存在02 序列所有数字之和必须是3的倍数3 序列在只有一个0的情况下,必须有2的倍数存在代码:#include<bits/stdc++....

2020-03-18 21:31:48 324

原创 孙子剩余定理(chinese remainder theorem)

问题:今有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?简单点说就是,存在一个数x,除以3余2,除以5余三,除以7余二,然后求这个数。再明白这个解法的原理之前,需要先知道一下两个定理:定理1:两个数相加,如果存在一个加数,不能被整数a整除,那么它们的和,就不能被整数a整除。定理2:两数不能整除,若除数扩大(或缩小)了几倍,而被除数不变,则其商和余数也同时扩大(或缩小)相同...

2020-03-18 20:38:10 572 1

原创 C. Frog Jumps

题意:一行字符串由L和R组成,数组从1标号到n。青蛙从0的位置开始起跳,想到达n+1的位置,当他跳到L的时候只能往左跳,跳到R的时候只能往右跳,跳的范围由你来定。问最小的d是多少思路:这道题超级无敌水。你只需要从头到尾判断一边字符串,如果是L的话是一定不行的。这里我们只看位置是R的时候,因为当位置上是L的时候,一定是往左跳到里当前位置最近的R才能更好的跳到n+1这个位置。每次我们都用pos更...

2020-03-13 09:04:06 546

原创 codeforce. E. Cyclic Components

题意:有n个点,m条边,问组成的没有杂边的回路的个数。思路:由题意,不含杂边的回路,那其中每个点的度数都是二,我们储存的时候就将和此点有联系的点放到vector中,然后每个点进行dfs,就可以找到答案。代码:#include<iostream>#include<vector>#include<bits/stdc++.h>using namespa...

2020-03-10 19:21:33 139

原创 codeforce A. Dead Pixel

#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;int t ,a , b, x , y;int main(){ cin >> t; while(t--) { cin >> a >> b >>...

2020-03-08 19:07:42 206

原创 codeforce. B. Code For 1

题意:给出三个整数n , l , r , n是给出的数字,l和r是范围。集合里面初始只有n一个元素,你每次可以使集合里任意一个大于一的数进行除二的操作,除二的余数放在当前位置,两侧分别是刚才的数除二的商。反复进行此操作,知道集合中只剩下1和0.问在l到r的范围里,有多少个1.思路:从这道题的题意我们就可以看到,每个数进行操作之后,左右两侧的数是一模一样的,那左右的操作也是一样的。那我们就可以...

2020-03-08 18:54:10 164

原创 计算方法之递归分治

一.全排列问题问题描述:有一组数R,需要输出它的全排列。R的递归可定义如下:当个数n为1时,Perm® = ®,其中r是集合R中唯一的元素当个数n大于1时,Perm®由(r1)Perm(R1),(r2)Perm(R2),(r3)Perm(R3),…,(rn)Perm(Rn)构成其中Ri = R - {ri} 即该集合中减去对应元素思路:看上面的问题描述几乎就懵掉了。说的乱乱的,我...

2020-03-06 14:17:24 209

原创 codeforce.C. Primitive Primes

题意:给出两个多项式,使两个多项式相乘,得到的多项式,存在系数不被p整除,则输出这个系数所在项的次幂。思路:其实读懂题意,很好做。因为想得到系数不能整除p,那么两个项都不能整除p,那我们只要找到a里面不能整除p的,再找到b里面不能整除p的,就可以输出两项的次幂和了#include <bits/stdc++.h>using namespace std; int m...

2020-03-05 18:46:19 197

原创 codeforce. B. String Modification

题意:有n个测试数据。每个测试数据第一个数t,表示字符串的长度。接下来输入字符串。你可以指定一个长度,然后从第一个字符开始反转该长度的字符串,直到最后一个字符反转完毕。问指定的长度为多少时,可以得到字典序最小的字符串。输出字典序最小的字符串以及指定的长度的大小。思路:因为数据给的很小,所以我们直接模拟的做就行了。代码:#include<bits/stdc++.h>...

2020-03-05 13:19:21 168

原创 codeforce B. Good String

题意:这道题其实不难,就是题意容易理解跑偏了。给你一串字符串,你可以选择一个字符“<",删除它左边的字符;你也可以选择字符“>"删去它右边的字符。现在想得到字符串都是由一样的字符组成,***但问的是***在进行上述操作之前他要删去至少多少个字符才能满足题意。思路:正确理解了题意,那就很简单了。在第一个>左边的字符你都无法改变,最后一个<右边的字符你也无法改变。所以只要...

2020-03-03 19:41:57 177

原创 codeforce A1. Add on a Tree

题意:一棵树,你可以选定任意两个叶子,给他们之间的路径赋值,问是否能选定任意两条边赋任意的值。思路:其实没有想象的那么复杂,从给的例子就可以看的出来,只要是有一个节点,他的入度是1,出度也是1,那这两条边一定是不可以的,其他情况就都可以满足题意。代码:#include<bits/stdc++.h>#include<iostream>#include<st...

2020-03-03 13:21:04 152

原创 codeforce C. Remove Adjacent

题意:给你一个字符串,每当一个字符的相邻字符在字母表中与它相邻,你就可以选择删掉它。问最大可以删去的字符是多少思路:最开始想的是从头开始判断,但是情况太多,总是会漏掉。注意到这道题数据很小,所以不如直接暴力求解。每次我们都循环一边,找到满足删去条件的最大的字符,我们把它删掉,然后继续循环,直到没有符合条件的。代码:#include<bits/stdc++.h>using n...

2020-03-02 20:25:08 538

原创 codeforce B. Journey Planning

题意:输入一个数n,接下来输入n个数,b[i]表示的是美丽值。她所经过的城市的路线必须满足b[j]-b[i]=j-i。问最大的美丽值是多少。思路:只要你稍微动一下你的笔,你就会发现,要想满足b[j]-b[i]=j-i,那移项之后就是b[j]-j=b[i]-i,所以说我们只要储存b[i]-i累加的值,直接线性寻找就可以了。代码:#include<bits/stdc++.h>u...

2020-03-02 19:35:08 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除