自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Codeforces Round #828 (Div. 3) E1

给定4个数,abcd,要求找到一组使得x * y能够整除 a * b。其中a

2022-10-18 20:51:18 370 1

原创 数据结构实验设计报告

***`实验二 顺序表实验三括号匹配*`实验四 多项式的加法实验五 二叉树的遍历***`实验六 数表的查找实验七 图及其遍历***``

2022-05-31 21:10:36 389

原创 “山大地纬杯”第十二届山东省ICPC大学生程序设计竞赛(正式赛)

A Seventeen题目大意:给定一个数,用1~n的每个数,使用+ - * ( )运算符号,每个数仅可以使用一次,使其结果为17, 这个组合有很多个,任意写出一个,如果找不到这样的组合数,输出-1。思路:如1 2 3 4 一样,1-2-3+4=0,四个数为一个循环,只找到开头的四个数,剩下的循环即可,分析可知:1~3找不到这样的组合数,输出-1,开头的四个数为4 5 6 7。代码:#include<bits/stdc++.h>using namespace std;int n;i

2022-05-25 20:30:33 1019 1

原创 括号匹配最简版

3693. 括号匹配 - AcWing题库苗苗今天刚刚学会使用括号,不过他分不清小括号,中括号,大括号和尖括号,不知道怎么使用这些括号,请帮助他判断括号使用是否正确。输入格式共一行,包含一个由<,(,{,[,>,),},]构成的字符串。输出格式如果输入的字符串中的括号正确匹配则输出yes,否则输出no。数据范围输入字符串长度不超过10000。输入样例:(){}输出样例:yes代码:#include <bits/stdc+...

2022-05-10 20:54:52 504

原创 连通块中点的数量

837. 连通块中点的数量 - AcWing题库题目要求:给定一个包含n个点(编号为1∼n1∼n)的无向图,初始时图中没有边。现在要进行m个操作,操作共有三种:C a b,在点a和点b之间连一条边,aa和b可能相等; Q1 a b,询问点a和点b是否在同一个连通块中,a和b可能相等; Q2 a,询问点a所在连通块中点的数量;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为C a b,Q1 a b或Q2 a...

2022-04-29 14:41:50 104

原创 L1-8 静静的推荐 (20 分)

天梯赛结束后,某企业的人力资源部希望组委会能推荐一批优秀的学生,这个整理推荐名单的任务就由静静姐负责。企业接受推荐的流程是这样的:只考虑得分不低于 175 分的学生;一共接受 K 批次的推荐名单;同一批推荐名单上的学生的成绩原则上应严格递增;如果有的学生天梯赛成绩虽然与前一个人相同,但其参加过 PAT 考试,且成绩达到了该企业的面试分数线,则也可以接受。给定全体参赛学生的成绩和他们的 PAT 考试成绩,请你帮静静姐算一算,她最多能向企业推荐多少学生?输入格式:输入第一行给出 3 个正整数:N(

2022-04-24 22:02:09 1576

原创 L1-6 斯德哥尔摩火车上的题 (15 分)

上图是新浪微博上的一则趣闻,是瑞典斯德哥尔摩火车上的一道题,看上去是段伪代码:s = ‘’a = ‘1112031584’for (i = 1; i < length(a); i++) { if (a[i] % 2 == a[i-1] % 2) { s += max(a[i], a[i-1]) }}goto_url(‘www.multisoft.se/’ + s)其中字符串的 + 操作是连接两个字符串的意思。所以这道题其实是让大家访问网站 www.multis...

2022-04-24 21:34:20 2370

原创 fill()函数的用法

fill()函数参数:fill(first,last,val);first 为容器的首迭代器,last为容器的末迭代器,val为将要替换的值。举例:#include<bits/stdc++.h>using namespace std;int main(){ int a[10]; for(int i=0;i<10;i++) { cin>>a[i]; } fill(a,a+10,2); for(in.

2022-04-24 15:45:23 1789

原创 L1-5 试试手气 (15 分)

题目大意:我们知道一个骰子有 6 个面,分别刻了 1 到 6 个点。下面给你 6 个骰子的初始状态,即它们朝上一面的点数,让你一把抓起摇出另一套结果。假设你摇骰子的手段特别精妙,每次摇出的结果都满足以下两个条件:1、每个骰子摇出的点数都跟它之前任何一次出现的点数不同;2、在满足条件 1 的前提下,每次都能让每个骰子得到可能得到的最大点数。那么你应该可以预知自己第 n 次(1≤n≤5)摇出的结果。输入格式:输入第一行给出 6 个骰子的初始点数,即 [1,6] 之间的整数,数字间以空格分隔;第

2022-04-24 15:22:55 3386

原创 setw() 函数

setw() 用于控制输出之间的间隔cout<<'s'<<setw(6)<<'a'<<endl;s和a之间有5个空格,cout<<'s'<<setw(6)<<'a'<<endl;的意思是s后面输出6个字符,其中a占一个字符,剩余5个字符用空格填充 ,setw()默认填充的内容为空格,可以setfill()设置其他字符填充。cout<<'s'<<setfill('*')&lt

2022-04-22 22:08:34 20147 3

原创 L1-006 连续因子

题目大意:一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3×5×6×7,其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N,要求编写程序求出最长连续因子的个数,并输出最小的连续因子序列。输入格式:输入在一行中给出一个正整数 N(1<N<2​31​​)。输出格式:首先在第 1 行输出最长连续因子的个数;然后在第 2 行中按 因子1*因子2*……*因子k 的格式输出最小的连续因子序列,其中因子按递增顺序输出,1 不算在内。输入样例:630

2022-04-22 21:21:00 76

原创 算法竞赛进阶指南总结(一)

一、位运算二、递推与递归位运算:二进制做基础,位运算给了我们一个操作简单的计算机。位运算基础:&:按位与,如果两个相应的二进制都为1,则该位值为1,否则为0.|:按位或,两个相应的二进制位中只要有一个为1,则该位的值为1;^:按位异或,若参加运算的两个数的值相同,则该值为1,否则为0;~:取反,一元运算符,用来对二进制数按位取反,1-0,0-1;<<:左移,用来将一个数的个二进制位全部左移N位,右边补0;>>:右移,用来将一个数的个二进制位

2022-04-17 20:22:51 2125

原创 Codeforces Round #781 (Div. 2) C题解

原题链接:Problem - C - Codeforces题目大意:一个树,两个操作,1.传染:(一个节点下至少有一个被感染的子节点,则此节点健康的一个子节点会被传染一个);2.传播:(一个健康的节点被传播)求所有节点被传播的最小时间。思路:按照子节点的大小进行第一场传播,对每个节点来说子节点全感染的时间:子节点数-子节点被传染的次序+1;第一场传播之后,建立降序优先队列:节点的子节点数-传播次数+1;ans(时间),若是ans>=队列的第一个值break;否则,ans

2022-04-14 17:14:45 1056 3

原创 《算法竞赛进阶指南》起床困难综合症

C++ 代码#include <stdio.h>const int N = 100005;int n, m; // n, m 即题目描述中 n, mint ans; // ans 存我们能得到的最大的答案int t[N]; // t 存输入的 n 个数short op[N]; // op 存 n 个数对应的操作,1 表示按位或,2 表示按位异或,3 表示与char str[4]; ...

2022-04-13 10:09:02 330 1

原创 Educational Codeforces Round 126 (Div. 2)CD 题解

C. Water the Trees题目大意:给出n颗树的高度,在一天内你可以选择浇树或者不浇,偶数天浇树树长高2,奇数为1问最短天数使所有树都一样高.统计需要在奇数天浇和偶数天的次数,再根据数量判断,可以把长高2拆分成在奇数天浇两天需要注意的是最后的高度不一定是树高度的最大值,有可能是+1,因为这样可以改变奇偶浇的次数,如果奇数过多的话只能隔一天浇一次,而把部分奇数变为偶数可以穿插在奇数天中,有可能使天数变短输入样例331 2 454 4 3 5 572 5 4 8.

2022-04-12 21:42:33 859

原创 Educational Codeforces Round 126 (Div. 2) A B题解

A 题目大意:给出a,b两个数组可以交换两队数组内位置相同的数,求相邻两数绝对值和的最小值输入样例343 3 10 1010 10 3 351 2 3 4 56 7 8 9 10672 101 108 108 111 4410 87 111 114 108 100输出样例 08218解析:对于每个点求交换与不交换的值取min即可代码解析 #include<bits/stdc++.h>using namespace st..

2022-04-11 21:39:42 965

原创 蓝桥杯算法模板

又快到了一年一度的蓝桥杯省赛了,作为一个小萌新,自己搜集了一些蓝桥杯的算法并分享给大家。判断闰年bool isleaf(int x){ return x%400==0||(x%4==0&&x%100!=0);}计数月,日或分钟等等计算日的算法如下,小时分钟和秒就是在此基础上乘以相应的进制即可,月份就是在模板里面month++的时候顺便计数即可。int syear,smonth,sday; //分别为结束年,月,日int countday(int year,...

2022-04-07 22:00:47 187

原创 用栈来解决括号匹配问题

1、使用一个字符串数组保存括号式。2、从左向右读取括号式,如果遇到左括号即'(','[','{'就压入栈中,如果遇到右括号即')',']','}'就对栈顶的元素进行对比,如果匹配成功就将栈顶元素弹出。// 括号匹配_Bool parChecker(){ int length, i; // 定义括号匹配长度 LiStack L; L = initStack(); // 初始化栈; char symbolString[100]; // 使用char类型数组来

2022-04-05 09:19:22 1504

原创 重温01背包问题

1. 题目介绍有N件物品和一个容量是V的背包。每件物品只能使用一次。第i件物品的体积是vi,价值是wi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。2. 题解代码2.1 二维(1)状态f[i][j]定义:前 i个物品,背包容量 j下的最优解(最大价值):当前的状态依赖于之前的状态,可以理解为从初始状态f[0][0] = 0开始决策,有 N件物品,则需要 N次决 策,每一次对第 i件物品的决策,状态f[i][j]不断由之前的状态更新而来...

2022-04-04 21:06:28 118

原创 试题 历届真题 完全二叉树的权值【第十届】【省赛】【B组】

本题考察到的知识点有: 在二叉树的第i层上至多有2^(i-1)个节点 深度为k的二叉树至多有(2^k)-1个节点 具有n个节点的完全二叉树的深度为[log2n]+1思路: 首先输入n,确定一共有几个节点 需要设置一个求和的变量,但是取值范围要注意,需要使用 long long int类型 设置两层循环,最外层是层数,内层为每层的结点数 每次循环输入一个节点,并加到tol中,每次每层求和完毕,与上层结果比较,如果比上层...

2022-04-02 21:17:02 799

原创 试题 历届试题 子串分值和【第十一届】【省赛】【B组】

问题描述对于一个字符串 S,我们定义 S 的分值 f(S) 为 S 中出现的不同的字符个数。例如 f("aba")=2,f("abc")=3, f("aaa")=1。现在给定一个字符串 S[0..n−1](长度为 n),请你计算对于所有 S 的非空子串 S[i..j](0≤i≤j<n),f(S[i..j])的和是多少。输入格式输入一行包含一个由小写字母组成的字符串 S。输出格式输出一个整数表示答案。样例输入ababc样例输出28样例说明子串 f值a 1...

2022-04-01 23:10:51 412

原创 C++标准库 逆转元素reverse()和reverse_copy()

解析reverse(beg,end)reverse_copy(sourceBeg,sourceEnd,destBeg)reverse()会将区间[beg,end)内的元素全部逆序;reverse_copy()会将源区间[sourceBeg,sourceEnd)内的元素复制到"以destBeg起始的目标区间",并在复制过程中颠倒安置次序;reverse_copy()返回目标区间内最后一个被复制元素的下一个位置,也就是第一个未被覆盖的元素;调用者必须保证目标区间足够大,要不就得使用插入

2022-03-31 20:40:09 303 1

原创 空间字节问题

256 MB = 256 * 1024 * 8 kB = 256 * 1024 * 1024 * 8 b = 2147483648 b;计组基础题:256MB=256 * 2^20 * 8 位所以存放32位元素可以存放 256 * 1024 * 1024 * 8 / 32ans: 67108864详解1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024Byte注:Byte就是B也就是字节KB是千字节MB是兆GB是千...

2022-03-31 19:54:18 575

原创 第12届蓝桥杯B组省赛砝码称重

题目描述你有一架天平和 N 个砝码,这 N 个砝码重量依次是 W1, W2, · · · , WN。请你计算一共可以称出多少种不同的重量?注意砝码可以放在天平两边。输入输入的第一行包含一个整数 N。第二行包含 N 个整数:W1, W2, W3, · · · , WN。输出输出一个整数代表答案。样例输入31 4 6样例输出10解析dp[i][j]表示前i个砝码能称出重量j如果j=w[i]dp[i][j]=dp[i][j-1]+1;//其实单单赋...

2022-03-29 21:41:33 83

原创 求组合数C(n,m)实现组合数 从N个数中选择M个数

方案一:纯暴力方案C(n,m)=n * (n-1) * (n-2) * (n-m+1) / m!typedef long long ll;ll Combination(ll n,ll m){ ll ans=1; for(int i=n;i>=n-m+1;i--) ans*=i; for(int i=m;i>=1;i--) ans/=i; return ans;}int main(){ ll a,b;

2022-03-29 18:47:27 724

原创 greater<int>()函数和less<int>函数

less<T>变成升序(从左到右遍历下标时,数组元素是从小到大)greater<T>变成降序(从左到右遍历下标时,数组元素是从大到小)那么也就意味着 less模式下,优先输出的较大的数值, greater模式下优先输出的较小的数值;例一:#include<bits/stdc++.h>using namespace std;const int N=1e4+10;int n;int a[N];int main(){ scanf("%d",&a

2022-03-28 23:11:57 4138 1

原创 离散化:两种离散化

介绍:离散化,就是把一些很离散的点给重新分配。在一些问题中,我们只关心 n 个数字之间的相对大小关系,而不关心它 们具体是多少。因此,我们可以用一种叫离散化的技术来将数字映射到 1 ∼ n 的整数, 从而降低问题规模,简化运算。通常的实现方法是将所有数字排序,然后再重新遍历一遍所有的数字, 通过二分查找找到它们的 “排名”,然后用排名来代替对应的数字。举个例子,如果一个坐标轴很长(>1e10),给你1e4个坐标,询问某一个点,坐标比它小的点有多少。很容易就知道,对于1e4个点,我们不

2022-03-18 21:20:15 636 2

原创 Monthly Expense(二分求最小和中的最大)

Farmer John is an astounding accounting wizard and has realized he might run out of money to run the farm. He has already calculated and recorded the exact amount of money (1 ≤moneyi≤ 10,000) that he will need to spend each day over the nextN(1 ≤N...

2022-03-15 17:12:03 188

原创 Expanding Rods二分

When a thin rod of lengthLis heatedndegrees, it expands to a new lengthL' = (1 + n * C) * L, whereCis the coefficient of heat expansion.When a thin rod is mounted on two solid walls and then heated, it expands and takes the shape of a circular ...

2022-03-13 22:01:44 129

原创 浙江农林大学蓝桥杯程序设计竞赛校选拔赛 E-谁是天选之人

众所周知下棋是一个运气游戏,不过好像也是有规律可循的。Graceful smiling cookies给它的n个棋子标序号,他决定以这些序号决定谁是天选。最开始每个棋子标号都是0.它要进行m次标序号。第i次标序号,它会将第(i X a+b)%n +1个棋子和第(i X b + a)%n +1个棋子之间的棋子都标上序号i。我会告诉你a和b的值,你可以告诉我最后每个棋子的颜色吗?输入描述:一行四个整数1=<n<=1e6 , 1=<m<=1e7 , a ...

2022-03-13 15:33:38 11235

原创 浙江农林大学蓝桥杯程序设计竞赛校选拔赛 F 签不上到?做这题就对了

题目描述给你一个整数,你可以选择操作一次(也可以不操作)交换该数字中任意两位上的数字,使你的结果数尽可能大。输入描述:第一行输入一个T,代表测试的数据个数(T<=1000)接下来T行,每行输入一个整数a (0<a<=1e8)输出描述:对于输入的T组样例,每一组输出一行你的结果数示例1输入复制11234输出复制4231说明显然交换1,4位置上的数字会使结果数最大题目解析:解法1:#include&..

2022-03-13 09:19:44 155

原创 零散知识点

1、&的运用n&1这里 n&1 就是——判断n是否为奇数因为n为奇数时,对应的二进制数最低位一定为1,n&1的结果就是1n为偶数时,相应的最低位为0,n&1的结果就是0.1&n这里的 1&n 就是:检查二进制n的最低位,若为1,则1&n的结果就是1,若不为1,则1&n的结果就是0.if(i&1==1) 表示 如果是 奇数 则i&1 –按位与运算,取 2进制整数 i 的最低位,如果.

2022-03-11 19:00:10 278

原创 codeforces round #732 div2 C题详解

题目描述:Problem - 1546A - Codeforces题目大意:#include<bits/stdc++.h>using namespace std;const int N=110;int a[N],b[N];int main(){ ios::sync_with_stdio(false), cout.tie(0); int t; scanf("%d",&t);.

2022-03-11 11:24:10 241

原创 浅谈STL中vector的应用

vector <int> a; //定义 a 数组,当前数组长度为 0,但和普通数组不同的是,此数组 a 可以根据存储数据的数量自动变长。//向数组 a 中添加 10 个元素for (int i = 0; i < 10 ; i++)a.push_back(i)//还可以手动调整数组 a 的大小a.resize(100);a[90] = 100;//还可以直接删除数组 a 中所有的元素,此时 a 的长度变为 0a.clear();//重新调整 a 的大小为 20,并存储 .

2022-03-06 20:54:18 232

原创 全排列(STL中 next_permutation函数)

next_permutation的使用方法1、头文件naxt_permutation函数包含在algorithm库中2、参数和sort的参数一样,一般传两个参数,第一个是排列开始的地址,第二个是排列结束的下一个地址,如实现数组第1-3排列的下一个排列:next_permutation(a,a+3)。一般作用对象是数组。3、作用next_permutation是求当前排列的下一个排列(按字典序升序的下一个序列),如1234的next_permutation是1243。在全排列当中经常会用。.

2022-03-05 22:45:13 292

原创 strstr(str1,str2)函数,find 函数

1.定义:strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回str2在str1中首次出现的地址;否则,返回NULL。该函数返回字符串的其余部分(从匹配点)。strstr方法是比较常用的,我在使用的过程中经常会忘掉入参中的两个字符串到底谁是谁的子串注意:strstr(str1,str2) 此时千万要记住,这是在判断str2是否是str1的子串!!比如: char str2 = “cdef”; char str1 = “abcdefgh

2022-02-17 20:09:09 2198

原创 贪心算法模板及详解

一、.活动选择问题二、钱币找零问题三、再论背包问题四、多机调度问题五、小船过河问题六、区间覆盖问题七、销售比赛问题八、Huffman编码九、Dijkstra算法十、最小生成树算法贪心算法的定义贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,只做出在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态

2022-02-14 14:31:02 3109 2

转载 递归与分治

递归的定义:程序调用自身的编程技巧称为递归。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。边界条件与递归方程是递归函数的两个要素,递归函数只有具备了这两个要素,才能在有限次计算后得出结果。看过这样一个笑话,要想理解递归,就要先理解递归。

2022-02-11 13:44:55 3168 1

原创 Acwing 第四章模板及详解(数学知识)

一、质数二、约数三、欧拉函数四、快速幂五、扩展欧几里得算法六、中国剩余定理七、高斯消元八、组合计数九、容斥原理十、简单博弈论试除法判定质数bool is_prime(int x){ if (x < 2) return false; for (int i = 2; i <= x / i; i ++ ) if (x % i == 0) return false; return true;}试除...

2022-02-06 21:13:55 2751 1

原创 Acwing 第五章模板及详解(动态规划)

一、背包问题二、线性DP三、区间DP四、计数类DP五、数位统计DP六、状态压缩DP七、树形DP八、记忆化搜索背包问题01背包问题n个物品,每个物品的体积是vi ,价值是wi ,背包的容量是m mm若每个物品最多只能装一个,且不能超过背包容量,则背包的最大价值是多少?模板:int n; // 物品总数int m; // 背包容量int v[N]; // 重量 int w[N];

2022-02-06 21:08:39 782

空空如也

空空如也

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

TA关注的人

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