自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 收藏
  • 关注

原创 CF1771C

大意:只要一组数据中存在两个数有公约数即输出YES,否则输出NO。我们可以先进行预处理筛出 1e5以内的素数,然后暴力筛即可。由素数定理可得:任何一个自然数都可以拆成若干个质数的积。而每一组最多只有1e5个数,所有由抽屉原理。

2022-12-14 14:52:03 200 1

原创 CF1299D (1500)

给定一个长度为 n 数列 a,定义 f(f..f(f(a1​,a2​),a3​),...an−1​),an​)现在,请你将数列改变一种顺序,使得最后的值最大。输出你改变后的数列。也容易得知,最后的结果跟 除第一个数字外 其它数字的顺序是无关的。即从第一个数字的二进制中抠掉后面所有数字的二进制。定义一个函数f(x,y) = (x∣y)−y。但是有共同的最高位时,这个最高位会被抠掉!那么,我们只需要让第一个数字最大(那么对整个序列的操作其实也就是。的数字到最前面就好啦。

2022-12-13 22:33:45 311

原创 CF27E (2000) (反素数)

根据上面的三个引理,我们可以直接DFS,一次确认前 个质数的指数,并满足指数单调递减,总成绩不超过 ,同时记录约数的个 数即可。, 且 c1 >= c2 >= c3 >= c4 >= c5 >= c6 >= c7 >= c8 >= c9 >= c10,我们可以把当前走到每一个素数前面的时候列举成一棵树的根节点,然后一层层的去找。引理1: 1 ~ N 中的反素数,就是 1 ~ N中约数个数最多的数中 最小 的一个。x的质因子是连续的若干个最小的质数,并指数单调递减。

2022-11-30 17:41:52 431

原创 CF1579C (1500) 枚举

暴力枚举每一个点作为 "V" 的交点,尽可能地延伸,即尽量地去找更长的满足条件的边,如果长度小于 k 就找到不为 " * " 的点,就不更新,否则就一直往上找,不断地更新 vis 数组。最后判断所有需涵盖是否全部涵盖就行了。给出 n,m,k,给出一个大小为 nm 的矩形。矩形仅包含 " * " 和 " . "。需要你用任意个仅包含 " * " 的开口向上 v 形结构,两边斜率为1,且边长严格大于 k(包含交点),来包含所有矩形的 " * "。用 st(i,j) 表示第 i 第 j 列有没有被涵盖。

2022-11-29 21:16:31 136

原创 CF1579D (1400) 贪心+优先队列

n 个人中,每个人都有一个社交能力值,其中第 i 个人的社交能力值是一个非负整数 ai,它表示这个人可以与另一个人社交的次数。由于我们要最大化选择次数,所以我们希望能选出 2 个大于 0 的数的次数尽可能的多,也就是使得可以被选择的数的数量尽可能多。一旦一个数字被减到 0,那么它在之后的决策中就不可以被选,而选不出 2 个大于 0 的数,就意味着必须结束选择。而选择非最大、次大的数会导致可以选择的数的数量更快的减小,故选择最大、次大两个数一定不会更劣。综上,每次贪心的选择最大、次大两个数是正确的。

2022-11-29 10:33:34 308

原创 CF1305C (1600) (抽屉原理)

1≤i

2022-11-28 20:48:55 75

原创 CF1307C (1500)(贪心+DP/暴力)

出现在s的下标1,3,5,这刚好构成了一个等差数列,而公差是 2。个 s 中的子序列是不同的当且仅当两个字符串在 s 中出现的下标是不同的。她认为一个字符串 t 是隐藏的当且仅当 t 是 s 的子序列且 t 在 s 中出现的下标构成了一个等差数列(公差必须为一个。因此长度为2的序列的最优解必然包含了长度大于2的最优解。假设长度大于2的序列是秘密信息,那么我们取这种序列的前两个字符,同样可以构成数量相等的长度为2的子序列。因为题目中要求等差,所以在同一长度的序列中,

2022-11-28 16:53:52 64

原创 CF1312C (1400)

观察到,对于k=1,无论序列如何,都是可行的。那么除了1之外,最小的是2,所以我们暴力将一个数拆成上面形式的复杂度不超过O(log2​ 10^16).复杂度显然可以过。对于一个可以做到的序列,那序列中每一个数绝对能分解成k^p1​+k^p2​+k^p3​+...的形式.对于拆分出来的指数用数组存储次数,一旦>1就可以跳出输出答案了。对于第i次操作,我们可以放弃,或给数组中任意一个元素加上k^i。能否对一个数组执行任意次操作,使得其变为目标数组。当序列中的数所拆分出的k的指数有重合,则该序列无解。

2022-11-28 15:43:29 57

原创 CF750C (1600)

拿第一个样例,假设一开始分数为0,分数线为x(即当分数线为1900时原始分数为1900-x),则0>=x,-7

2022-11-23 20:11:18 262

原创 CF785C (1600)

可以得出第 m+1 天减少 1 ,第 m+2 天减少 2 ,第 m+3 天减少 3 ...... 而实际应该减少的即为 n - m,用等差数列求和即 可,但从第1天开始枚举会超时,所以根据等差数列求和公式可以从sqrt(2*(n - m))开始 枚举。如果有m个谷物不适合放进谷仓,谷仓就会变满,不适合的谷物就会被带回来(在这个问题上,我们可以假设不适合放进谷仓的谷物没有被考虑在内)。第一天结束时,一只麻雀来了,吃了一粒粮食,所以还剩下5-1=4粒粮食。

2022-11-23 16:01:29 308

原创 CF804B(1400)

我们有一串字母'a'和'b'。我们想对它进行一些操作。在每一步中,我们选择字符串中的一个子字符串“ab”,并将其替换为字符串“bba”。如果我们没有“ab”作为子字符串,我们的工作就完成了。如果字符串中某个位置的字母“a”后面紧接字母“b”,则字符串“ab”将显示为子字符串。第二个例子:"aab"→"abba"→" baba"→"bbbbaa"。第一行包含由字母'a'和'b'组成的初始字符串,长度从1到10^6。输出按109 + 7取模的最小步数。第一个例子:"ab"→"bba"。

2022-11-22 22:17:38 67

原创 CF809A(1500)

求数列所有的不同子集(元素个数大于等于2),然后求所有子集内最大数减最小数的和。快速幂求2的幂次即可。

2022-11-22 22:08:46 60

原创 字符串专场(第一周)题解

字符串专场(第一周)题解

2022-11-08 09:00:00 108

原创 5小时手撕 - 通讯录管理系统

#include <iostream>#include <string>#define MAX 1000 using namespace std;//人员信息结构体struct Person{ string m_name; //姓名 string m_sex; //性别 int m_age; //年龄 string m_phone; //电话 string m_addr; //住址};//通讯录结构体struct Addressbooks.

2022-03-10 22:45:49 180

原创 二分 | 思想 | 题解

二分步骤:1. 先写一个 check 函数2. 判定在 check 的情况下(true和false的情况下),如何更新区间。3. 在 check(m) == true 的分支下是:4. l = mid的情况,中间点的更新方式是m = (l+r+1) / 25. r = mid的情况,中间点的更新方式是m = (l+r) / 2这种方法保证了:1. 最后的 l == r2. 搜索到达的答案是闭区间的,即a[ l ]是满足 check() 条件的。例题 1题目描述给定一个按照升.

2022-02-28 00:15:00 105 1

原创 基础算法模板 (快速幂 | 二分 | 快排 | 双指针)

1,快速幂算法模板求 mk%p,时间复杂度 O(logk)。int qmi(int m, int k, int p){ int res = 1 % p, t = m; while (k) { if (k&1) res = res * t % p; t = t * t % p; k >>= 1; } return res;}2,二分查找算法模板二分模板一共有两个,分别适用于不.

2022-02-13 15:39:38 551

原创 《STL容器、位运算与常用库函数——例题 | CSDN创作打卡》

67. 数字在排序数组中出现的次数https://www.acwing.com/problem/content/63/class Solution {public: int getNumberOfK(vector<int>& nums , int k) { int ans = 0; for(int i = 0; i < nums.size(); i++){ if(nums[i] == k) ans++;

2022-02-09 12:11:30 747

原创 C++常用标准模板库——algorithm

algorithm使用algorithm头文件,需要在头文件下面加一行“using namespace std”,才能使用。algorithm的常用函数(1) max(),min(),abs()max(x,y)和min(x,y)分别返回x和y的最大值和最小值,且参数必须是两个(可以是浮点数),如果要返回三个数x,y,z的最大值,可以使用max(max(x,y),z)的写法。abs(x)返回x的绝对值。注意,x必须是整数,浮点型的绝对值要用math头文件下的fabs。int x = -1, y .

2022-02-01 00:15:00 2895

原创 《第九讲 位运算与常用库函数 | CSDN创作打卡 》

C++帮我们实现好了很多有用的函数,我们要避免重复造轮子。位运算& 与| 或~ 非^ 异或>> 右移<< 左移常用操作:求x的第k位数字 x >> k & 1 lowbit(x) = x & -x,返回x的最后一位1常用库函数、reverse 翻转翻转一个vector:reverse(a.begin(), a.end());翻转一个数组,元素存放在下标1~n:reverse(a ..

2022-01-31 00:30:00 86

原创 第八讲 STL容器

STL是提高C++编写效率的一个利器。#include <vector>vector是变长数组,支持随机访问,不支持在任意位置O(1)插入。为了保证效率,元素的增删一般应该在末尾进行。 声明 #include <vector> 头文件 vector<int> a; 相当于一个长度动态变化的int数组 vector<...

2022-01-31 00:15:00 93

原创 C++常用标准模板库——bitset

bitsetC++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。下面是具体用法构造函数bitset常用构造函数有四种,如下bitset<4> bitset1;  //无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12);  //长度为8,二进制保存,前面用0补充 string s = "100101"; bitset<10> bits.

2022-01-30 00:30:00 247

原创 C++常用标准模板库——pair

pairpair是个很实用的数据结构,当想要将两个元素绑在一起作为一个合成元素,又不想定义一个结构体的时候,可以使用pair。Pair的本质就是含有两个类型的结构体,这两个类型可以任意指定。pair的定义,pair<typename,typename> name,要使用pair,需要添加#incldue <utility>的头文件,map的头文件里也包含pair。Pair有两个参数,一个是first,一个是second分别对应pair中的2个元素的类型。如果想在定义pair.

2022-01-29 00:30:00 1088

原创 C++常用标准模板库——stack

stackStack翻译为栈,是STL中实现一个后进先出的容器。Stack的定义,stack<typename> name要使用stack需要加上头文件#include<stack>。Stack容器内元素的访问,由于栈本身就是一种后进先出的数据结构,在STL的stack中只能通过top()来访问栈顶元素。stack<int> s ; s.push(3) ; s.push(1) ; s.push(2) ; s.push(5) ;...

2022-01-29 00:15:00 1357

原创 C++常用标准模板库——queue

queuequeue就是队列,在STL中是实现了一个先进先出的容器,要使用queue,需要在加上queue这个头文件。queue的定义,queue<typename> q;其中typename可以为任何类型或容器。queue的访问,由于队列是一种先进先出的限制性数据结构,因此在STL中只能通过front()来访问队首元素,或是通过back()来访问队尾元素。 queue<`int`> q ; for(int i=1;i<5;i++){...

2022-01-28 00:30:00 3147 1

原创 C++常用标准模板库——map

mapmap翻译成映射,map可以将任何基本类型(包括STL容器)映射到任何基本类。(包括STL容器)。如要使用map,需要添加map头文件,并在头文件底下加上“using namespace std”,这样就可以在代码中使用map了。map的定义,map[HTML_REMOVED] mp;map和其他STL容器的定义上有点不同,因为map需要确定映射前类型(键key)和映射后类型(值value),map存储的数据类型是一对K-V结构的数据。如果map是字符串到整型的映射,必须使用string而不能.

2022-01-28 00:15:00 2424

原创 string库的简介和使用

stringC++STL中加入string类型,对字符串常用需求功能进行了封装,使得操作起来更方便,且不易出错。如果要使用string,需要添加string头文件,即#include<string>,注意string.h和string是不一样的头文件。除此之外要想使用string,还要在头文件下面加上一句“using namespace std”,这样就可以在代码中使用string了。string的定义:定义方式与基本数据类型相同,只需要在string后面跟上变量名称即可。eg. str.

2022-01-27 13:37:53 4329

原创 结构体、类、指针、引用——习题

78. 左旋转字符串https://www.acwing.com/problem/content/74/class Solution {public: string leftRotateString(string str, int n) { string res; if(n != str.size()){ for(int i = n; i < str.size(); i++) res += st

2022-01-27 00:15:00 81

原创 结构体、类、指针、引用——例题

21. 斐波那契数列https://www.acwing.com/problem/content/19/class Solution {public: int Fibonacci(int n) { if(n <= 1) return n; else return Fibonacci(n - 1) + Fibonacci(n - 2); }};16. 替换空格https://www.acwing.com/problem/content

2022-01-26 00:30:00 93

原创 第七章 类、结构体、指针、引用

类与结构体类的定义: 类中的变量和函数被统一称为类的成员变量。private后面的内容是私有成员变量,在类的外部不能访问;public后面的内容是公有成员变量,在类的外部可以访问。 类的使用:#include <iostream>using namespace std;const int N = 1000010;class Person{ private: int age, height;...

2022-01-26 00:15:00 121

原创 C++中的函数——习题2

816. 数组翻转https://www.acwing.com/problem/content/818/#include <bits/stdc++.h>using namespace std;void reverse(int a[], int size,int n){ for(int i = size; i >= 1; i--) cout << a[i] << " "; for(int i = size+1; i <= n;

2022-01-25 00:30:00 205

原创 C++中的函数——习题1

810. 绝对值https://www.acwing.com/problem/content/812/#include <iostream>using namespace std;int main(){ int n; cin >> n; cout << abs(n) << endl; return 0;}806. 两个数的和https://www.acwing.com/problem/con

2022-01-25 00:15:00 403

原创 《C++中的常见函数——例题+代码实现 | CSDN创作打卡》

804. n的阶乘https://www.acwing.com/problem/content/806/#include <iostream>using namespace std;int fact(int n){ int a = 1; for (int i = 1; i <= n; i ++ ){ a *= i; } return a;}int main(){ int n; cin >>

2022-01-24 00:30:00 323

原创 《第六章 C++中的函数 | CSDN创作打卡》

函数基础一个典型的函数定义包括以下部分:返回类型、函数名字、由0个或多个形参组成的列表以及函数体。 编写函数 我们来编写一个求阶乘的程序。程序如下所示:int fact(int val){ int ret = 1; while (val > 1) ret *= val -- ; return ret;}函数名字是fact,它作用于一个整型参数,返回一个整型值。return语句负责结束fact并返回ret的值。...

2022-01-24 00:15:00 148

原创 字符串习题2

771. 字符串中最长的连续出现的字符(双指针)https://www.acwing.com/problem/content/773/#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){ int n; cin >> n; while(n--) { string s;

2022-01-23 00:30:00 150

原创 set 中的常用函数及用途

set翻译为集合,是一个内部自动有序且不含重复元素的容器。默认是升序。底层采用红黑树实现。set的定义:set<’typename’> s,降序的定义方式为set<typename,greater<typename>> s。typename可以是任意类型包括STL容器。Set数组的定义方式为,set<typename> s[size].s[0]…s[size-1]都是set类型。迭代器的定义方式set<typename>::iterator .

2022-01-23 00:15:00 2450

原创 vector(动态数组)

1. vector(动态数组)vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:#include<vector>;一、vector 的初始化:可以有五种方式,举例说明如下: (1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。 (2)vector&lt...

2022-01-22 00:30:00 1489

原创 字符串习题1

762. 字符串匹配https://www.acwing.com/problem/content/764/#include <bits/stdc++.h>using namespace std;int main(){ float a,b; string s1,s2; cin >> a >> s1 >> s2; int l = s1.size(),ans = 0; for (int i = 0; i &l

2022-01-22 00:30:00 201

原创 第五章 C++中的字符串

字符与整数的联系——ASCII码每个常用字符都对应一个-128~127的数字,二者之间可以相互转化: 常用ASCII值:’A’-‘Z’ 是65~90,’a’-‘z’是97-122,’0’-‘9’是48-57。 字符可以参与运算,运算时会将其当做整数: 练习:输入一行字符,统计出其中数字字符的个数,以及字母字符的个数。字符数组字符串就是字符数组加上结束符’\0’。可以使用字符串来初始化字符数组,但此时要...

2022-01-21 00:30:00 413

原创 C++字符串——习题

760. 字符串长度https://www.acwing.com/problem/content/762/#include <iostream>#include <cstring>#include <algorithm>using namespace std;int main(){ char s[111]; cin.getline(s,111); cout << strlen(s) << endl;

2022-01-21 00:30:00 787 1

原创 C++数组——例题

AcWing 737. 数组替换#include <iostream>#include <cstring>#include <algorithm>const int N = 10;int X[N];using namespace std;int main(){ for(int i = 0; i < N; i++){ int a; cin >> a; if(a <= 0)

2022-01-20 00:15:00 857

空空如也

空空如也

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

TA关注的人

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