- 博客(222)
- 收藏
- 关注
原创 单符号位的溢出和修正(计算机组成原理)
#include<bits/stdc++.h>using namespace std;/*单符号位的修正算法 思路: 1)不溢出就不修正 2)溢出就修正 判断溢出原理:数值最高位和符号最高位是否进位 a)都进位,不溢出 b)只有其中一个进位,则溢出 根据溢出来修正 1) 只有符号位溢出, 则是两个负数相加 溢出了 答案 -2^n 2)只有最高数值位溢出, 则是两个正数相加溢出了 答案+ 上2 ^ n 本次使用4位机器码 表示范围 .
2020-06-05 09:51:08 4881
原创 双符号位补码(用于修正单符号位补码+法溢出)
代码:/* 用两个符号位进行修正 正数符号位为 00 , 负数符号位为 11 当两位符号位 为 01, 10时就是溢出,这时取最高位为符号位,其他位为数值位 */ #include<bits/stdc++.h>using namespace std;int binary_x[6];int binary_y[6]; void BaseConversion(int n, int b, int base[]) { //10进制转换为2进制并求补码 if(n != -...
2020-05-31 14:19:04 11120 4
原创 D 景区路线规划 (期望 DP 牛客算法周周练1)
题目连接 期望DP 题意 : n个点, m条边,每个点代表一个景点, 第i个景点游览需要耗费ci分钟,会让男性游客和女性游客的满意度分别增加h1i和h2i(满意度初始值都为0 ) 每条边表示从 x-y , y-x需要消耗的时间ti 每个游客在景区中最长可以游览k分钟 ...
2020-05-04 21:20:56 561 1
原创 身体训练 (牛客算法周周练1)期望
题目连接 题意: 求数学期望: n个人 两两相聚 u米, 每个人正常速度为v m/s 当某个配送员排在最后的时候, 他需要以当时自己的最高速度往前跑. 直到超过排头的人 u 米, 然后降回到初始速度, 每人最初的最高速度为c[i] m/s 每轮衰减d[i] m /s n个人初始以随机的顺...
2020-05-04 15:48:13 293
原创 Borrow Classroom (LCA 倍增 )
题目连接 题意: 一个N 个节点的树 N-1条边, 1号节点是根节点,Q次询问,每次询问3个整数 A B C 3个人(3个整数代表3个人所处的位置), 要求A 在文件交到根节点前进行拦截 如果A C同时到1则算失败 数据范围 3s 最多5组样例 n q &...
2020-05-03 18:21:36 240
原创 HDU-2586 (LCA Tarjan & 倍增)
题目连接题意: 求一棵树上任意两点的最短距离,n个点,m次询问数据范围: 2 < n < 40000, 2 < m < 200思路:(Tarjan) LCA板子题,需要一个dis [] 数组, dis[ x ] 记录一下该点 ( x) 到父亲节点 ( find(x)) 的距离,当找到一个匹配...
2020-05-03 15:17:22 366
原创 洛谷 P3379 (LCA Tarjan && 倍增)
题目连接题意: N 个点 ,N - 1条边,M 个询问每个寻问两个整数X, Y。 求 X, Y 的LCA (最近公共祖先), S点是根节点思路: LCA模板题LCA Tarjan AC :#include<iostream>#include<math.h>#include<stdio.h&g...
2020-05-03 11:33:21 339
原创 LCA (最近公共祖先) Tarjan & 倍增
LCA Tarjan:实现原理理解:离线算法,建好树后再查询,一次DFS 吧所有查询解决完。时间复杂度:O(n+q);n个点 q次询问代码/*LCA算法(最近公共祖先算法) Tarjan算法 */#include<iostream>#include<cstring>#include<math.h>#include<...
2020-05-01 09:40:57 964
原创 Tarjan(总结)
1)求强联通分量 Tarjan求强联通分量2)缩点 Tarjan缩点3)求割点和桥 割点和桥的模板4)求双连通分量 待补...
2020-05-01 09:27:58 607
原创 Tarjan (桥和割点模板)
补习Tarjan割点 定义:若从图中删除节点 x 以及所有与 x 关联的边之后,图将被分成两个或两个以上的不相连的子图,那么称 x 为图的割点。 如何求割点:在深搜树中,如果对于某个点u,与它相连的点v(v不是u的父亲)。 那么如果low[v]>=dfn[u], 那么也就是以v为根的深搜子树中的点所连接的点没有已...
2020-04-28 22:54:40 567
原创 POJ1144 Network(Tarjan求割点)
题目连接题意: 让求一个图中的关键节点(割点),输入稍微有点麻烦,不给你一个点有几个边,直接输入边,读到换行才结束。思路: 1)Tarjan求一下改图割点的数量。 2)注意输入读到换行才停止,用getchar()。点击补习读入方式AC代码/*Tarjan 割点 //如果这个点时根节点,并且儿子>=2则这个点就是割点...
2020-04-28 22:37:41 256
原创 UVA - 796 Critical Links (Tarjan 求图中的桥)
题目连接题意: 1)给你一个图,然后让你求图中桥的个数 2)要求按字典序输出 3)并且要求第一个点的值小于第二个点的值思路: 1)Tarjan求桥 2)要求按字典序输出,所以可以用set+ pair 来储存 3)在插入set时比较一下大小再插入。AC :#include&...
2020-04-27 16:29:36 275
原创 Tarjan 缩点模板 (将有向有环图缩点成为有向无环图DAG)
缩点的作用 1)缩点的实际作用:把一个有向带环图,变成一个有向无环图(DAG) ,这样基于DAG的算法就能跑了。 2)可以算缩点后个点的出度基本思想 一我们既然能在有向图中找到环,那么我们就可以吧环给缩成点了(利用Tarjan缩点),缩点基于一种染色实现,在DFS搜索的过程中,尝试吧属于同一个强连通分量的点都染成一个颜色,同一颜色的点就相当...
2020-04-20 22:58:37 1302
原创 Tarjan(强连通模板)
强连通分量: 1)有向图中,该图中的任意两点之间可互达。 2)一个一个点也是强连通分量两个概念:1)时间戳 dfn[ x ] 时间戳是用来标记图中每个节点在进行深度优先搜索时被访问的时间顺序,当然,你可以理解成一个序号(这个序号由小到 大),用 dfn[x] 来表示(搜到该点的最早时间)2)low数组 2)low...
2020-04-20 21:14:15 549
原创 POJ-2553 The Bottom of a Graph (Tarjan强联通+缩点)
题目连接题意: 一个有向图,然后让你求这个图的底部(求出所有没有出度的强联通分量),如果没有底部输出空行,升序输出数据范围:n < 5000思路: Tarjan缩点后,判断某个点是否有出度,找到出度为0的点,把这个点(缩点后的点,缩点前是强联分量),把这个点内的所有点升序输出AC代码:/* Tarjan 缩点 我们既然能在有向图中找到环,那么我...
2020-04-12 23:00:40 253
原创 HDU-1269(Tarjan模板-求强连通分量)
题目连接题意: 求一个有向图n个点 m 条边,是否是强连通分量,如果是输出Yes, 不是输出No.数据范围 n < 10000, m < 100000思路: Tarjan模板题补习:AC code:/* Tarjan求有向图的强连通分量, */ #include<iostream>#...
2020-04-11 10:50:09 371
原创 链式前向星
一种数据结构存图方式理论知识:点击此处通用代码:存图 :const int MAXN = ;int head[MAXN], cnt = 1;bool vis[MAXN];struct Edge{ //根据需要+变量 int to, dis, next;}edge[MAXN << ];void add_edge(int u, int v, int di...
2020-04-09 14:07:25 333
原创 八皇后问题
递归的入门题:写一下主要是回想一下 回溯和非回溯。非回溯,就把所有情况搜出来,把不满足规定的情况扔掉。回溯,如果递递归再到达边界之前。由于一些事实已经不需要往任何一个子问题递归,就可以直接返回上一层(或者不用再向下搜),这种方法就叫回溯。#include<iostream>#include<stdio.h>#include<math.h>...
2020-03-26 13:55:01 191
原创 HDU-1007 Quoit Design(分治求平面内最近两点间距离)
题目连接题意: 找到平面内,最近两个点间距离, 最后答案除以2数据范围: N (2 <= N <= 100,000) N 个点,思路: 如果暴力解法O()必然是 所以应该有 O()算法。 O()树,分治,等等,这题应该用分治算法。 1)既然用分治,就应该吧问题分成几份,先分两份...
2020-03-26 10:12:43 251
原创 One fihgt one HDU-2813 (最小权匹配)
题目链接题意:吕布的士兵和曹操对打,选取合适的对阵使吕布军队受伤最小思路:存负边,跑KM()我用scanf Timi 了 2页,然后用 cin 关了输入输出流 A了 Debug一下午 真坑AC代码:#include<iostream>#include<cstring>#include<stdio.h>#include<...
2020-03-25 20:41:16 178
原创 HDU 2031 (进制转换 10进制转换为 1 ~ 16进制)
题目连接题意 : 输入一个十进制数N,将它转换成R进制数输出。 输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10) 为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示)AC代码:#...
2020-03-25 19:32:24 421
原创 HDU - 3183 (A Magic Lamp)
题目连接题意: 题意:不能改变数字序列的顺序,从n个数中删除m个,输出删除后最小的数数据范围: (m<n<=1000)输出忽略前导0;思路: 用一个栈,然后然后如果栈顶元素大于s [ i ]就弹出栈顶元素(删除该数),一直循环,如果s [ i ] 小于栈顶元素或者栈为空,压入栈,这样我们的栈到最后维护了一个单调递增的...
2020-02-19 21:51:32 208
原创 费用流(板子)
最小费用最大流 最大费用最小流,建边的时候,把花费和流量调换位置 最大费用最大流,建边的时候,把正向的费用存为负值,结果取负号Spfa:链式向前星const int maxn = ;const int inf = 0x3f3f3f3f;//path用来保存找到一条费用最小的增广路 int path[maxn], dis[maxn], head[maxn], vis[maxn], ...
2019-10-01 07:56:56 410
原创 HTML5(Canvas动画)漫游小球
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> canvas{ border: 1px solid blue; } </st...
2019-09-22 17:24:25 419
原创 POJ - 2516 (最小费用流)
题目链接 题意: N个销售店 标号为1 - N,M个供货店,1 - M, 然后如果其中一个店主订购商品,应该安排那个供应商向店主提供多少商品 以减少费用 从不同的供应地点向不同的店主运输不同种类的单件货物的成本可能不同 已知:...
2019-09-22 16:55:58 267
原创 POJ - 2195 (二分最小权匹配 && 最小费用最大流)
题目连接题意: 图上,N个小矮人,N个房子,每个单位时间内 每个小矮人都能水平或者垂直移动一个单位步长到相邻的点。 每次移动消费1块钱,直到他进入房屋,每个房子只能容纳一个小矮人 问支付最低的金额。将这N个小矮人送入这N个不同的房间 ...
2019-09-21 10:57:43 381
原创 最大匹配(二分图)模板
最大匹配最大匹配 最小点覆盖 = 最大匹配 最大独立集 =N - 最大匹配(在二分图中(求一个最大的集合,使集合中的两两不存在)) 最少边覆盖= N(原图节点数) - 最大匹配数。邻接表: /*求 N ,M 的最大匹配 */#include<iostream>#include<cstring>#include<algorit...
2019-09-20 22:25:45 202
原创 带权二分图匹配(KM模板)
最大权二分匹配 最小权二分匹配 (建边时,把边改成负的)#include<iostream>#include<cstring>#include<stdio.h>#include<math.h>#include<algorithm>#include<queue>#include<vector>u...
2019-09-20 22:12:24 368
原创 线段树(维护区间最大最小值) 模板
const int MAX_LEN = ;int seg_tree[MAX_LEN << 2];int Lazy[MAX_LEN << 2];int arr[MAX_LEN];//从下往上更新 节点 void push_up (int root) { seg_tree[root] = max(seg_tree[root << 1], seg_tre...
2019-09-20 20:29:30 1156
原创 线段树 (维护区间和)模板
const int MAX_LEN = ;int seg_tree[MAX_LEN << 2];int Lazy[MAX_LEN << 2];int arr[MAX_LEN];//从下往上更新 节点 void push_up (int root) { seg_tree[root] = seg_tree[root << 1] + seg_tree[r...
2019-09-20 20:18:40 386 1
原创 HDU-1698 Just a Hook (线段树,区间修改,区间查询)
题目连接 题意: 大小为N的数组 数组元素初始值为1, Q次操作 每次操作 x,y,z表示从第x到第y所有的元素的值变为z, 最后问这串数字的和 数据范围: 1s ...
2019-09-20 15:43:21 186
原创 HDU - 1754 I Hate It (线段树维护区间最大值)
题目连接 题意: 求区间内最大值 N个人 1 ~ N M 次查询 + 修改 当C为'Q' 询问操作,它询问ID从A到B(包括A,B)的学生当中,成绩最高的是多少。 当C为'U' 更新操作,要求把ID为A的学生的成绩更改为B。...
2019-09-20 15:37:13 254
原创 HDU - 1166 (线段树区间查询,单点修改)
题目连接 题意: 区间查询,单点修改 第一行一个整数T,表示有T组数据。 每组数据第一行一个正整数N(N<=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵 营地里开始时有ai个人(1<=ai<=...
2019-09-20 15:32:31 255
原创 POJ - 2777 Count Color (线段树,区间染色(用二进制表示颜色))
题目连接 题意: 1 到 L个小木板 染色 O次操作每次: 1)C x y z表示将区间x到y的颜色更改为z 2)P x y 表示查询区间x到y的颜色种类 数据范围: 1S L ...
2019-09-20 15:24:26 236
原创 B. Light bulbs (2019上海网络赛)(差分)
题目连接 题意: N 个 灯泡(编号 0 ~ N-1) M 次操作(初始灯都是关的) 每次操作 给 2个数 L, R,把[L, R]区间内的开关翻转 求 M次操作后 有多少灯开着 数据范围 : 时间 1e9 T组样例 1e3...
2019-09-16 10:24:17 403
原创 洛谷 P3948 数据结构(差分数组)
题目连接 题意: 开始每个数组的元素都是0 给出n . opt, mod, min, max, mod在int内 操作 A, Q A:L, R, X 吧 [ L, R ] 这个区间内每个元素+ X Q:L, R 询问 [L,...
2019-09-16 09:30:19 404
原创 洛谷 P1083 借教室 (二分+差分数组)
题目连接 题意: 处理 n 天的借教室信息, 第 i 天学校有 ri个教室可以租 m 份订单,每份订单有三个整数, d, s, t 【s, t】天租借教室 每天租 d个教室 借教室原则先到先得,如果遇到一份订单无法满足,停止分配 通知申请人修改订单,(无法满足:从s, ...
2019-09-15 22:12:26 267
原创 NKOJ-P3754 (差分数组)
NKOJ3754 数列游戏时间限制 : - MS 空间限制 : 65536 KB评测说明 : 时限1000ms问题描述 给定一个长度为N的序列,首先进行A次操作,每次操作在Li和Ri这个区间加上一个数Ci。 然后有B次询问,每次询问Li到Ri的区间和。 初始序列都为0。输入格式 第一行三个整数N A B。...
2019-09-15 20:55:28 517
原创 HDU-1556 (差分数组)
题目连接 题意: N个气球 1 到 N 编号 然后接下来N行 ,每行给2个整数 a b, 从a到b依次给每个气球涂一次颜色, N次后操作后忘记了第 i 个气球涂过几次颜色了 问算出每个气球被涂过几次颜色 思路: 数据范围 N 1e5 1 <= a, b <=...
2019-09-15 20:28:13 441
原创 L.Digit sum (2019上海网络赛)
题目连接 题意 : =(N) 把N的十进制转换为 b 进制,然后每位相加(233) = 2 + 3 + 3 = 8 (8)=1 + 0 + 0 = 1,(7)=1 + 1 + 1 = 3 求 思路: 1)时间限制 2e9 T个样例 1e5 ...
2019-09-15 19:13:37 242
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人