蓝桥杯之数学与简单DP
蓝桥杯之数学与简单DP数学1. 买不到的数目小明开了一家糖果店。
他别出心裁:把水果糖包成4颗一包和7颗一包的两种。
糖果不能拆包卖。
小朋友来买糖的时候,他就用这两种包装来组合。
当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。
你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。
大于17的任何数字都可以用4和7组合出来。
本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。
输入格式两个正整数 n,m,表示每种包装中糖的颗数。
输出格式一个正整数,表示最大不能买到的糖数。
数据范围
2≤n,m≤1000保证数据一定有解。
输入样例:14 7
输出样例:117
AC就一个公式,记住就好,如果不知道就打表找规律。
123456789101112#include <iostream>using namespace std;int main() { int p, q; cin >> p >> q; cout << (p - 1) * (q - 1) - 1 << ...
蓝桥杯之二分与前缀和
蓝桥杯之二分与前缀和二分1. 数的范围给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。
对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。
如果数组中不存在该元素,则返回 -1 -1。
输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。
第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。
接下来 q 行,每行包含一个整数 k,表示一个询问元素。
输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。
如果数组中不存在该元素,则返回 -1 -1。
数据范围
1≤n≤100000\\
1≤q≤100001\\
1≤k≤10000输入样例:123456 31 2 2 3 3 4345
输出样例:1233 45 5-1 -1
AC12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455#include <iostream>#include < ...
蓝桥杯之递归与递推
蓝桥杯之递归与递推递归1. 递归实现指数型枚举从 1∼n 这 n 个整数中随机选取任意多个,输出所有可能的选择方案。
输入格式输入一个整数 n。
输出格式每行输出一种方案。
同一行内的数必须升序排列,相邻两个数用恰好 11 个空格隔开。
对于没有选任何数的方案,输出空行。
本题有自定义校验器(SPJ),各行(不同方案)之间的顺序任意。
数据范围
1≤n≤15输入样例:13
输出样例:1234567322 311 31 21 2 3
AC一共 n 个数,即可以利用填坑的方法进行,从填 1 个坑到填 n 个坑。
选择填哪个坑都可以,比如第 1 个坑填入了 2 之后,第 2 个坑可以填 1(即非升序),也可填 3(即升序)
12345678910111213141516171819202122232425262728293031323334353637383940#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace st ...
归纳与总结《Effective C++》
《Effective C++》1. 让自己习惯C++01. 视 C++ 为一个语言联邦四个次语言
C
Object-Oriented C++
Template C++
STL
请记住
C++ 高校编程守则视情况而变化
02. 尽量以 const,enum,inline,替换 #define可以理解为“宁可以编译器替换预处理器”,因为 #define 不被视为语言的一部分
有两种特殊情况值得注意:
定义常量指针(const pointers)
若要在头文件内定义一个常量的 char*-based 字符串,必须写 const 两次:
1const char* const author_name = "Wablers Liu";
不过,string 对象通常比 char*-based 合宜,所以定义成这样往往更好:
1const std::string author_name = "Wablers Liu";
class 专属常量
为将常量的作用域(scope)限制于 class 内,必须让它成为 class 的一个成员(member);而为 ...
搜索与图论(三)
Prim858. Prim算法求最小生成树给定一个 n 个点 m 条边的无向图,图中可能存在重边和自环,边权可能为负数。
求最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。
给定一张边带权的无向图 G=(V,E),其中 V 表示图中点的集合,E 表示图中边的集合,n=|V|,m=|E|。
由 V 中的全部 n 个顶点和 E 中 n−1 条边构成的无向连通子图被称为 G 的一棵生成树,其中边的权值之和最小的生成树被称为无向图 G 的最小生成树。
输入格式第一行包含两个整数 n 和 m。
接下来 m 行,每行包含三个整数 u,v,w,表示点 u 和点 v 之间存在一条权值为 w 的边。
输出格式共一行,若存在最小生成树,则输出一个整数,表示最小生成树的树边权重之和,如果最小生成树不存在则输出 impossible。
数据范围
1≤n≤500,
1≤m≤10^5图中涉及边的边权的绝对值均不超过 10000。
输入样例:1234564 51 2 11 3 21 4 32 3 23 4 4
输出样例:16
AC思路S: 当前已经在联通块中的所有点的集合
dist[i ...
算法基础之搜索与图论(二)
拓扑排序848. 有向图的拓扑序列给定一个 n 个点 m 条边的有向图,点的编号是 1 到 n,图中可能存在重边和自环。
请输出任意一个该有向图的拓扑序列,如果拓扑序列不存在,则输出 −1。
若一个由图中所有点构成的序列 A 满足:对于图中的每条边 (x,y),x 在 A 中都出现在 y 之前,则称 A 是该图的一个拓扑序列。
输入格式第一行包含两个整数 n 和 m。
接下来 m 行,每行包含两个整数 x 和 y,表示存在一条从点 x 到点 y 的有向边 (x,y)。
输出格式共一行,如果存在拓扑序列,则输出任意一个合法的拓扑序列即可。
否则输出 −1。
数据范围1 ≤ n, m ≤ 105
输入样例:12343 31 22 31 3
输出样例:11 2 3
AC思路只适用于 AOV网 (有向无环图)
有向无环图一定是拓扑序列,有向有环图一定不是拓扑序列。
算法流程:
将入度为 0 的店指向的边删掉,每次删掉后,将入度为 0 的点入队,则最后入队的点的顺序即是拓扑序列。
主要由以下两步循环执行,直到不存在入度为 0 的顶点为止
选择一个入度为 0 的顶点,并将它输出;
删除图中从顶点 ...
搜索与图论(一)
DFS 深度优先搜索842. 排列数字给定一个整数 n,将数字 1∼n 排成一排,将会有很多种排列方法。
现在,请你按照字典序将所有的排列方法输出。
输入格式共一行,包含一个整数 n。
输出格式按字典序输出所有排列方案,每个方案占一行。
数据范围1 ≤ n ≤ 7
输入样例:13
输出样例:1234561 2 31 3 22 1 32 3 13 1 23 2 1
AC此题采用 DFS 深度优先搜索,也即典型回溯算法。回溯的本质是穷举,但可以加上一些剪枝操作来高效一些。
DFS(回溯算法)解决的问题
组合问题:N个数里面按一定规则找出k个数的集合
切割问题:一个字符串按一定规则有几种切割方式
子集问题:一个N个数的集合里有多少符合条件的子集
排列问题:N个数按一定规则全排列,有几种排列方式
棋盘问题:N皇后,解数独等等
DFS 遍历过程
DFS 算法模板框架123456789101112void dfs(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点 ...
算法基础之数据结构模板
数据结构模板单链表1234567891011121314151617181920212223// head存储链表头,e[]存储节点的值,ne[]存储节点的next指针,idx表示当前用到了哪个节点int head, e[N], ne[N], idx;// 初始化void init(){ head = -1; idx = 0;}// 在链表头插入一个数xvoid insert(int x){ e[idx] = x; ne[idx] = head,; head = idx ++ ;}// 将头结点删除,需要保证头结点存在void remove(){ head = ne[head];}
双链表12345678910111213141516171819202122// e[]表示节点的值,l[]表示节点的左指针,r[]表示节点的右指针,idx表示当前用到了哪个节点int e[N], l[N], r[N], idx;// 初始化void init() { //0是左端点,1是右端点 ...
算法基础之基础算法模板
基础算法模板快速排序123456789101112131415void quick_sort(int q[], int l, int r){ if (l >= r) return; int i = l - 1, j = r + 1, x = q[l + r >> 1]; while (i < j) { do i ++ ; while (q[i] < x); do j -- ; while (q[j] > x); if (i < j) swap(q[i], q[j]); } quick_sort(q, l, j); quick_sort(q, j + 1, r);}
归并排序12345678910111213141516171819202122void merge_sort(int q[], int l, int r){ if (l >= r) return; int mid = l + ...
南京林业大学CMCC-EDU自动登录
南京林业大学CMCC-EDU自动登录电脑端(Windows)1. 配置Python环境
打开Python官网
选择下方Download区中的Python 3.10.0,会自动跳到下个界面
(版本可能随着时间有变化)
页面最下方Windows installer (64-bit),会自动下载
打开或运行下载好的程序
记得勾选下方Add Python 3.10 to PATH
点击Install Now(非小白建议自行选择路径)
等待它的自动安装
到此,Python环境配置完成
2. 安装requests第三方库
按下键盘 win + R 并输入 cmd
在命令框中输入代码并回车
1pip install requests
3. 制作并运行脚本
桌面新建记事本,粘贴以下代码
123456789101112131415161718192021222324252627282930313233import requestsurl = "http://10.11.1.3/a70.htm"data = { "DDDDD ...