C++
殇
这个作者很懒,什么都没留下…
展开
-
背包问题记录最优方案的方法
问题概述在 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 · 445 阅读 · 1 评论 -
2021CCPC河南 1001收集金币(dp)
题目描述小辣在玩奇怪的的小游戏。在这一关中,游戏的主角的任务是收集金币。这时有n个事件依次发生,事件分为两种:1、LOST x 表示主角丢失x枚金币,如果此时主角的金币不足x枚,则主角丢失所有金币。2、GET x 表示主角获得x枚金币。主角当然想要获得更多的金币,因此他获得了一个技能:当一个事件发生时,他可以选择跳过。当然,这项技能最多只能使用一次。现在按顺序给定每个事件,请问主角最后能获得多少枚金币?输入第一样一行一个正整数T(T≤10)代表数据组数。对于每组数据,第一行输入一个正整数原创 2021-11-03 23:47:02 · 571 阅读 · 0 评论 -
阶乘的逆元
求对阶乘 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 · 1639 阅读 · 0 评论 -
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 · 190 阅读 · 0 评论 -
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 · 1463 阅读 · 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 · 141 阅读 · 0 评论 -
第十二届蓝桥杯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 · 739 阅读 · 0 评论 -
第十二届蓝桥杯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 · 562 阅读 · 0 评论 -
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 · 326 阅读 · 0 评论 -
蓝桥杯--发现环(拓扑法求解)
题目描述小明的实验室有 NN 台电脑,编号 1 \cdots N1⋯N。原本这 NN 台电脑之间有 N-1N−1 条数据链接相连,恰好构成一个树形网络。在树形网络上,任意两台电脑之间有唯一的路径相连。不过在最近一次维护网络时,管理员误操作使得某两台电脑之间增加了一条数据链接,于是网络中出现了环路。环路上的电脑由于两两之间不再是只有一条路径,使得这些电脑上的数据传输出现了 BUG。为了恢复正常传输。小明需要找到所有在环路上的电脑,你能帮助他吗?输入描述输入范围:第一行包含一个整数 NN 。以下原创 2021-04-17 23:14:25 · 336 阅读 · 0 评论 -
蓝桥杯2018国赛--迷宫与陷阱
题目描述小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由 N \times NN×N 个格子组成的 2D 迷宫。小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫。每一步,他可以移动到上下左右相邻的格子中(前提是目标格子可以经过)。迷宫中有些格子小明可以经过,我们用 ‘.’ 表示。有些格子是墙壁,小明不能经过,我们用 ‘#’ 表示。此外,有些格子上有陷阱,我们用 ‘X’ 表示。除非小明处于无敌状态,否则不能经过。有些格子上有无敌道具,我们用 ‘%’ 表示。当小明第一次到达该原创 2021-04-06 22:13:46 · 666 阅读 · 0 评论 -
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 · 1742 阅读 · 1 评论 -
二维数组作为参数传入函数
使用二维数组作为参数时可以省略低维的定义,也可以小于实参的范围,此时形参只取实参的一部分其余部分不起作用。列:int n[10][10];void(n[5][10]);void([][10]);void([10][10]);原创 2021-03-05 22:27:06 · 771 阅读 · 0 评论 -
c/c++连续输入数字与字符串的方法
int n; string line; cin>>n; getchar();//吃掉换行符 getline(cin,line);原创 2021-01-20 21:42:28 · 1714 阅读 · 0 评论 -
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 · 129 阅读 · 0 评论 -
向量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 · 218 阅读 · 0 评论