- 博客(12)
- 收藏
- 关注
原创 全排列函数next_permutaton和prev_permutation
//next_permutation:C++中全排列函数(从小到大输出)//这是一个求一个排序的下一个排列的函数//next_permutation(num,num+n)函数是对数组num中的前n个元素进行全排列,同时并改变num数组的值。//需要强调的是,next_permutation()在使用前需要对欲排列数组按升序排序,//否则只能找出该序列之后的全排列数//prev_permutation:C++中全排列函数(从大到小输出)法一:使用数组直接定义(一般这样写就行了):#include
2022-01-18 15:24:58
574
原创 STL学习笔记
(一)vector优点:删除、反向排序、动态空间1、常用数组容器、可代替一般数组,也可以存字符串2、具有插入、删除,排序、反排序功能3、vector 具有内存自动管理的功能,对于元素的插入和删除,可动态调整所占的内存空间。4、只能尾部扩张操作:(1)v.push_back();迭代器遍历vector< int >::iterator it=v.begin()~it!=v.end();利用*it输出注:也可像数组一样利用下标方式访问(2)v.erase()利用位置或者迭代
2022-01-07 22:47:30
482
原创 [洛谷]P1803 凌乱的yyy / 线段覆盖(结构体+sort自定义排序)
#include<iostream>#include<stdio.h>#include<iomanip>#include<algorithm>using namespace std;struct acm{ int b,e;};//创建结构体struct acm a[100000];//创建用于储存比赛开始和结束时间的结构体数组bool cmp(acm a,acm b){ return a.e<b.e;}...
2021-08-16 21:37:14
172
原创 P1616 疯狂的采药(完全背包问题)
思路这个问题非常类似于 01 背包问题,所不同的是每种物品有无限件。也就是从每种物品的角度考虑,与它相关的策略已并非取或不取两种,而是有取 0 件、取 1 件、取 2 件……等很多种。将 01 背包问题的基本思路加以改进,得到了这样一个清晰的方法。这说明01背包问题的方程的确是很重要,可以推及其它类型的背包问题。for(int i=1;i<=n;i++){for(int V=w[i];V<=v;V++){dp[V]=max(dp[V],dp[V-w[i]]+c[i]);//状态转移方.
2021-08-10 15:51:15
307
原创 [洛谷]P1164小A点菜(01背包——方案数)
状态转移方程: 更新后当前钱数的方案数 =更新前当前钱数的方案数 +当前钱数减去菜价所剩钱数 的方案数dp[j]+=dp[j-a[i]]注意:dp[0]=1,即没钱的时候只有一种方案,就是不买。#include<iostream>using namespace std;int a[10004];int dp[1004];int main(){ int n,m; cin>>n>>m; for(int i=1;i<=n;i++).
2021-08-09 17:37:30
208
原创 [洛谷]P1223 排队接水——带序号一起排列的问题
思路1、可以用一个数组把序号记录下来,在冒泡排序交换的时候,把记录序号的对应数组元素也同时交换。2、用另一个数组储存相同的数据,以这个数组做对照,输出序号。(下面代码采用的是第一种)#include<iostream>#include<stdio.h>#include<iomanip>using namespace std;int t[10004];int x[10004];int main(){ double n; ...
2021-08-09 16:45:18
107
原创 [洛谷P1498] 南蛮图腾(分治+递归)
分析根据题目标签,首先解释一下分治算:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法———百度百科。递归的话大家都很熟悉的。然后再解释一下为什么要用分治和递归:根据样例图形分析可以知道,这是一个由一个基础图形得到的复杂图形,说白了就是图腾每次扩大时,向右复制一个,再向上复制一个,最后再倒置输出。#include<iostream>#include<cmath.
2021-07-28 17:49:46
1170
原创 [洛谷月赛]P5638 【CSGRound2】光骓者的荣耀(经典模拟)
题目描述注意:他可以不访问所有的城市,使用传送器不耗费时间输入格式输出格式一个整数,表示答案。输入输出样例输入4 11 2 3输出3思路由于小K的不稳定传送器只能传送一次,可以想到用总时间-传送节约的跑的时间因为总距离是变不了的,所以说求出传送节约时间的最大值即可求出最短需要的时间如果一个一个枚举的相隔k的城市之间的时间的话,会很慢,于是想到用一个求区间和的好东西:前缀和前缀和通常用sum[ ]表示,sum[i]表示从1到i之间的总和(这里就是从1跑到i所需的时间),用前缀
2021-07-25 18:01:25
273
原创 赵神牛的游戏(过程分析与结果分析)
题目描述输入与输出样例输入#1100 3 500020 100090 1110 10000输出#11输入#250 4 1060 10070 100080 100090 0输出#2-1思路一按照过程分析,释放一次技能,减少一次蓝量,Boss的血量减少一次单次技能的伤害,当蓝量不够下一次技能所消耗或者蓝量小于等于0的时候或者Boss的血量小于等于0的时候退出循环,用一个字母去记录是因为蓝量不够还是因为Boss血量归零退出的循环。如果是因为Boss血量归零则说明可以击败
2021-07-24 22:12:16
353
2
原创 百鸡问题(有关C和C++关系的探索及输入速度的比较)
题目描述:用小于等于n元去买100只鸡,大鸡5元/只,小鸡3元/只,还有1/3元每只的一种小鸡,分别记为x只,y只,z只。编程求解x,y,z所有可能解。输入:测试数据有多组,输入n。输出:对于每组输入,请输出x,y,z所有可行解,按照x,y,z依次增大的顺序输出。样例:输入:40输出:x=0,y=0,z=100x=0,y=1,z=99x=0,y=2,z=98x=1,y=0,z=99思考:刚开始我想了一种方法#include<iost..
2021-07-13 17:14:08
263
4
原创 C/C++语言用埃氏筛选法快速筛选素数
思路 要枚举n以内的素数,可以用埃氏筛法。这是一个与辗转相除法一样古老的算法。 首先,将2到n范围内的所有整数写下来。其中最小的数字2是素数。将表中所有2的倍数都划去。表中剩余的最小数字是3,它不能被更小的数整除,所以是素数。再将表中所有3的倍数全都划去。依次类推,如果表中剩余的最小数字是m时,m就是素数。然后将表中所有m的倍数全部划去。像这样反复操作,就能依次枚举n以内的素数。c++ 样例当maxn=20时首先 外面的循环 毋庸置疑 从2-20遍历需要20次(...
2021-07-11 17:24:50
2955
原创 Hello,world!
##Hello,world!|题目描述This is the first problem for test. Since all we know the ASCII code, your job is simple: Input numbers and output corresponding messages.输入The input will contain a list of positive integers separated by whitespaces(spaces, newlines
2021-07-11 15:53:03
81
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人