- 博客(41)
- 收藏
- 关注
原创 第十一届蓝桥杯省赛网络分析
带权并查集 ---- 树上差分 我们通过并查集合并连通块,保证同一个连通块内的点同属一个集合 对于每一个合并操作,找到两个点所属的集合 如果不属于同一个连通块,我们可以进行两种操作 1.将其中一点连接到另一点上,使其中一点成为根节点 对于每次连通块累加操作,将其累加至根节点,对于连接操作则利用差分防止多次相加 如:root_a连向root_b,则d[root_a]的权值减去d[root_b]防止多次相加 2.构造一个新点,使这个新点成为集合合并后的根节点 对于每次连通块累加操作,我们只需要向集合的根节点累
2022-04-02 17:57:21
920
原创 背包问题记录最优方案的方法
问题概述 在 n 个物品每个选取 ai 个总量不超过 m 的最优解 解决思路 最优解的一定有确定的来源,因此只要利用最优解来源,再利用最优解的来源记录它的来源,依次迭代得到完整路径 输出方法 void print(int x,int y) { if(x==0)return ; int k=flag[x][y];//记录的来源 print(x-1,y-k);//利用dfs迭代 printf("%d %d\n",x,k); } 记录方法 if(sum[i][j]<sum[
2021-11-06 23:44:34
553
1
原创 2021CCPC河南 1001收集金币(dp)
题目描述 小辣在玩奇怪的的小游戏。 在这一关中,游戏的主角的任务是收集金币。 这时有n个事件依次发生,事件分为两种: 1、LOST x 表示主角丢失x枚金币,如果此时主角的金币不足x枚,则主角丢失所有金币。 2、GET x 表示主角获得x枚金币。 主角当然想要获得更多的金币,因此他获得了一个技能:当一个事件发生时,他可以选择跳过。当然,这项技能最多只能使用一次。 现在按顺序给定每个事件,请问主角最后能获得多少枚金币? 输入 第一样一行一个正整数T(T≤10)代表数据组数。 对于每组数据,第一行输入一个正整数
2021-11-03 23:47:02
709
原创 阶乘的逆元
求对阶乘 1! 到 n! 的逆元 一般写法 typedef long long ll; ll quick_mi(ll m,ll k) { ll res=1; while(k) { if(k&1)res=res*m%mod; m=m*m%mod; k>>=1; } return res; } infact[0]=1; for(int i=1;i<=n;i++) { infact[i]=infac
2021-10-29 13:20:19
1932
原创 acwing246. 区间最大公约数(差分+线段树)
给定一个长度为 N 的数列 A,以及 M 条指令,每条指令可能是以下两种之一: C l r d,表示把 A[l],A[l+1],…,A[r] 都加上 d。 Q l r,表示询问 A[l],A[l+1],…,A[r] 的最大公约数(GCD)。 对于每个询问,输出一个整数表示答案。 输入格式 第一行两个整数 N,M。 第二行 N 个整数 A[i]。 接下来 M 行表示 M 条指令,每条指令的格式如题目描述所示。 输出格式 对于每个询问,输出一个整数表示答案。 每个答案占一行。 数据范围 N≤500000,M≤1
2021-07-31 09:41:00
233
原创 acwing 3734求和
用 f(x) 来表示满足下列条件的最小正整数 a: a≥x。 a 的各个数位不包含除了 4 和 7 以外的其他数字。 现在,给定两个整数 l,r(l≤r),请你计算 f(l)+f(l+1)+…+f® 的值。 输入格式 一行,两个整数 l,r。 输出格式 一行,一个整数表示求得的和。 数据范围 前三个测试点满足 1≤l≤r≤10, 所有测试点满足 1≤l≤r≤109。 输入样例1: 2 7 输出样例1: 33 输入样例2: 7 7 输出样例2: 7 解题思路:先用暴力将10^9以内的所有由4和7组成的数字求出
2021-07-24 10:08:19
258
原创 C++ reverse()函数
reverse是中的反转函数 可以将字符串和数组正反顺序转换 string a="abcdef"; reverse(a.begin(),a.end()); int num[3]={1,2,3}; reverse(num,num+3); cout<<a<<endl; //结果为:fedcba; for(int i=0;i<3;i++) { cout<<i<<" "; } //结果为:3 2 1; ...
2021-07-23 12:21:20
1634
2
原创 牛客多校联赛-I-Penguins
链接:https://ac.nowcoder.com/acm/contest/11253/I 来源:牛客网 Lovely penguins is a tiny game in which the player controls two penguins. The game holds in two 20 \times 2020×20 grids (the left one and the right one), and each has some blocked places. We number the
2021-07-21 11:57:14
241
原创 最长上升子序列的两种解法
给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N 个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤100000, −109≤数列中的数≤109 输入样例: 7 3 1 2 1 8 5 6 输出样例: 4 #include<iostream> #include<cstring> #include<cstdio> #include<algorithm> usi
2021-06-16 18:35:04
754
原创 poj 1797 (bfs求路径中的最大承载)
Heavy Transportation Time Limit: 3000MS Memory Limit: 30000K Total Submissions: 75111 Accepted: 18335 Description Background Hugo Heavy is happy. After the breakdown of the Cargolifter project he can now expand business. But he needs a clever man who tel
2021-06-09 22:46:51
151
原创 poj-1742-Coins(多重组合问题)
#include <iostream> #include <cstring> #include <cstdio> using namespace std; const int maxn=200010; int n,m,a[110],b[110],f[maxn],g[maxn]; int main(){ int n,m; while(~scanf("%d %d",&n,&m)){ if(n==0)break;
2021-06-05 12:35:59
223
原创 acwing 456. 车站分级(拓扑排序+集合间的虚拟源点+差分约束)
一条单向的铁路线上,依次有编号为 1, 2, …, n 的 n 个火车站。 每个火车站都有一个级别,最低为 1 级。 现有若干趟车次在这条线路上行驶,每一趟都满足如下要求:如果这趟车次停靠了火车站 x,则始发站、终点站之间所有级别大于等于火车站 x 的都必须停靠。(注意:起始站和终点站自然也算作事先已知需要停靠的站点) 例如,下表是 5 趟车次的运行情况。 其中,前 4 趟车次均满足要求,而第 5 趟车次由于停靠了 3 号火车站(2 级)却未停靠途经的 6 号火车站(亦为 2 级)而不满足要求。 现有 m
2021-05-12 21:04:49
198
原创 第十二届蓝桥杯c/c++组--D 货物摆放
【问题描述】 小蓝有一个超大的仓库,可以摆放很多货物。 现在,小蓝有 n 箱货物要摆放在仓库,每箱货物都是规则的正方体。小蓝 规定了长、宽、高三个互相垂直的方向,每箱货物的边都必须严格平行于长、 宽、高。 小蓝希望所有的货物最终摆成一个大的立方体。即在长、宽、高的方向上 分别堆 L、W、H 的货物,满足 n = L × W × H。 给定 n,请问有多少种堆放货物的方案满足要求。 例如,当 n = 4 时,有以下 6 种方案:1×1×4、1×2×2、1×4×1、2×1×2、 2 × 2 × 1、4 × 1
2021-04-20 20:14:47
823
原创 第十二届蓝桥杯c/c++B组C题
C 直线 问题描述 在平面直角坐标系中,两点可以确定一条直线。如果有多点在一条直线上,那么这些点中任意两点确定的直线是同一条。 给定平面上 2 × 3 2 \times 32×3 个整点 { ( x , y ) ∣ 0 ≤ x < 2 , 0 ≤ y < 3 , x ∈ Z , y ∈ Z } {(x, y)|0 ≤ x < 2, 0 ≤ y < 3, x ∈ Z, y ∈ Z}{(x,y)∣0≤x<2,0≤y<3,x∈Z,y∈Z},即横坐标是 0 00 到 1 11 (
2021-04-19 22:29:27
663
原创 set常规用法
set函数的特性:唯一性,有序性(set函数中的数据不重复,且有序排列); set使用方法: begin() ,返回set容器的第一个迭代器 end() ,返回set容器的最后一个迭代器 clear() ,删除set容器中的所有的元素 empty() ,判断set容器是否为空 max_size() ,返回set容器可能包含的元素最大个数 size() ,返回当前set容器中的元素个数 rbegin ,返回的值和end()相同 rend()
2021-04-19 22:12:57
431
原创 蓝桥杯--发现环(拓扑法求解)
题目描述 小明的实验室有 NN 台电脑,编号 1 \cdots N1⋯N。原本这 NN 台电脑之间有 N-1N−1 条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。 不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了 BUG。 为了恢复正常传输。小明需要找到所有在环路上的电脑,你能帮助他吗? 输入描述 输入范围: 第一行包含一个整数 NN 。 以下
2021-04-17 23:14:25
473
原创 蓝桥杯2018国赛--迷宫与陷阱
题目描述 小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由 N \times NN×N 个格子组成的 2D 迷宫。 小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫。 每一步,他可以移动到上下左右相邻的格子中(前提是目标格子可以经过)。 迷宫中有些格子小明可以经过,我们用 ‘.’ 表示。 有些格子是墙壁,小明不能经过,我们用 ‘#’ 表示。 此外,有些格子上有陷阱,我们用 ‘X’ 表示。除非小明处于无敌状态,否则不能经过。 有些格子上有无敌道具,我们用 ‘%’ 表示。 当小明第一次到达该
2021-04-06 22:13:46
813
原创 C++find函数
find()函数是C++的内置函数; find()函数主要是用于查找一段字符串(字符或字符串)在字符串的位置; char a='a'; string c="ba"; string b="baba"; int n=b.find(a); int m=b.find(c) 其中n=2,m=1; find()函数返回的是一段字符串所在位置,若在一个字符串存在多个字符则返回第一个位置若字符串不存在则返回-1; 若要求取不同位置的一段字符串; 则需要用find (m,p); p表示起始位置; char a='a'; s
2021-03-28 22:29:04
1950
1
原创 C++--map函数的用法
STl中的map函数是将(key,value)数据以红黑树存储的容器 其中关键字 key 只出现一次 map的定义 map <int,int> mp;//定义了一个名为m的空的map对象 map mp(m2);//创建了m2的副本mp map的插入 map可以自动建立key - value的对应。key 和 value可以是任意你需要的类型,包括自定义类型。 map中数据是以pair存储的。因此插入以创建pair进行 for (int i = 0; i < 10; i ++){
2021-03-15 00:45:47
878
原创 二维数组作为参数传入函数
使用二维数组作为参数时可以省略低维的定义,也可以小于实参的范围,此时形参只取实参的一部分其余部分不起作用。 列: int n[10][10]; void(n[5][10]); void([][10]); void([10][10]);
2021-03-05 22:27:06
856
原创 D产生冠军
有一群人,打乒乓球比赛,两两捉对撕杀,每两个人之间最多打一场比赛。 球赛的规则如下: 如果A打败了B,B又打败了C,而A与C之间没有进行过比赛,那么就认定,A一定能打败C。 如果A打败了B,B又打败了C,而且,C又打败了A,那么A、B、C三者都不可能成为冠军。 根据这个规则,无需循环较量,或许就能确定冠军。你的任务就是面对一群比赛选手,在经过了若干场撕杀之后,确定是否已经实际上产生了冠军。 Input 输入含有一些选手群,每群选手都以一个整数n(n<1000)开头,后跟n对选手的比赛结果,比赛结果以一
2021-01-28 23:32:45
193
原创 队列链表实现
#include <bits/stdc++.h> using namespace std; //链式结构---链表English:linked list struct linked_list { int data;//数据 struct linked_list*next; }; //创建新节点 struct linked_list*new_node(int data) { struct linked_list*new_node1=(struct linked_list*)
2021-01-28 23:26:03
139
原创 scanf输入空格存在的作用
int n; char a; scanf("%d%c",&n,&a); 若输入"1 “,则n为1,a为’ '(空格) scanf(”%d %c",&n,&a); 则会将空格视为结束符跳过相当于cin>>n>>a;
2021-01-26 22:21:23
730
原创 c/c++连续输入数字与字符串的方法
int n; string line; cin>>n; getchar();//吃掉换行符 getline(cin,line);
2021-01-20 21:42:28
1924
原创 快速阶乘取余
题目描述 计算n的阶乘。但由于阶乘可能会很大(重点),我们要转化任务——将每步乘法取模10^6+3,最终得到f(n)即: 你的任务——计算f(n)。 输入 多组测试样例,每次输入一个整数n()。 输出 输出f(n),每个结果独占一行。 样例输入 2 样例输出 2 提示 数据可能会很大,超过2^32-1!!!!! 注意取模的规律!!!! 注意时间问题,不要多次计算之前的!!!! 定理:ab=c,(a%d)(b%d)=(c%d); 将小于取余数的数字放进一个数组中避免重复计算 因为大于余数的数阶乘取余后
2020-12-22 00:43:33
2914
原创 平顶山学院2100: 心理阴影面积
题目描述 xlyy.JPG 这是一幅心理阴影面积图。我们都以为自己可以匀速前进(图中蓝色直线),而拖延症晚期的我们往往执行的是最后时刻的疯狂赶工(图中的红色折线)。由红、蓝线围出的面积,就是我们在做作业时的心理阴影面积。 现给出红色拐点的坐标 (x,y),要求你算出这个心理阴影面积。 输入 输入在一行中给出 2 个不超过 100 的正整数 x 和 y,并且保证有 x>y。这里假设横、纵坐标的最大值(即截止日和最终完成度)都是 100。 输出 在一行中输出心理阴影面积。 样例输入 90 10 样例输出
2020-12-20 20:28:19
327
原创 向量vector的常规操作
运用vector需要头文件 vector 常用操作有 num为自定义的向量; 所以操作都需要以num.clear();的形式书写; clear(); //移除向量中的全部数据; empty();//判断向量是否为空; size();//返回向量中元素的个数; [index].at(index)//返回索引为index的元素; erase(pos);//删除pos位置的元素; erase(beg,end);//删除[beg,end]中的元素; front();//返还第一个元素; ins
2020-12-17 17:42:15
305
原创 平顶山学院acm2163
题目描述 同学ZY是一名资深舔狗,在和女生聊天的时候经常连发四五句话,女生才会几个字,但是ZY看着女生的回复就能开心好久,偶尔女生也会发几句比较长的消息,能让ZY开心到半夜,女生发的消息越长,字数越多,ZY就会越高兴,假设女生跟ZY都是英文聊天, 如果女生什么都没有回复或者一句话中只有两个及两个以下的单词不一样,那么ZY的心情是“正常”, 如果女生发的一句英文中超过两个单词不一样,ZY的心情是“高兴”, 如果超过4个单词不一样,ZY的心情是"非常高兴", 如果超过6个单词不一样,ZY的心情是“兴奋”, 超过
2020-12-10 20:10:55
315
原创 动态规划---求硬币最优解
#include <stdio.h> #include <stdlib.h> int main() { int num[3];// number of kinds coin int min=0;//define minimum for(int i=0;i<3;i++) { scanf("%d",&num[i]); if(i==0) min=num[i]; if(.
2020-11-29 00:56:07
374
原创 2158: 贪吃蛇大师
题目描述 阿伟是平顶山贪吃蛇大师。 这天他发现了一个新的贪吃蛇游戏,里面的贪吃蛇居然可以斜着走! 但是这个贪吃蛇的地图居然是无限大! 但他发现了一个规律:想要使自己的贪吃蛇空间利用率最高,最好的方法就是叠着走,如图所示: 阿伟在这个地图里,将坐标标记为为:x/y,代表第x行第y列。 阿伟想要知道在N步之后,能到达的坐标是什么?聪明的你能帮帮阿伟吗? 输入 输入一个正整数N,代表阿伟走的步数(1≤N≤10000000)。 输出 输出阿伟在N步之后的坐标 样例输入 7 样例输出 1/4 来源 19力宾 #inc
2020-11-23 22:07:59
214
原创 “大数”a+b的计算;
1513: a+b 时间限制: 1 Sec 内存限制: 128 MB 提交: 558 解决: 185 [提交][状态][讨论版][命题人:外部导入] 题目描述 a+b 输入 一个 m 代表多少组数据 每组两个数a b,空格隔开,每个数小于1000位 输出 a+b的和。。并换行。 样例输入 5 123456 123456 654321 654321 987654321123456789 987654321123456789 11111111111111111111111111111111111111222
2020-11-20 22:39:49
483
原创 C-------1308: 求三角形的面积
题目描述 给出三角形的三条边,求三角形的面积。 输入 输入三角形的三条边长(实数),数据之间用空格隔开。 输出 输出三角形的面积,结果保留2位小数。 样例输入 2.5 4 5 样例输出 4.95 提示 用海伦公式或其他方法均可。 三角形三边面积公式为:√[s(s-a)(s-b)(s-c)],其中s=(a+b+c)/2。 #include <stdio.h> #include <math.h>//这里需要引入开方的头文件 int main() { double a,b,c,d,
2020-11-15 21:00:20
415
原创 C--------2130: 草船借箭
题目描述 大家都知道草船借箭的故事,三国时期周瑜为了难为诸葛亮,让他立下军令状三天造出10万支箭,还拖欠造箭的原材料,假如你是造箭工人,现在告诉你每种弓箭规格,即箭身的长度,以及每种规格弓箭所需要的数目,要求你把需要的弓箭都输出. 弓箭的基本样子为 “>±–+>”,其中"±–+"为箭身,数据保证箭身长度 L > 2 输入 有多组测试数据,每组数据首行有一个N(N<=10000),接下来一行有N个整数L,(2<L<20),L是无序且随机的。 输出 按照箭身的长度从小到大的顺
2020-11-15 20:35:33
932
原创 C--------1136: 字符串替换(语言入门)
题目描述 编写一个程序实现将字符串中的所有"you"替换成"we" 输入 输入包含多行数据 每行数据是一个字符串,长度不超过1000 输出 对于输入的每一行,输出替换后的字符串 样例输入 you are what you do 样例输出 we are what we do #include<stdio.h> #include<string.h> int main() { char arr[1000],a='y',b='w',c='e'; int i,j,n;
2020-11-15 20:23:54
213
原创 C-----2087: 矩阵鞍点
题目描述 给定一个n*n矩阵A。矩阵A的鞍点是一个位置(i,j),在该位置上的元素是第i行上的最大数,第j列上的最小数。一个矩阵A也可能没有鞍点。 你的任务是找出A的鞍点。 输入 输入的第1行是一个正整数n, (1<=n<=100),然后有n行,每一行有n个整数,同一行上两个整数之间有一个或多个空格。 输出 对输入的矩阵,如果找到鞍点,就输出其下标。下标为两个数字,第一个数字是行号,第二个数字是列号,均从0开始计数。 如果找不到,就输出 NO 题目所给的数据保证了不会出现多个鞍点。 样例输入 4
2020-11-14 00:13:07
904
原创 C------1109: 超级台阶
题目描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法。 输入 输入数据首先包含一个整数n(1<=n<=100),表示测试实例的个数,然后是n行数据,每行包含一个整数m,(1<=m<=40), 表示楼梯的级数。 输出 对于每个测试实例,请输出不同走法的数量。 样例输入 2 2 3 样例输出 1 2 #include <stdio.h> #include <stdlib.h> int
2020-11-11 22:45:35
206
原创 C------1726: 打印菱形
样例输入 5 样例输出 * *** ***** ******* ********* ******* ***** *** * 代码: #include <stdio.h> #include <stdlib.h> int main() { int i,n,s,j; while(scanf("%d",&n)!=EOF) { for(i=1;i<=n;i++) { for(s=0;s
2020-11-11 22:32:38
217
原创 C-----1966: 矩阵最值和下标
题目描述 给出一个 nn 的矩阵,求出矩阵中最小元素及它的下标,最大元素和它的下标。 输入 第一行输入一个 n, 下面输入一个 nn 的矩阵; 输出 输出占两行,第一行是矩阵中最小元素及它的下标, 第二行是矩阵中最大元素及它的下标。(测试数据保证最值都唯一) 样例输入 3 1 2 3 4 5 6 7 8 9 样例输出 1 0 0 9 2 2 #include <stdio.h> #include <stdlib.h> int main() { int n,h,i,s,j;
2020-11-11 22:13:51
337
原创 1321:判断是否水仙花数
问题 B: 判断水仙花数 题目描述 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。 现在要求输入一个三位数,判断该数是否是水仙花数,如果是,输出“yes”,否则输出“no” 输入 输入一个三位的正整数。 输出 输出“yes”或“no”。 样例输入 153 样例输出 yes #include <stdio.h> #include <stdlib.h> in
2020-11-08 20:23:34
534
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅