自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 笔记本推荐

联想小新Air14Plus 2022 R76800HS联想ThinkBook 14+ 2022 i5-12500H联想小新pro14 R76800HS华硕A豆Pro i5-12500H

2022-10-29 14:02:57 160 1

原创 AcWing食用指南

​ AcWing是一个计算机编程相关知识学习网站,其中有算法课程与工程课程。适合计算机相关专业以及想要从事计算机相关专业工作的同学食用。这是一个很适合学习算法的平台,学习过程非常平滑,适合所有阶段的同学。

2022-10-16 18:32:32 3817

原创 # CF #808 Div.2(A - C)

​既然是这样分布,我们不如直接令gcd(i,ai)==i,因为ai没有说不能取重复的,所以直接对于每个i去[l,r]里找i的第一个倍数即可。​由于i的取值是[1,n],所以gcd若是结果不同的话,一定是分布在[1,n](gcd(a,b)...

2022-07-17 12:08:29 261

原创 # CF #807 Div.2(A - D)

​给定2n个数和k,请问是否存在n对(i,j)abs(ai-aj)>=k​先排序然后对1和n+1,2和n+2连续比对。​赛时拖了节奏因为看成了==k下次注意读题。

2022-07-17 11:22:42 180

原创 AtCoder ABC 131

Description:​ 给你一段区间[a, b] (

2022-07-09 10:51:11 139

原创 AtCoder ABC 128(C ~ E)

Description:​ 有n盏灯和m组设定,要求输出同时符合m组设定的灯开关的方案数​ 设定:s_i中亮灯的数量%2 == p_iSolution:​ 因为跟开关灯有关也就是01有关 再加上N只有10 于是我们就用01串枚举一下灯的状态​ 用位运算来check是否合法Code:D equeue(暴力 贪心)Description:​ 给出长度为n的序列 可以在头部或者尾部进行k次四种操作​ 1 从头部拿出一个 2 把从头部拿的任意一个放回去​ 3 从尾部拿出一个 4 把从尾部拿的任意一个放回去S

2022-06-04 08:13:49 318

原创 AtCoder ABC 127(C ~ E)

Description:​ 给出若干个区间m 请问有多少个点被覆盖了m次Solution:​ 差分求解即可Code:D Integer Cards(贪心 排序)Description:​ 给出n个值 给出m组数对(可用次数,值) 可用任意选数对中的值来替换原来值 求替换后最大和Solution:​ 贪心地想 最大的值我一定要给他换上 于是结构体排序值大优先 小根堆维护一下n个值 替换即可Code:E Cell Distance(枚举 + 排列组合)Description:​ 给你三个数 n,m,k,

2022-06-04 00:21:24 216

原创 AtCoder ABC 126(C ~ E)

Description:Solution:​ 枚举[1, n] 每个需要cnt次才能大于等于k 对答案贡献为(1 / 2) ^ kCode:D Even Relationhttps://atcoder.jp/contests/abc126/tasks/abc126_c)(DFS + 染色 + 贪心)Description:​Solution:​ 随便从一个地方开始遍历 如果连着是偶数就染同一个颜色,若不是偶数就换​ a - b 偶 && a - c 偶 那么b - c 是偶​ a - b 奇 && a

2022-06-03 20:05:13 259

原创 AtCoder ABC 251 (D ~ E)

AtCoder ABC 251D - At Most 3 (Contestant ver.)(构造 + 思维)Description:​ 构造一个长度为300的序列 任取1或者2或者3个数 使其能构成1~1e6的所有数Solution:​ 将1e6想办法分为三分 如果是想着/3的话 那就走上了歪路​ 应该想的是 将六位数分割成六位 一个数可以影响两位​ 三个数相加就可以影响6位了 于是构造方案出现Code:signed main(){ int w; cin >&gt

2022-05-15 12:55:48 342 3

原创 AtCoder ABC 249

A Jogging没看清楚题 a不是移速 所以卡了十分钟 语法题int main(){ int a, b, c, d, e, f, x; cin >> a >> b >> c >> d >> e >> f >> x; // 速度 b 和 e int aa1 = b * a, bb1 = e * d; int res1 = aa1 * (x / (a + c)); int

2022-04-24 01:15:48 382

原创 大连大学2022 4月程序设计竞赛

E 数圆圈(规律 模拟)Description:​ 定义f(x) = x里各位圆圈数量之和​ 现在给定x 对x进行k次f(x)操作 返回结果​ 0, 6, 9 = 1; 8 = 2;Solution:​ 那我们考虑最坏的情况 那就是17位上面都是8 那也是17*2 会化成一个很小的数​ 我们就可以知道 对于一个x 我们可以通过数十次次迭代之内 将他变成01的循环态​ 于是我们模拟即可 (用字符串不会挂 但是用整数是会挂的 因为x可能是负数Code:LL get(LL x){

2022-04-17 23:46:31 378

原创 AtCoder ABC 247

A Move Right(水)字符串右移一位 然后在左边补0void solve(){ string s; cin >> s; s = '0' + s; s.erase(s.end() - 1); cout << s;}B Unique Nicknames(读题)Description:​ 每个人有两个备选名字 然后要给每个人从这两个里选一个命名​ 要求任一人的名字 不能跟其他人的备选名字相同Solution:​ map存

2022-04-11 22:29:40 408

原创 CF Div2 781

A GCD vs LCM(数论 + 思维)Description:​ 求4个和为n的数 要求 gcd(a, b) == lcm(c, d)Solution:​ 令lcm(c, d) = 1 则 c = 1 d = 1​ 因为x取任意正整数 gcd(1, x) = 1始终成立​ 令gcd(a, b) = 1 则 a = 1 b = n - 3Code:void solve(){ int n; cin >> n; cout << 1 << ' ' &l

2022-04-10 11:57:50 424

原创 2022 04 05学习记录

早上补牛客比赛题下午一觉睡到4点 复习会数学吧gk的树题目链接:https://ac.nowcoder.com/acm/contest/30825/F反省 在队友做出了数学题的时候自己放弃了 其实这题应该在我的能力范围内 没有写出这题很不应该Description:​ 给定一棵树,每次操作可以删一条边 最少需要多少次操作使得每个节点的度数都<=kSolution:​ 从叶子节点开始处理 若叶子节点度数大于k 就删边 模拟一下倒推回根节点 可以用dfs 也可以dpCode:const

2022-04-06 11:42:47 3590

原创 竞赛中的STL库函数使用

简单的介绍一下STL的用法 看起来内容很多 只要遇到对应的题写个几题 很容易就熟能生巧了为何cpp是竞赛使用最为广泛的语言呢 1 速度快 2 STL强大 因此掌握好STL 一定能让你做题的效率更上一层楼Vector介绍​ 你可以把vector当做一个动态的数组 长度可扩容 且在main里开vector是开在堆空间的​ 初始化//需要头文件 #include <vector>vector<int> q;vector<node> q;//定义长度ve

2022-04-01 14:41:59 1053 1

原创 AtCoder #ABC 245

A Good morning(模拟)过水void solve(){ int h1, m1, h2, m2; cin >> h1 >> m1 >> h2 >> m2; if(h1 == h2) { if(m1 == m2) puts("Takahashi"); else if(m1 < m2) puts("Takahashi"); else puts("Aoki")

2022-03-29 21:25:07 286

原创 CF #125 Edu(A ~ D)

CF Edu125 Div.2A - Integer Moves(思维)Description:​ 给定一个坐标x y 从0 0开始走 每次走的欧几里得距离必须是整数 问几步能到Solution​ 0 0到0 0 0步​ 如果是直角三角形 就可以一步到​ 如果不是直角三角形 那就先走一步横再走一步竖 两步到Code:void solve(){ int x, y; cin >> x >> y; if(x == 0 && y == 0) {co

2022-03-25 13:45:20 96

原创 AtCoder ABC 244(A ~ E F待补)

AtCoder ABC 244A - Last Letter(语法)Description:​ 输出给定字符串的最后一个字符Resolution​ 过水Code:void solve(){ int n; string s; cin >> n; cin >> s; cout << s[n - 1];}B - Go Straight and Turn Right(模拟)Description:​ 对于给定操作序列 S

2022-03-22 00:10:18 468

原创 AtCoder ABC 243题解

AtCoder ABC 243A Shampoo(水)Description:​ 三个人轮流用水 请问用到谁的时候水就用完了Method:​ 水题 但是因为%和/用错了 导致蛙了好几次​ 分类讨论 如果一轮用不完 就取余再判断 如果一轮用得完 直接判断Code:void solve(){ int v, a, b, c; cin >> v >> a >> b >> c; int sum = a + b + c; int

2022-03-13 11:50:56 1940

原创 CF #776 Div.3题解(A ~ E)

CF #776 Div.3A Deletions of Two Adjacent Letters(思维)Description:给定一个字符串s和字符c 每次可以从字符串s中消除相邻的两个位置的字符 问是否能通过消除来得到字符cMethod:枚举字符串中每一个c 若前后都为偶数的话 能Code:void solve(){ string s; char c; cin >> s >> c; for(int i = 0; i < s.size

2022-03-09 22:09:48 240

原创 CF #762 Div.3(A ~ E)

CF #762 Div.3A Square String?(翻译)Description:​ A string is called square if it is some string written twice in a row.​ 如果一个字符串是某个连续写了两次的字符串,则称为square​ 给定字符串 判断字符串是否是squareMethod:​ 一开始没有读懂题目 也没有仔细看样例 所以草率地认为是含有奇数个字符时 NO​ 其实就是扫一遍判断是否是由两个相同字符串构成Code:

2022-03-07 22:48:27 140

原创 AtCoder ABC 239题解(A ~ E)

AtCoder ABC 239A Horizon(语法 + 数学)sqrt(a∗b)==sqrt(a)∗sqrt(b)sqrt(a * b) == sqrt(a) * sqrt(b)sqrt(a∗b)==sqrt(a)∗sqrt(b)int main(){ LL n; scanf("%lld", &n); double res = sqrt(n) * sqrt(12800000 + n);//防溢出 printf("%.2f\n", res); r

2022-03-07 14:06:14 4563

原创 CF#772 Div.2 A~C 题解

A. Min Or Sum(位运算 + 构造)Description:​ 对一个数组 任意选择ai aj 用 x y替换他们 不限次数​ 要求ai | aj == x | y​ 问操作完毕后数组和的最小值Method:​ 将ai aj换到最小 指的是尽量让每个位数上只有一个1​ 5|6 – > min(0|7)​ 所以使数列的全部数得到min 但是又要保证位上原有的1不发生改变 那么删去多出来的1即可​ 在代码上的体现就是|全部数Code:void solve(){ int

2022-02-23 22:03:11 140

原创 CF#771 Div.2 A~C 题解

CF #771 div.2A. Reverse(思维)题目大意给定长度为n的序列 可以翻转任意一段 输出他的最小字典序排列解题思路因为要最小字典序 所以从n = 1开始向后枚举 如果说q[i] != i 那就说明把 i 换回这里字典序最小(贪心很重要的一点是因为我的程序鲁棒性不够强 所以导致了数组越界 达到了负的下标以后一定要注意在模拟reverse的时候不能越界代码int q[510], n;void solve(){ cin >> n; for(int

2022-02-20 11:31:59 374

原创 kuangbing带你飞 专题一 简单搜索题解

kuangbing带你飞 专题一 简单搜索题解

2022-02-12 09:58:42 149

原创 CF #764 Div.3(B ~D)

CF #764 Div.3B题 Make AP给定a b c使其中一个数 乘 任意正整数m 问是否能构成成差数列我们可以想到等差数列的性质2b=a+c2b = a + c2b=a+c思路:分类讨论 a b c的三种情况- 2b = a + c 直接构成等差数列- 2b < a + c 说明b偏小了 (a + c) % (2 * b) == 0 ? YES : NO- 2b > a + c 说明a或者c偏小了 ( (2b - a) % c == 0 || (2b - c)

2022-02-06 22:16:36 529

原创 AcWing周赛 2022/2/5

B截断数组 (二分 + 枚举 + 前缀和)4297. 截断数组 - AcWing题库数据范围是2e5 我判断需要使用O(nlogn)的算法 但是 无从下手正解的思路是先用前缀和处理前缀 (这里其实很明显能看出处理前缀的思想 因为问的是数组元素和枚举第一个截断点 由处理过的前缀和得到第一段和然后二分查找第二个截断点第三段的和是q[n] - q[mid - 1]查找完毕之后 得到答案 每次枚举取最大值#include <iostream>#include &l

2022-02-05 22:10:02 483

原创 根据数据范围来推断该使用的算法

转载自AcWing网站由数据范围反推算法复杂度以及算法内容 - AcWing

2022-01-22 21:12:57 297

原创 一文教会01背包

01背包01背包指的是一种题目模板如果说有很多东西 每个东西只能拿一次 要装到一个背包里 背包有体积上限这就是经典的01背包问题在我们下意识背出模板的时候我们先想一下 01背包问题的暴力解法是什么在01背包中 对于每件物品 要么取 要么不取 所以一共有2^n种情况这是回溯+爆搜的做法为了优化时间复杂度 我们引入了动态规划(DP)为了解释动态规划我决定引入一个DP五部曲的概念(——摘自《代码随想录》)确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定

2022-01-22 20:57:18 636

原创 B. Make AP

Problem - B - Codeforces一开始是想要暴力枚举abc的然后不想写那么麻烦,回想起了等差数列的性质 a+c == 2*b然后呢 既然能被乘到满足条件 那就意味着能被整除于是有了这样的代码#include <cmath>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespac

2022-01-21 18:11:14 425

原创 Monsarack‘s Birthday(贪心+阅读)

题目的大意是-1的数字是消失的数 我们要找一个数字k来替换-1使得整个数列的相邻差的绝对值最大值最小那么如何找到这个k呢我们将-1除外 并和-1相邻的数挑出来 添加到vectorsort一下vector 最大值和最小值之差>>1 就是我们需要的k这样得出的k确实就是最符合题意的(这里需要自行思考一下为什么 不然还是不能理解)要注意特判一下 当数列全是-1的时候 k可以任取 相邻差绝对值为0#include <cmath>#include <cstdio&g

2022-01-21 11:37:38 83

原创 C. Everyone is a Winner

题目读懂了一半 一开始以为是每次/2 样例都没过 果然CF不会那么简单应该是英语阅读能力不好的原因 没有读出题意题意是 给一个数n从i开始枚举 将n/i的数字向下取整保存起来 最后顺序输出我一开始是直接暴力枚举 在第四个text挂了面对这种跟约数有关系的 要学会使用 i <= sqrt(n)的优化然后每次枚举的时候 insert(i和n/i) 可以减少枚举的次数做完这个优化 就过了**样例中有0记得加入 还有用set来去重#include <cmath>#incl

2022-01-21 11:32:16 259

原创 KMP入门题集

这里是KMP的入门题集 主要运用的是next的一些简单性质 可以说是KMP裸题

2022-01-20 09:39:03 86

原创 堆和并查集

堆(STL中的优先队列)优先队列:在队列中,元素被赋予优先级,优先级最高的最先被弹出#include <iostream>#include <queue>#include <vector>using namespace std;int main(){ //STL中的优先队列默认以大为优先级 priority_queue<int> q1; q1.push();//push a element into the qu

2022-01-16 23:44:11 320

原创 广工21级新生赛A题

补一下题 之前比赛的时候没有写出来题目链接:登录—专业IT笔试面试备考平台_牛客网思路 思路1 发现模数是一个特殊的数 103!可以把模数整除 所以当n>=103 的时候 n!%mod == 0思路2 你没有发现这个规律 但是由于做题经验告诉你 这种题目会在n达到某一个特定条件的时候为0 不然设置余数的意义就不存在了代码思路1的代码实现#include <iostream> using namespace std;...

2022-01-12 00:29:21 117

原创 FZU 1082 最大黑区域

题目Description 二值图像是由黑白两种像素组成的矩形点阵,图像识别的一个操作是求出图像中最大黑区域的面积。请设计一个程序完成二值图像的这个操作。黑区域由黑像素组成,一个黑区域中的每个像素至少与该区域中的另一个像素相邻,规定一个像素仅与其上、下、左、右的像素相邻。两个不同的黑区域没有相邻的像素。一个黑区域的面积是其所包含的像素的个数。Input 输入由多个测试例组成。每个测试例的第一行含两个整数n和m, (1 <=n,m<=100), 分别表示二值图像的行数与列数,后面紧跟着n行

2022-01-12 00:25:59 163

原创 2021年广东工业大学第11届腾讯杯新生程序设计竞赛 B题-过生日

2021年广东工业大学第11届腾讯杯新生程序设计竞赛

2021-11-29 19:34:25 250

原创 如何优雅地实现二分查找 不用担心边界问题

若不知道或遗忘原理 请先观看视频二分查找为什么总是写错?_哔哩哔哩_bilibili简单介绍一下思路在一个单调数组中将需要查找的数组从1读到n设置双指针 0 和 n+1将数组的左边抽象为蓝色区域 右边抽象为红色区域直接取数组中点 若该点值符合蓝色区域的要求将蓝色区域拓展到此处递归再次处理 该点到右边界的区间若符合蓝色区域要求 继续拓展反之 红色区域拓展到此处直到蓝色先锋l和红色先锋r只差一格(即l+1==r)红蓝区域就被划分出来了根据题意再做后期处理即

2021-11-28 13:06:13 204

原创 归并排序模板(Merge sort)

算法思想(递归)左边界为l 右边界为r 当l>=r的时候 排序结束不断取中点递归两边 从小回推出大下面是实现0000000i0000000j这里有两条队列比较a[i]和a[j]大小小的存到新数组中存储直到有一个列表已经被删去了此时对剩下的列表进行扫尾并将结果赋回给原数组 以进行下一步的递归代码模板如下void Merge_sort(int a[],int l,int r){ if(l>=r) return;

2021-11-28 12:52:56 189

原创 快速排序模板

快速排序模板

2021-11-28 12:29:45 142

空空如也

空空如也

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

TA关注的人

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