自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 使用BeautifulSoup爬取烂番茄

from pyquery import PyQuery as pqfrom bs4 import BeautifulSoupfrom bs4.element import Tagimport requestsheaders = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36', 'Ref

2021-05-15 12:41:05 1376

原创 scanf选择性忽略

scanf提供了一种可以忽略指定位置上的数据读入的方式,这函数真心的牛逼。#define _CRT_SECURE_NO_DEPRECATE#include <iostream>#include <string>#include <cstdio>using namespace std;int main(){ int a, b, c; scanf("%d%*d%d", &a, &c); printf("a=%d, c=%d\n", a,

2021-05-09 15:40:55 442

原创 计算机组成原理

这是一个可以查看的double类型数据具体内存情况的程序#include <stdio.h>int main(){ float f = 8.25; //浮点数在内存中的表示 -8.25=>1000.01=>1.00001x2^3 //1位符号位+8位指数位+23位指数位 //符号位1 指数127+3=130=>1000 0010 尾数00001

2021-05-02 22:15:55 190

原创 传递闭包模板

传递闭包模板 for (int k = 1; k <= n; k++) for (int i = 1; i <= n; i++) for (int j = 1; j <= n; j++) { g[i][j] = g[i][j] | (g[i][k] & g[k][j]); }请特别注意,对kkk的循环位于三重循环的最外侧g[i][j] = g[i]

2021-03-31 20:10:15 195

原创 匈牙利算法模板

Acwing#include<iostream>#include<cstring>#include<cstdio>using namespace std;const int n = 510, M = 100100;int e[M], ne[M], h[n], idx;int n1, n2, m;int st[n];int match[n];bool find(int x){ for (int i = h[x]; ~i; i = ne[

2021-03-31 09:24:23 167

原创 二分法探微

困难的二分法二分法找左边界在一个数组中,找到所给出的一个数的最左边的一个值。int leftBorder(vector<int>in,int target){ int left = 0; int right = in.size() - 1; while (left<=right) { int mid = (right - left) / 2 + left; if (in[mid] >= target) { right = mid - 1; }

2021-03-28 21:47:02 148

原创 1246

解题思路我们只考虑S=1S=1S=1和S=2S=2S=2的情况,最终可以得到96分的分数。显然,第nnn秒钟序列中的数字分布情况与第n−1n-1n−1秒钟序列中的数字的分布情况是紧密相关的,我们可以根据这一点建立转移矩阵,使用快速幂算法完成矩阵的连续乘法,我们通过矩阵的连乘的方式方式来模拟时间的推移过程。以上思路来自于Acwing#include<cstdio>#include<iostream>#include<cstring>#include<

2021-03-27 20:37:16 196

原创 MAR与MDR是什么?

Baby StepsWe’re going to take the first step in “building” the CPU. We’re going to introduce two registers: the MAR and the MDR. We assume both are 32-bit parallel load registers.MARMAR is short for memory address register. This register has its output

2021-03-09 22:23:07 7990

原创 8259A究竟是做什么的?

做ucore实验的时候遇到了8259A这个概念,在这里整理一下相关的知识从哪里来?这类中断有两个特点,第一是数量很多,毕竟有很多外部设备;第二是它们可以被屏蔽,这样处理器就像是没听见、没看见一样,不会对它们进行处理。所以,这类硬件中断称为可屏蔽中断。尽管不处理中断就会把零件铣坏,但是否允许处理器看见该中断,是你自己的事,这是处理器赋予你的权利。可屏蔽中断是通过INTR引脚进入处理器内部的, 像NMI一样, 不可能为每一个中断源都提供一个引脚。而且,处理器每次只能处理一个中断。在这种情况下,需要一个代理

2021-02-24 21:12:56 1216

原创 树形背包DP

一道题目,两种解法背包问题一定要按照物品、背包容积、决策的顺序进行遍历。增加背包容积的解法#include <bits/stdc++.h>using namespace std;const int N = 310, M = N * 2;int h[N], ne[M], v[M], idx;int w[N];int dp[N][N];int n, m;void add(int a, int b){ ++idx;v[idx] = b;ne[idx] = h[a]

2021-02-21 22:14:53 232

原创 权限查询

题目链接这道题一开始我想用map表存储数据,后来才意识到这是一种错误的想法。过多的map会大大增加编程的复杂度。参考题目中给出的最多只有一百个权限、一百个角色和一百个用户名,所以这道题最理想的做法是用遍历穷举的方式一个一个去找。100分代码如下,存在一定的冗余但是并不影响最后的效果。#include <iostream>#include <map>#include <vector>#include<cstdio>#include<queue

2020-12-11 15:38:51 260

原创 CSP认证有趣的(2013)

题目链接递推的思想我们将每填入一个数时,答案所面临的状态进行划分,实际上可以分为六种状态目前只出现过 2目前只出现过 2 0目前只出现过 2 3目前只出现过 2 0 1目前只出现过 2 0 3目前只出现过 2 0 1 3在位置iii上每填入一个数都意味着状态的一次转移for (int i = 1; i <= n; i++) { a[i][0] = 1;//目前为止只出现过2 情况只有一种 a[i][1] = (a[i - 1][0] + 2 * a[i - 1][1]

2020-12-10 18:10:14 194

原创 走廊泼水节

最小生成树问题题目链接题解链接解决这道题的思想体现了对Kruskal算法的深刻理解。每当我们从排序好的边的数组中取出一条边准备连接时,这条边一定比它两个端点所对应的联通图的边集合中最小的边还要小。。基于这样的思想我们就能够求解出这道题。这其中有一点需要注意的是,原题中所说的添加的新的边是并不存在的。这也就是说这条添加的边的长度是我们可以人为随意决定的#include<iostream>#include<map>#include<vector>#inc

2020-11-17 14:44:48 172

原创 学习使用python的zipfile和os

import osimport os.pathimport zipfiledef YZQHW(inad, outad, id=None, hwid=None): ''' 将每次的作业写到同一个文件A中,每一个题目对应一个函数 :param inad:要读取的文件A的地址 :param outad: 输出压缩文件的地址 :param id: 你的学号 :param hwid: 第几次作业 :return:没有返回值 ''' fi

2020-11-03 10:28:49 326 1

原创 第K条最小指令

第K条最小指令题目链接这道题帮我们重新回顾了一下动态规划求解排列组合问题的过程。并给出了不错的思路求解类似问题。class Solution {public: string kthSmallestPath(vector<int>& destination, int k) { int h = destination[1]; int v = destination[0]; // 预处理组合数

2020-11-02 12:15:08 239

原创 洛谷(深入理解Floyd算法)P1119 灾后重建

#include<iostream>#include<vector>#include<algorithm>#include<cstring>#include<queue>#include<list>#include<bitset>#include<map>#include<limits> #include<string>#include<set>us

2020-10-06 10:21:32 326

原创 给定行和列的和求可行矩阵

这道题在刘汝佳的书上是用网络流做的,但是数据量一大就会超时,使用贪心的思想来做就会非常简单class Solution { public: vector<vector<int>> restoreMatrix(vector<int>& rowSum, vector<int>& colSum) { int row = rowSum.size(); int col = colSum.size();

2020-10-04 16:01:04 531

原创 Uva10003切割木棍

一开始我是这么做的int main(){ freopen("sb.txt", "r", stdin); int t; while (scanf("%d",&t)&&t) { //t代表木棒的长度// memset(dp,) //fill(dp, dp + MAX * MAX, 0x3f3f3f3f); memset(dp, 0x3f3f3f3f, sizeof(dp)); int sum; scanf("%d", &sum); f

2020-10-02 10:58:39 215

原创 Uva12563(一维01背包问题水题)

Uva 12563#include<iostream>#include<cstdio>#include<vector>#include<algorithm>#define MAX (180*50+678+100)using namespace std;int nums[MAX+1];int main(){ freopen("sb.txt","r",stdin); int count; cin >> count; int g

2020-10-01 23:08:59 168

原创 codeforce B. Two Arrays

题目链接题目大概是这样说的这道题如果使用位运算爆搜的方法一定会超时。实际上,组成unluck数的只有两个数,使用键值对的方式就能够记录当前的数组中是否出现了与这个数可以组成unlucky数的数字。#include<iostream>#include<vector>#include<algorithm>#include<numeric>#include<map>using namespace std;int main(){

2020-09-28 16:49:17 523

原创 Uva10285最长的滑雪记录

这真的是一道动态规划题吗?感觉时间复杂度很高·····#include<iostream>#include<cstring>#include<algorithm>using namespace std;#define MAX 10005// int Map[105][105];int count1[MAX];int R, C;int dx[] = { 0,-1,0,1 };int dy[] = { 1,0,-1,0 };int DP(int

2020-09-22 22:01:10 215

原创 最大子数组乘积

题目链接动态规划的典型题目,这道题实际上是最大连续子数组和的一个进阶版本。这道题的难点在于,这里要同时构建两个辅助数组。f(n)f(n)f(n)代表从区间[0,n][0,n][0,n]内,以n为结尾的最大乘积。与之相对的,g(n)g(n)g(n)代表从区间[0,n][0,n][0,n]内,以n为结尾的最小乘积动态转移的方程是这样的f(n)=max{f(n−1)×a[n],a[n],g(n−1)×a[n]}f(n)=max\{f(n-1)\times a[n],a[n],g(n-1)\times a[

2020-09-20 17:33:20 217

原创 leetcode连接所有点的最小费用与Krustal算法模板

class Solution {private: struct Edge { int u, v, cost; bool operator<(const Edge& in)const { return cost < in.cost; } }; vector<Edge>edges; vector<int>parent;public: int minCostConnectPoints(vector<vector<in

2020-09-16 22:13:21 237

原创 CCF行车路线

CCF 行车路线注意事项dev C++声明 文件才能使用memset函数最短路算法一定要先初始化好相关的数组变量,将相应的值初始化为最大值题目最终所求的结果一般都很大,最好使用 long long 类型。一定要先测试一遍程序再提交最开始这道题我想用两张图同时用Floyd算法过一遍,最后发现这种想法是错误的下面的这个方法采用了类似spfa算法的思想,dis[i]表示从起点到达i点的路径的最后一段路程是大路。dis1[i]表示从起点到达i点的路径的最后一段路程是小路。#include

2020-09-09 19:35:15 284

原创 CCF通信网络(错误原因分析)

CCF 通信网络题目的描述在这里我最开始的思路是对的,就是正向和反向各做一遍DFS然后遍历统计一下有多少个点能与其他所有点联通。然而在这里我犯了一个错误,这个错误是题目中给出的例子对我的一个误导。这个误导的内容就是说,能够连通所有点的情况并不是只有下图中的这种情况。这种情况我们只要认为在某一种遍历里方式下,一个点与其他的所有点都联通就可以了。但实际上,正向遍历和反向遍历只要能够互补就满足题目的要求了。让一个点与其他所有点都有连通关系的要求太过于严格(最多只能得25分·····)。因为题目中很有可

2020-09-09 13:04:25 455

原创 CCF之消息传递接口的解法

CCF 消息传递接口本来很简单的一道题,愣是被我弄复杂了,半天弄不出来。这不就是用个队列吗······有什么难的?这里面有一个重要的事情就是关于C++输入输出的效率问题。std::ios::sync_with_stdio(false);在c++中之所以cin,cout效率低,是因为先把要输出的东西存入缓冲区,再输出,导致效率降低,而这段语句可以来打消iostream的输入和输出缓存,可节省时间,使效率与scanf与printf相差无几,还有应注意的是scanf与printf使用的头文件应是stdi

2020-09-04 16:57:13 338 2

原创 CCF乔乔牛牛逛超市

这是一个最大权闭合子图问题。之所以会有最大权闭合子图问题的主要原因是因为这个图中存在一部分点的权值是负数。对最大权闭合子图的解释在这个链接最大权闭合子图对这道题的解释在这个链接题目思路经过测试,分数为100#define _CRT_SECURE_NO_WARNINGS#include <iostream>#include<vector>#include<cstdio>#include<cstring>#include<map>

2020-09-04 16:56:39 723 3

原创 元素选择器与url映射

CCF 元素选择器这程序真是惊呆我了······真的是巨佬。真的有人能写出这么牛逼的程序。#include<iostream>#include<string>#include<sstream>#include<vector>#include<algorithm>using namespace std;const int MAXN = 105;struct Selector { int row; int rank; str

2020-09-04 16:55:31 190

原创 CCF损坏的RAID硬盘

CCF损坏的RAID硬盘1、 使用太多次cin读入,会严重降低读入速度,需要加上这一句话。我知道c++的流输入输出效率很低,平常是尽量使用C的scanf,sprintf读入读出,但是string必须使用cin。ios::sync_with_stdio(false);一定要有这句话才能提高速度2、非常困惑,使用ios::sync_with_stdio(false)情况下,部分输入输出使用scanf,printf得了0分,只能使用cin,cout,才能得满分,有没有大佬能解释一下。这有提示我们:同

2020-09-02 10:42:38 228

原创 leetcode 203周周赛

乘积为正数的最长子数组的长度典型的维护两个数组的动态规划问题。这题应该被视作是最大子数组和的升级版。class Solution {public: int getMaxLen(vector<int>& nums) { int size = nums.size(); if (size == 0)return 0; vector<int>pos(size, 0); vector<int>neg(size, 0); neg[0] = (n

2020-08-30 18:30:07 172

原创 CCF认证之报数问题

原题可以从下面的链接中找到原题最开始我写的代码是这样的#define _CRT_SECURE_NO_WARNINGS#include <algorithm>#include <iostream>#include<vector>#include<cstdio>#include<set>#include<string>using namespace std;#define DEBUGbool has_7(int i

2020-08-28 00:20:59 397 1

原创 矩阵相乘与快速幂运算

矩阵相乘与快速幂运算矩阵乘法今天编程计算矩阵乘法,修改了很多次最终结果总是出现一个特别大的数字,十分令我不解最终才发现原因是 没有声明新的矩阵,在矩阵乘法还没有完成之前,就将原来需要相乘的A、B矩阵给修改了,数字自然会越来越大,最后溢出······这告诉我使用矩阵乘法必须声明一个新的数组用来存放值。用Java写会比较简单一些int[][] mul(int[][] a, int[][] b) { // 矩阵乘法 (m * n) X (n * k) = m * k int m = a.

2020-08-18 22:41:30 547

原创 二叉树的前序、中序和后序遍历问题

已知前序、中序建立二叉树class Soluetion { int pos;public: TreeNode *tree(int left, int right, vector<int> &preorder, vector<int> &inorder) { if (left > right)return nullptr; int t = preorder[pos++]; int locati

2020-08-15 10:27:29 281

原创 priority_queue自定义比较函数的使用

一直都搞不清楚使用优先队列priority_queue对结构体进行排序时,重载小于号的使用方法,今天终于弄明白了首先,必须要知道使用priority_queue时默认重载<符号。struct Node { int val; ListNode* ptr; Node(int x, ListNode* p) :val(x), ptr(p) {} bool operator<(const ListNode&left)const { return val <

2020-08-02 22:08:02 1161

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除