01背包-目标和
题面力扣题目链接-目标和
给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S。现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。
返回可以使最终数组和为目标数 S 的所有添加符号的方法数。
示例:
输入:nums: [1, 1, 1, 1, 1], S: 3输出:5
解释:
-1+1+1+1+1 = 3+1-1+1+1+1 = 3+1+1-1+1+1 = 3+1+1+1-1+1 = 3+1+1+1+1-1 = 3一共有5种方法让最终目标和为3。
提示:
数组非空,且长度不会超过 20 。
初始的数组的和不会超过 1000 。
保证返回的最终结果能被 32 位整数存下。
解析记加负号的元素之和为neg,加正号的元素之和为pos
例如:给出的数组是 [1,1,1,1,1]目标的结果是 3其中的一种组合方法为 +1+1+1 -1 —> pos = 3, neg = 1
$target = pos - ( neg )———①$这里的关键在于把neg的负号提出来,所以:$pos + neg = sum(sum是所有 ...
动态规划算法
动态规划总方法论 - 动态规划五部曲
确定DP数组(DP table)以及下标的含义
动态规划的核心在于理解和明确DP数组所表示的含义
在进行动态规划递推公式推导的时候要紧紧围绕着DP数组的含义
推导递推公式
推导递推公式的关键在于找到当前状态可以由哪些状态转移而来
要搞清楚可以从哪些状态转移来就要紧紧围绕着DP数组的含义
dp数组如何初始化
在确定递推公式之后在进行初始化
确定遍历顺序
举例推导dp数组
如果动规结果不正确,最好的方式是打印出来DP数组的值,分析与预期结果哪里不正确
动态规划:01背包理论基础01背包问题基本题目(二维数组解法)
题目描述有个背包可承受重量N,现有T件物品,每件物品重量为Wi,价值为Vi ,每件物品只有一个,这个背包可以装载物品的最大价值是多少?输入格式第一行,两个整数,分别表示N和T,用空格隔开(N≤1000,T≤100)接下来T行,每行两个整数,分别表示T件物品的重量Wi和价值Vi(1≤Wi,Vi≤100)输出格式一行,表示这个背包可以装载物品的最大价值输入输出样例输入样例1:100 577 9222 2229 8750 4699 ...
C++のSTL
set容器https://www.cnblogs.com/linuxAndMcu/p/10261014.html#_label2
字符串和字符数组cin.getline()与getline()的区别cin.getline要使用字符数组做参数,getline要使用字符串做参数
```getline(cin,字符串名)
12345678 char name[20]; string s;cin.getline(name,20); //OK getline(cin,name); //ERROR cin.getline(s,20); //ERROR getline(cin,s); //OK
sort排序sort主要是使用了快排并融合了堆排序等方法
基本用法(一维数组)
默认对传入的数据进行从小到大排序
12vector<int> a;sort(a.begin(),a.end());
可以使用cmp函数改变排序规则使用cmp函数改为从大到小排序123bool cmp(const int &x,const int &y ...
信奥竞赛技巧
简介
STL容器见 站内:cpp STL详解
算法技巧输入输出加速代码1ios::sync_with_stdio(false); //输入输出加速
作用
取消同步: 默认情况下,C++ 的标准输入输出流(cin 和 cout)与 C 的标准输入输出流(stdin 和 stdout)是同步的。这意味着每次使用 cin 和 cout 时,都会确保两者的状态一致,这样会导致性能损失。 调用 ios::sync_with_stdio(false); 可以取消这种同步,使得 C++ 的输入输出流更快,因为不再需要每次都保持同步。
提高性能: 在处理大量输入输出时,取消同步后,使用 cin 和 cout 的性能会显著提高。这在竞争性编程或需要快速处理大量数据的场合中非常有用。字符串读取空白、回车问题
方法1
123//使用下面代码可以让字符串s忽略掉换行、空白string s;getline(cin >> ws, s);
方法2
12345//使用下面代码可以让字符串s不读取掉换行//使用cin.get()吃掉换行string s;cin.get(); //读取换行ge ...
重装系统前后需要完成的事情
重装系统之前备份在重装系统之前需要备份的重要文件
备份浏览器插件(以chrome为例)插件安装本地地址:C:\Users\主机名\AppData\Local\Google\Chrome\User Data\Default\Extensions这里会有一堆文件夹,其文件夹名对应的是插件的ID点开Chrome-拓展程序-打包拓展程序-选择拓展程序根目录这里需要打包的是点开上文文件夹打包里面的版本号文件夹然后就会生成crx文件
备份桌面文件、C盘文档文件夹、图片文件夹、视频文件夹
截图备份:桌面图标位置、快速访问文件夹、开始菜单快捷方式
保存油猴脚本中的脚本(打包导出到本地)
参考我的常用软件恢复常用软件
unity笔记
基础操作记录跟学视频脚本文件
第一天学习P6-P10 创建物体、坐标系
创建3D物体在层级下鼠标右击选择 3D object中选择各种形状
坐标系分为世界坐标系和物体坐标系选中物体后在属性中transform.position的数值是相对于世界坐标系计算的将一个物体变为另一个物体的子类后单独移动,position还是相对世界坐标系的,但在移动父类时它和父类的相对位置不会改变(上手实践一下)
对物体的基本操作
依次为:
移动视角(可以按住鼠标中键),快捷键-Q
移动物体,快捷键-W
旋转物体,快捷键-E
放缩物体,快捷键-R
矩形工具,快捷键-T
综合变换,快捷键-Y
导入模型和修改材质模型资源导入在assets中,还可以修改材质(materials),选择外部材质即可。project中选中物体->Inspector->Materials
也可以自己设置新材质,project右击->Create->Material
资源商定导航栏中Windows选中asset store,在商店中购买需要的素材。在package manager中下载和导入素 ...
unity脚本
脚本文件
Vector312345678910111213141516171819202122void Start(){ //向量,坐标,旋转,缩放 Vector3 v = new Vector3(0, 1,0 ); Vector3 v1 = Vector3.right; //计算两个向量夹角 Debug.Log(Vector3.Angle(v,v1)); //计算两点间距离 Debug.Log(Vector3.Distance(v,v1)); //点乘 Debug.Log(Vector3.Dot(v,v1)); //叉乘 Debug.Log(Vector3.Cross(v,v1)); //插值 Debug.Log(Vector3.Lerp(Vector3.left,Vector3.right,0.5f)); //向量的模 Debug.Log(v.magnitude); //规范化向量 Debug.Log(v.normalized);}
Time类12345 ...
Cpp语言基础
部分内容复习
二级指针的作用
指向指针的指针的作用:当要修改实参指针的指向的时候,形参必须使用指向指针的指针。
当修改的是实参指针指向的内容时,则形参只需是指针即可
1234567891011void GetMemory(char *p,int num){ p=(char*)malloc(sizeof(char)*num);//p是形参指向的地址}void main(){ char *str=NULL; GetMemory(str,100);//str是实参指向的地址,不能通过调用函数来申请内存 strcpy(str,"hello");}
结构是编译能通过,却不能运行,为什么呢?
先说一下指针作为函数参数的意义:当将指针作为参数时,实参向形参传递的是地址,在函数执行过程中,既可以对该参数指针进行处理,也可以对该参数指针所指向的数据进行处理,(以上程序段来说就是可以对p或p进行处理)。*由于此时形参和实参都是指向同一个存储单元,因此当形参指针所指向的数据改变时,实参指针所指向的数据也作相应的改变,因此这 ...
Godot基本操作
配置外部编辑器使用idea发现不能idea中的tab在godot脚本中会变成空格导致错误,还有不能同步的奇怪问题,所以还是决定使用vscode做外部编辑器。
在下载vscode中下载godot的插件(适用于GDScript的那一个)
配置好lunch.json文件
参考网站外部编辑器设置
修改json代码12345678910111213 "configurations": [ { "name": "Godot Debug", "type": "godot", "request": "launch", "project": "${workspaceFolder}", "port": 6007, "debugServer": 6005, //go ...
QuantumultX 使用记录
记录一下QuantumultX的使用教程和一些规则
如何添加JS脚本点击规则资源->右上角第三个->在资源路径里填上要订阅的脚本链接即可
添加完成后可以在最下面的配置文件的[rewrite-remote]标签下修改参数