- 博客(20)
- 收藏
- 关注
原创 在ubuntu服务器中搭建jupyter notebook,并安装numpy,scipy, matplotlibm, pandas, sklearn///tensorflow
1.利用miniconda 安装jupyter notebook教程链接精简版:1.1安装miniconda转到 https://docs.conda.io/en/latest/miniconda.html 选择最新的Miniconda右键复制最新的然后使用 Wget 命令获取最新的.sh 文件wget https://repo.anaconda.com/miniconda/Miniconda3-py38_4.10.3-Linux-x86_64.sh运行sh Miniconda3-py38
2022-04-21 15:28:46
1781
原创 子串计数问题
定义子串的定义:将一个字符串从开头与结尾删去任意字符,形成新的字符串,称为原字符串的子串。子序列的定义:将一个字符串删去任意字符,形成新的字符串,称为原字符串的子序列。区别就是:子串在原串中是连续的,子序列不一定。子串计数问题,一般是给定一个字符串,求满足条件的子串的个数。一般解题方法遍历该字符串中的每个字符(for(i=1;i<=n;i++)),不重不漏的计算出以该字符为开头的方案数。答案就是每个字符答案的累加。关键在于不重不漏的算出包含该字符的方案数例题1:01序列链接解法1:
2022-03-22 12:00:30
7178
4
原创 概率期望问题总结
1.转化为dp问题。D - Just another Robbery 哈利波特要去抢银行,第i个银行有mi个金币,有pi的风险率被抓。问总风险率不超过P的情况下最多能抢多少金币。想要计算风险是比较复杂的,因此我们考虑反面,计算安全率(安全率就是所抢银行的安全率之积,一个银行的安全率=1-pi)。这就是一个背包问题。计f[i] 为抢到金币i所需的最大安全率#include <bits/stdc++.h>#include<ext/rope>#define pb push_b
2021-10-20 17:22:55
683
3
原创 Codeforces Round #749 (Div. 1 + Div. 2, based on Technocup 2022 Elimination Round 1) ABCD解题报告
A. Windblume OdeA. Windblume Ode题意:给定一个a数组,从中挑出尽可能多的数,使得这些数相加是合数。解析:若a1+a2+…+an 为合数,则输出整个a数组,否则遍历1-n,删去其中的一个数,若剩下的数字为合数,则直接输出。可以证明答案个数一定>=n-1#include <bits/stdc++.h>#include<ext/rope>#define pb push_back#define debug(x) cerr<<#x
2021-10-18 21:10:43
487
1
原创 单调栈的应用
单调栈,顾名思义,就是存放的元素是单调的栈。单调栈主要是用来计算某个数左边/右边第一个比它小/大的数,基本上所有单调栈的题都是用到单调栈的这个功能。下面以计算某个数左边第一个比它小的数为例,如果是暴力,对于一个数而言,复杂度是可以接受的,但是倘若要对一个数组所有的数字都计算左边第一个比他小的数呢?于是要利用单调栈。观察一串序列 3 9 7 4 5 我们要计算每个数左边第一个比他小的数(没有则输出-1) ,显然,第一个数的答案是-1,将3压入单调栈。计算数字9 时,我们发现单调栈的
2021-07-28 21:15:31
1132
1
原创 Educational Codeforces Round 109 (Rated for Div. 2) ABD题解
D.Armchairs题目大意:有n个坐位,1代表坐了人,0代表没做,现在要让人移动一下,使得原来做了人的位置全部没人(都为0),每次移动一个人所花费的时间是下标之差的绝对值,求最小花费。用贪心一直wa,原来是个dp我们首先把1和0的下标都记录到数组种,假设f[i][j] 代表前i个1移动到前j个0上所需的最小时间 。我们采用闫氏dp分析法两者取最小值,代码就呼之欲出了#include <iostream>#include <deque>#include <c
2021-05-17 21:58:17
836
10
原创 Educational Codeforces Round 108 (Rated for Div. 2) ABCD题解
A. Red and Blue Beans思路:不妨假设r<b ,当b-r足够小时,一定是输出YES的。只有当b-r 足够大时,才会无解。 极端情况就是 对于每一个口袋(packet) ,只放1个red bean 和d+1个blue bean,因此当r*(d+1)<b时无解。代码:(注意相乘会爆int)#include <iostream>#include <cmath>#include <map>#include <cstring&g
2021-04-30 10:14:16
1463
6
原创 Divide by Zero 2021 and Codeforces Round #714 (Div. 2) ABC题解
A. Array and Peaks题目大意:寻找一个n的排列,使得这个排列有k个峰值。思路:从i=2每隔两个数放置一个当前没有放的最大值,在放k个之后就停止(如果不足k个就输出-1)。接着继续从i=1开始,没有放置数字的位置接着放置当前没有放的最大值。#include <iostream>#include <unordered_map>#include <cstring>using namespace std;typedef long long ll;u
2021-04-12 14:47:38
1311
2
原创 CodeCraft-21 and Codeforces Round #711 (Div. 2) A,B,C题题解
链接:https://codeforces.com/contest/1498/problem/AA. GCD Sum考虑到gcdSum 的分布比较密集,直接暴力即可#include <iostream>#include <vector>#include <unordered_map> #include <cmath>#include <map>#include <cstring> using namespace st
2021-03-30 09:17:07
1819
6
原创 Problem E Wormhouse题解
题意:给定一个欧拉回路(即经过所有边的一条回路),计算另一条欧拉回路,要求这条回路的字典序要大于给定的回路。字母m的含义:边数,所以要读入m+1个数(每两个数字之间组成一条回路)思路:dfs就完事了。下面是我在oj’上提交的代码,debug的时候一顿乱改,加了很多冗杂的东西。。提几点:(不想看的话请移步文章末尾)1.代码采用邻接矩阵(mp)存图(因为n不大)2.check用来检查最后生成的路径是否与原来一致,如果一致则要舍弃3.如果去掉okk这一个东西,那么这个代码可以求出所有符合题意的路径,
2021-02-16 00:12:44
248
4
原创 快速排序算法及其思想的应用(寻找一个序列中第k小元素)
快速排序的本质就是通过特定的算法将一段无序的数列分割成独立的两部分,再对这两部分采用同样的算法递归处理,最终使得序列有序。关键就在于这个特定的算法,具体实现起来,我们可以取序列中任意一个元素作为媒介,并把比其小的数字放在这个元素左边,把比其大的数字放在右边。由于可以选取任意的元素作为媒介,所以快速排序就有了很多种不同的类型。 其中比较常见的就是把中间元素或第一个元素作为媒介。第一种快排:把中间元素作为媒介核心代码: 前面一部分主要是实现以第(l+r)/2 个元素作为媒介, 并将比其小的元素放在前面,
2021-01-25 18:38:18
3445
原创 dp 部分和问题及其扩展
**一.部分和问题**给定整数 a1、a2、…、an,判断是否可以从中选出若干数,使它们的和恰好为 k。首先,我们定义dp数组 dp[i][j] 代表使用前i个数字能否组成j这个数字其次,我们发现dp[i][j] 是可以由dp[i-1][j-a[i]] 推出的,因此我们由状态转移方程 dp[i][j] |= dp[i-1][j-k* a[i] (k=0,1 且 j>=k*a[i[)初始化:dp[0][0] = 0;#include <bits/stdc++.h>
2021-01-24 16:17:05
954
原创 分析:pta 树的遍历
L2-006 树的遍历 (25分)给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列。这里假设键值都是互不相等的正整数。输入格式:输入第一行给出一个正整数N(≤30),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。输出格式:在一行中输出该树的层序遍历的序列。数字间以1个空格分隔,行首尾不得有多余空格。输入样例:72 3 1 5 7 6 41 2 3 4 5 6 7输出样例:4 1 6 3 5 7 2分析:本题是已知二叉树的后序遍
2020-11-27 09:54:56
568
原创 pta题目:List Leaves
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each input file contains one test case. For each case, the first line gives a positive integer N (≤10) which is the total number of nod
2020-10-05 13:02:22
221
原创 dfs基础介绍以及 Lake counting
点此打开题目Lake counting(POJ)深度优先搜索:从某个状态开始,不断地转移状态直到无法转移,然后回退到前一步的状态,继续转移到其他状态如此不断重复,最终得到解。例:给定整数a1,a2,…,an,判断师范可以从中选出若干个数,使他们的和恰好为k。利用dfs的做法是穷举出每个数是否参与了运算,算法复杂度为O(2^n)白书P31页#include <iostream>using namespace std;int a[100];int n,k;int dfs(in
2020-09-28 17:03:20
254
原创 学习笔记之多项式在计算机的多种表示方法
方法一:顺序存储的直接表示我们需要存储每一项的系数和指数,我们可以直接利用数组的下标作为指数,数组的内容做为系数。最简单的表示就出来了。缺点:存储空间比较达,可能存在大量的空间存放着0;可能造成运算缓慢(多个无用的0相加)方法二:结构数组表示法;这样的数组如何相加呢?首先我们应该对每个数组的指数进行从大到小的排序,并且比对两个数组中最大的项,并将之输出(如果指数相同则系数相加)方法三:链表方式存储其过程与方法二类似...
2020-09-18 12:18:54
1121
原创 c学习之单向链表的删除与清除操作
我们尝试用for循环,来搜索链表中的某个元素。在搜到数据的同时能否将其删除呢?链表删除的原理:如图所示,只需将待删除节点的上一个节点指向下一个节点即可(部分代码如下)scanf("%d",&number); Node *p,*q; //删除某个元素 for(q = NULL,p = list.head; p ; q=p,p = p->next) { if(number == p->value) { if(q == NULL) list
2020-09-12 17:00:20
523
原创 初学者的链表学习
今天学习了翁恺老师《C语言程序设计》14.2课 链表,这是对上一课可变数组的优化。何为链表?就是在每一个数据的后方放置一个指针,链接下一个数据…每个数据和指针合称为节点(最后一个节点的指针为NULL)当需要加入新数据时,只需新建一个节点,并将已有的最后一个节点的指针连接到新的节点上。这是基础存数据的代码#include <stdio.h>#include <stdlib.h>#include "node.h"typedef struct _node{ int valu
2020-09-12 16:39:42
279
原创 c语言学习之可变数组
链表今天学习了中国大学mooc上翁恺老师《C语言程序设计》的第14课链表。在学习链表之前,老师讲解了普通的可变数组的实现。前奏:可变数组的实现(有缺陷)首先定义一个结构体,内部存在一个指针和存放大小的变量typedef struct{ int *array; int size; }Array;其次明确目标,对数组所需的操作有:创建 丶清除(释放内存) 丶显示大小 丶访问和赋值 丶扩大这几个功能函数申明如下:#define BLOCK 20Array array_create(int init
2020-09-11 17:21:40
3147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人