seg

【luogu P1471】方差

丶灬走出姿态 提交于 2020-04-07 08:26:32
https://www.luogu.org/problem/show?pid=1471 一眼就能看出是线段树/树状数组题目了。 求平均不用说,线段树/树状数组维护区间和即可。 方差怎么求?先变换下方差公式: 可以看到区间的方差可以由区间内每个数的和与每个数的平方的和得来,用一棵线段树维护这两个东西就好了,好像写不了标记永久化。 当然写两棵普通的线段树/树状数组分别维护这两个东西或者分块暴力也可以 不过我写挂了 。 区间加的时候如何维护平方的和: 注意这里的 是指没有加之前的和。 #include <algorithm> #include <iostream> #define maxn 100005 using namespace std; namespace seg { struct node { int ln, rn, mn; long double sum[2], mark; } seg[maxn * 4]; void push_down(int p) { if (seg[p].mark && seg[p].ln != seg[p].rn) { seg[p * 2].mark += seg[p].mark; seg[p * 2].sum[1] += 2 * seg[p].mark * seg[p * 2].sum[0] + (seg[p * 2].rn - seg[p * 2]

计算与软件工程 作业四

北城以北 提交于 2020-04-05 19:44:31
作业四 作业要求 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10534 课程目标 代码规范复审和两人合作结对编程 实现目标 代码运行,寻找bug 参考文献 https://blog.csdn.net/weixin_43936464/article/details/84779924 评论 评论的博客链接 https://www.cnblogs.com/yjh1128/p/12451503.html https://www.cnblogs.com/yangqiuyan/p/12434874.html https://www.cnblogs.com/17074211zh/p/12454354.html https://www.cnblogs.com/yaj1116/p/12455606.html https://www.cnblogs.com/chengang17074213/p/12455055.html https://www.cnblogs.com/limin123/p/12455500.html https://www.cnblogs.com/xinxiyujisuan/p/12461586.html https://www.cnblogs.com/hxf98/p/12483784

程序的动态加载和执行

£可爱£侵袭症+ 提交于 2020-03-30 19:19:13
内核结构 内核分为四个部分,分别是初始化代码,内核代码,内核数据段和公共例程段,主引导程序也是初始化代码的组成部分。 初始化代码用于从BIOS那里接管处理器和计算机硬件的控制权,安装最基本的段描述符,初始化最初的执行环境。然后,从硬盘上读取和加载内核的剩余部分,创建组成内核的各个内存段。 内核的代码用于分配内存,读取和加载用户程序,控制用户程序的执行。 内核数据段提供了一段可读写的内存空间,供内核自己使用。 公共例程用于提供各种用途和功能的子过程以简化代码的编写。这些例程既可以用于内核,也供用户程序调用。 除了以上的内容以外,内核文件还包括一个头部,记录了各个段的汇编位置,这些统计数据用于告诉初始化代码如何加载内核。 代码清单 用户程序 ;代码清单13-3 ;文件名:c13.asm ;文件说明:用户程序 ;=============================================================================== SECTION header vstart=0 program_length dd program_end ;程序总长度#0x00 head_len dd header_end ;程序头部的长度#0x04 stack_seg dd 0 ;用于接收堆栈段选择子#0x08 stack_len dd 1 ;程序建议的堆栈大小

Python实现Wordcloud生成词云图的示例

主宰稳场 提交于 2020-03-30 16:22:23
wordcloud是Python扩展库中一种将词语用图片表达出来的一种形式,通过词云生成的图片,我们可以更加直观的看出某篇文章的故事梗概。 首先贴出一张词云图(以哈利波特小说为例): 在生成词云图之前,首先要做一些准备工作 1.安装结巴分词库 pip install jieba Python中的分词模块有很多,他们的功能也都是大同小异,我们安装的结巴分词 是当前使用的最多的类型。 下面我来简单介绍一下结巴分词的用法 结巴分词的分词模式分为三种: (1)全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题 (2)精确模式:将句子最精确地切开,适合文本分析 (3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词 下面用一个简单的例子来看一下三种模式的分词区别: import jieba # 全模式:把句子中所有的可以成词的词语都扫描出来, 速度快,但是不能解决歧义问题 text = "哈利波特是一常优秀的文学作品" seg_list = jieba.cut(text, cut_all=True) print(u"[全模式]: ", "/ ".join(seg_list)) # 精确模式:将句子最精确地切开,适合文本分析 seg_list = jieba.cut(text, cut_all=False) print(u"

运输计划

人走茶凉 提交于 2020-03-30 02:33:06
题目描述 公元 2044 年,人类进入了宇宙纪元。 L 国有 n 个星球,还有 n-1 条双向航道,每条航道建立在两个星球之间,这 n-1 条航道连通了 L 国的所有星球。 小 P 掌管一家物流公司,该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 ui 号星球沿最快的宇航路径飞行到 vi 号星球去。显然,飞船驶过一条航道 是需要时间的,对于航道 j,任意飞船驶过它所花费的时间为 tj,并且任意两艘飞船之 间不会产生任何干扰。 为了鼓励科技创新,L 国国王同意小 P 的物流公司参与 L 国的航道建设,即允许小 P 把某一条航道改造成虫洞,飞船驶过虫洞不消耗时间。 在虫洞的建设完成前小 P 的物流公司就预接了 m 个运输计划。在虫洞建设完成后, 这 m 个运输计划会同时开始,所有飞船一起出发。当这 m 个运输计划都完成时,小 P 的 物流公司的阶段性工作就完成了。 如果小 P 可以自由选择将哪一条航道改造成虫洞,试求出小 P 的物流公司完成阶段 性工作所需要的最短时间是多少? 输入格式 第一行包括两个正整数 n、m,表示 L 国中星球的数量及小 P 公司预接的运输计划的数量,星球从 1 到 n 编号。 接下来 n-1 行描述航道的建设情况,其中第 i 行包含三个整数 ai, bi 和 ti,表示第i 条双向航道修建在 ai 与 bi 两个星球之间

【连载】【FPGA黑金开发板】NIOSII那些事儿—UC/OS实验(二十四)

拜拜、爱过 提交于 2020-03-29 02:57:45
声明:本文为原创作品,版权归本博文作者所有,如需转载,请注明出处 http://www.cnblogs.com/kingst/ 这一章,我们简单研究一下基于NIOS II的uC/OS系统的开发过程。实验中有三个任务:第一个任务用于实时时钟DS1302驱动,第二个任务用于LED灯闪烁;第三个任务用于数码管显示654321;最终通过把数据通过PC机串口显示出来,有兴趣的可自行把开发板上的其它功能添上。 1 、 uC/OSII 简介 u C / O S 是一种免费公开源代码、结构小巧、具有可剥夺实时内核的实时操作系统。 μC/OS-II 的前身是μC/OS,最早出自于1992 年美国嵌入式系统专家Jean J.Labrosse 在《嵌入式系统编程》杂志的5 月和6 月刊上刊登的文章连载,并把μC/OS 的源码发布在该杂志的B B S 上。 μC/OS 和μC/OS-II 是专门为计算机的嵌入式应用设计的, 绝大部分代码是用C语言编写的。CPU 硬件相关部分是用汇编语言编写的、总量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU 上。用户只要有标准的ANSI 的C交叉编译器,有汇编器、连接器等软件工具,就可以将μC/OS-II嵌人到开发的产品中。μC/OS-II 具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点, 最小内核可编译至 2KB 。μC

POJ 3237 (Tree)

☆樱花仙子☆ 提交于 2020-03-28 14:27:54
题目链接: 传送门 题目大意:给一棵树,三种操作,query询问 a ~ b 路径上最大边权值,change改变按输入顺序的第 a 条边的      边权为 b ,negate将 a~b 路径上的边权值取相反数。 题目思路:树链剖分,取相反数直接更新到底就行,不用延迟标记,若非要延迟的话,则线段树需保存最大值和      最小值。每次取反就将他俩交换并分别取反。 1 #include <iostream> 2 #include <cstdio> 3 #include <cstdlib> 4 #include <cmath> 5 #include <algorithm> 6 #include <cstring> 7 #include <stack> 8 #include <cctype> 9 #include <queue> 10 #include <string> 11 #include <vector> 12 #include <set> 13 #include <map> 14 #include <climits> 15 #define lson rt<<1,l,mid 16 #define rson rt<<1|1,mid+1,r 17 #define fi first 18 #define se second 19 #define ping(x,y) ((x-y)*(x-y

HDU 1102 Constructing Roads

六月ゝ 毕业季﹏ 提交于 2020-03-26 07:51:25
题目大意:已知一个连接了q条路的城镇,求最小生成树。 #include <cstdio> #include <cstring> #include <algorithm> using namespace std; struct data{int l,x,y;}seg[10010]; int r,f[10010],n,l,cnt,x,y,fx,fy,now,p,ans; char c; int sf(int x){return f[x]==x?x:f[x]=sf(f[x]);} void scan(int &x){ while(c=getchar(),c<'0'||c>'9');x=c-'0'; while(c=getchar(),c>='0'&&c<='9')x=x*10+c-'0'; } bool cmp(data a,data b){return a.l<b.l;} int main(){ while(~scanf("%d",&n)){ for(int i=0;i<=n;i++)f[i]=i;ans=p=cnt=now=0; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ scan(l); if(i<j){seg[cnt].l=l;seg[cnt].x=i;seg[cnt++].y=j;} }scan(r);now++; for(int

Luogu5298 [PKUWC2018]Minimax

我们两清 提交于 2020-03-24 14:07:58
太久没写博客了,过来水一发。 题目链接: 洛谷 首先我们想到,考虑每个叶节点的权值为根节点权值的概率。首先要将叶节点权值离散化。 假设现在是$x$节点,令$f_i,g_i$分别表示左/右节点的权值$=i$的概率。 若$w_x$来自于左儿子,则 $$P(w_x=i)=f_i*(p_x*\sum_{j=1}^{i-1}g_j+(1-p)*\sum_{j=i+1}^mg_j)$$ 右儿子也是一样的。 所以在转移的时候需要顺便维护$f,g$的前/后缀和。 但是我们发现这样直接跑是$O(n^2)$的,肯定不行,但是每个节点的所有dp值都只依赖于两个儿子,而且区间乘法是可以使用lazy_tag的,所以可以使用 线段树合并 。 (等会儿,好像之前并没有写过。。。) 线段树合并就是对于值域线段树,合并的时候如果两棵树都有这个节点,那么就递归下去,否则直接按照上面的式子转移。 $f,g$的前/后缀和也可以放在参数里面顺便维护了。 1 #include<bits/stdc++.h> 2 #define Rint register int 3 using namespace std; 4 typedef long long LL; 5 const int N = 300003, mod = 998244353, inv = 796898467; 6 int n, v[N], tot, p[N], fa

ConcurrentHashMap 源码浅析 1.7

落花浮王杯 提交于 2020-03-23 15:38:18
简介 (1) 背景 HashMap死循环:HashMap在并发执行put操作时会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形数据结构,Entry的next节点永远不为空,就会产生死循环获取Entry. HashTable效率低下:HashTable容器使用synchronized来保证线程安全,但在线程竞争激烈的情况下HashTable的效率非常低下.因为当一个线程访问HashTable的同步方法,其它线程也访问HashTable的同步方法时,会进入阻塞或轮询状态.如线程1使用put进行元素添加,线程2不但不能使用put方法添加元素,也不能使用get方法获取元素,所以竞争越激烈效率越低. (2) 简介 HashTable容器在竞争激烈的并发环境下表现出效率低下的原因是所有访问HashTable的线程都必须竞争一把锁,假如容器里有多把锁,每一把锁用于锁容器其中一部分数据,那么多线程访问容器里不同的数据段时,线程间不会存在竞争,从而可以有效提高并发访问效率,这就是ConcurrentHash所使用的锁分段技术.首先将数据分成一段一段地储存,然后给每一段配一把锁,当一个线程占用锁访问其中一段数据时,其它段的数据也能被其它线程访问. 结构 ConcurrentHashMap是由Segments数组结构和HashEntry数组结构组成