- 博客(43)
- 收藏
- 关注
原创 IO模型:从Unix到Java(一)
之前一直在看关于NIO和AIO的文章,看的越多越发觉得琐碎,于是决定系统地从Unix的IO模型看起,一路学习到Java的IO模型,下面谈谈我对这两个系统上的IO模型的理解。 提一下Unix系统,这是一个1960年出现的第一个比较成熟的分时操作系统,在我看来也是对目前技术发展影响最深远的操作系统,目前主流的开发OS如Linux,IOS,Android都是类Unix系统,就是他们都是基于Un...
2019-06-14 11:05:26
328
3
原创 对HTTP的一些理解以及对应用层其他协议的讨论(一)
一个多月,陆陆续续看完了这本《Http权威指南》,对HTTP和整个TCP/IP协议栈也算是有了初步了解,想写一篇博客谈谈HTTP协议并引申出对应用层一些其他协议的讨论。 HTTP先从协议和URL讲起吧,算是一些HTTP协议的前置知识。 首先是网络协议,我们都知道计算机通过网线等设备传递的本质上知识0101的比特,那么总得有一个规范规定什么样的比特集可以表示什么样的信息,以及传输的时...
2019-05-25 21:18:33
293
原创 Codeforces Round #488 by NEAR (Div. 2)(01分数规划)
E. Careful Maneuveringtime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThere are two small spaceship, surrounded by two groups of enemy larger spac...
2018-07-05 14:53:17
298
原创 分块算法--2018 UESTC Training for Data Structures
hzwer“分块算法的本质就是让查询和更新尽可能平衡”
2018-06-06 10:58:52
225
原创 并查集--2018 UESTC Training for Data Structures J K L
J-老头马桶枪!点击打开链接题意:有三种生物像剪刀石头布一样相互克制 先给出一系列表述表示x和y是同类或x克制y 找出第一个和前面矛盾的表述 表述的语句数量小于等于10W这题和poj1182 食物链是一样的 都是并查集进阶的基础题 这里有两种做法 第一种比较好理解 就是虽然不知道某个x是什么位置 但是可以设x x+C 和x+2*C表示他在3个状态的情况 如果x和y相同就分别合并x y,x+C,y+...
2018-06-04 13:42:51
242
原创 哈夫曼树--2018 UESTC Training for Data Structures-H - 中堂系的困难任务
这道题的关键点在于要看出那条式子是哈夫曼树的表达式哈夫曼树一般可以用来解决一些最佳判定或者编码之类的问题 比如给学生的成绩分类 原理就是把其中元素出现的概率设为树的边权 代价就是边权乘深度的和 构造一棵哈夫曼树主要是dp和贪心两种做法贪心就是一般教科书讲得从最小元素入手 dp的话就是反过来 因为大的元素肯定应该在树深度比较低的地方 所以把所有元素从大到小排序 一开始假定有一棵大的树 含有一些空的叶...
2018-06-02 18:01:54
209
原创 线段树和单调队列--2018 UESTC Training for Data Structures F - 好吃不过饺子
题意:给n个对象 每个对象有坐标和能量两个变量 有c次查询 每次查询是关于输出每个坐标的能量值与坐标为当前坐标-len到当前坐标-1的所有对象的能量的关系(大于?小于)相对比较水的一道题 有很多种方法可以做 一开始我是用纯线段树完成的 直接维护每个区间的最大最小和平均值 直接查询 但是错误以为他的平均值是整数向下取整算的 然而实际是用double+误差eps来确定与平均值关系 WA了很多次test...
2018-06-01 20:56:41
240
原创 线段树的灵活运用--2018 UESTC Training for Data Structures一棵复杂的线段树 UESTC - 1919
题意:给一个1到n的某种排列 每次有两种操作 将一个区间正向排序或者方向排序 问最后第k位数字是什么 n和操作次数最大是10W这题挺难的,关键在于利用线段树的排序功能因为他没有规律的变换某个区间的次序,所以很难找到某个位置的通解,所以我们可以用二分枚举猜一个答案,此时我们把大于或等于这个答案的数置为1 小于这个答案的数置为0 这样我们就可以通过线段树的区间替换功能来维护一个区间有多少个1 多少个0...
2018-05-30 17:15:36
327
原创 线段树灵活运用--2018 UESTC Training for Data Structures 一棵像样的线段树
设 xem x表示集合中最小的未出现的正整数, 如 xem{}=1,xem{1,3,4}=2定义bi=xem{bi−ci,bi−ci+1,...,bi−1},i=1,2,...,nbi=xem{bi−ci,bi−ci+1,...,bi−1},i=1,2,...,n特别的,b0=1b0=1.给定 nn 和 c1,c2,...,cnc1,c2,...,cn,请你计算出 b1,b2,...,bnb1,b...
2018-05-27 16:47:35
292
原创 搜索进阶--哈希
在一些搜索题(尤其是广搜)里面经常用到一个点是把当前的整个局面映射成一个哈希值 然后用这个哈希值去做搜索的,贴两道题:Eight II HDU - 3567 Eight-puzzle, which is also called "Nine grids", comes from an old game. In this game, you are given a 3 by 3 board and 8...
2018-05-23 00:11:02
196
原创 搜索--曼哈顿距离
Last night, little erriyue had a horrible nightmare. He dreamed that he and his girl friend were trapped in a big maze separately. More terribly, there are two ghosts in the maze. They will kill the p...
2018-05-20 14:37:51
664
原创 2018年5月6日GDCPC (广东赛区)总结
这次省赛出了两题 以铜奖结束 从结果看有点幸庆 毕竟第一次打省赛 而且之前几次排位赛都打得不怎样 但是过程还是有很多没做好的地方一开始A很多人出 我们打了个表 匆匆找到规律后发现是一条2的指数形式的式子 写了一个快速幂就匆匆交了 虽然出的很慢 但还好一次通过,后来我们开始出E 想过很多方案 比如大数的嵌套二分 枚举质因子 或者打表找规律 但最后都没把这题做出来 浪费了将近两个小时 我们无奈之下觉定...
2018-05-10 22:13:30
193
原创 Picking Strings CodeForces - 948E 构造 思维题
题意:根据A->BC B->AC C->AB AAA->EMPTY 的规则问S中的【a,b】是否可以转化为T中的【c,d】其实已经很接近了 已经想到C就是B A可以变成偶数个B B可以在前面加任意数目的A 后来设计了一个错误的分类WA几次就没耐心去看题解 其实接下来只要分分类就行了设S区间中末尾A的数目为n T中为mS中B的数目为p T中为q1.如果n小于m 则一定不可能 ...
2018-04-27 23:27:22
173
原创 Perfect Security CodeForces - 948D 01字典树解决XOR最值问题
题意:给一个整数数组A 和一个整数数组P 求A与P的某个排列的异或的最小字典序数列转化一下 其实就是从A1开始 每个数在P中求一个对应的异或的最小值 那就可以把P插入一棵01字典树中 然后用A去查找那棵树的最小值其实关于XOR的最值问题很多都应该用01字典树去解决 这题是一个模板题#include <cstdio>#include <iostream>#include ...
2018-04-27 17:18:54
197
原创 线段树的单点操作
#include <cstdio>#define lson l , m , rt << 1#define rson m + 1 , r , rt << 1 | 1const int maxn = 55555;int sum[maxn<<2];void PushUP(int rt){ sum[rt] = sum[rt<<...
2018-04-25 16:37:28
133
原创 各种线段树及AC自动机的代码模板
ac自动机:#include <iostream>#include <cstdio>#include <cstring>#include <queue>using namespace std;const int maxn=550000;struct AC_auto{ int chd[maxn][26],v[maxn],f[...
2018-04-25 16:37:10
156
转载 Codeforces 923B Producing Snow 【优先队列】
再一次被智商压制。。。#include <iostream>#include<queue>#include<cstdio>#include<cstring>using namespace std;const int maxn=1e5+5;int v[maxn];long long t[maxn];long long sum[maxn]...
2018-04-25 16:36:47
191
原创 HDU1512
额 并查集 用启发式搜索但是维护里面最大值时是要用优先队列的 一开始傻傻的以为用一个4个位置的数组就够了 觉得第一大的决斗完后后要么第一要么第二 真tm是智障。。。额。。。依稀记得新生赛初赛的时候犯过差不多的智商错误 那时也是应该用优先队列的 象征性贴个代码:#include <cstdio>#include <iostream>#include <cstrin...
2018-04-25 16:36:21
231
转载 Fliptile POJ - 3279
kuangbin专题里面比较骚的一道题目 直接暴力枚举会超时 但是仔细想会发现两个规律 第一 不存在一个位置修改的次数大于1 第二 修改的顺序是无所谓的 那么我们可以一行一行往下操作 假设对于每一行我们都是按照一种绝对正确的方式去绝对翻和不翻的话 那么对于下面的某个坐标(x,y)必有 若(x-1,y)为1则翻 否则一定不翻 因此我们可以枚举第一行的所有操作可能 以下几行的所有坐标按上面的逻辑法则进...
2018-04-25 16:35:42
281
2
原创 scau 18110 线段树的灵活运用
首先对于一个数a【j】,如果他前面某个数对他取模一定是在(0,a【j】-1)之间,那么不难想到如果他前面存在a【i】的话,最大值应该是越靠区间右值越好,那么我们可以这样做:对于每个数a【j】 把可能对他取模的数他分成(0,a【j】-1)(a【j】,2*a【j】-1)。。。若干个区间,然后判断是否有a【i】位于这些区间,如果有的话最大值更新为最靠区间右值的,可以预见如果要实现这些更新和查询操作就应该...
2018-04-25 16:34:41
156
原创 A Bug's Life(并查集)
第一次接触这种分组的并查集,分集团的思想:#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include
2018-04-25 16:34:18
192
原创 A - The Mountain of Gold? UVALive - 6800 北满算法 判负环
#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <bitset&g
2018-04-25 16:33:57
130
原创 组队赛总结(二)
有一些题集合了很多基础算法知识 值得补一下:第二场组队赛H题 CodeChef - CRYPCUR https://vjudge.net/contest/224062#problem/H题意:给若干条有向边 求一条可以经过所有点至少一次的路径的路径中边权的最小值记得在SCAU的校赛做过一道类似的 当时是一个图 里面有很多有等级怪物 当你的等级不小于怪物的等级时你才不会死 问你从起点到终点最少需要多...
2018-04-25 16:31:31
197
原创 三场组队赛总结
省赛前最后的三场组队赛了 形势不妙 感觉一些题是应该要出的:第一场的H题 uvalive-6852 https://vjudge.net/contest/223856#problem/H题意:给n个数从1到n 给一个区间a b 表示数字前a个能覆盖 后b个不能 循环下去 问最后被覆盖了(0,1,2,3)次的数字有多少个 n到1e5 m到1e6 当时a和b都是小于等于16的这道题的关键在于a和b都是...
2018-04-25 00:09:35
117
原创 1376 炮兵阵地 状态压缩dp
经典的状态压缩dpdp【i】【j】【k】=max(dp【i】【j】【k】,dp【i-1】【k】【w】+sum(sta【j】))i表示行j表示当前行的状态k表示当前行的上一行的状态sum函数就是算状态为sta【j】是能放几个炮兵这道题就是poj另外一道状态压缩dp入门题的变形 只不过这里范围大了一格而已...
2018-04-18 23:36:29
171
原创 逆序对问题
先放道题:1144 数星星Description天文学家们喜欢观察星星。它们把每颗星星看成一个点,并把每颗星星左下方(即横坐标和纵坐标都不比它大)的星星颗数作为它的等级值。现给出所有星星(星星个数为N)的坐标,计算并输出指定编号的星星的等级。注意:不存在相同坐标的星星输入格式第一行为N后N行为编号为1到N的星星的坐标(坐标用整数)此后是M后一行是M个星星的编号N<=10000...
2018-04-18 23:27:29
261
原创 poj 3020 二分图路径覆盖问题
题意:一个矩形中,有N个城市’*’,现在这n个城市都要覆盖无线,若放置一个基站,那么它至多可以覆盖相邻的两个城市。问至少放置多少个基站才能使得所有的城市都覆盖无线?有向图的最小路径覆盖=顶点数-最大二分匹配无向图的最小路径覆盖=顶点数-最大二分匹配/2证明见这两篇博客:https://blog.csdn.net/lyy289065406/article/details/6647040https:/...
2018-04-13 23:20:45
124
原创 18114 Ly and PostCards 2016scau校赛题目
需要一点思维转变 就是一个数会被算入期望值必定是当且仅当他或他关联的数字被选入 所以我们对于一个数只需要递归判断他的关联数字有哪些 计为cnt 得到答案就应该是c(n,k)-c(n-cnt,k)#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#...
2018-04-13 18:26:28
225
1
原创 昂贵的聘礼 poj-1062 最短路
没看好题目条件 随便写了个弗洛伊德就交了 实际上两个身份差距大的人是连间接交易都不允许的 所以枚举每个等级区间并对其用dijkstra算法找最小值AC代码:#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cmath&g...
2018-04-13 18:08:12
130
原创 Circle and Marble UVALive - 6803 第一场组队赛
经典的nim博弈问题首先每个节点的权值都要模2 因为如果一个节点权值为偶数的话 那么当先手走这步时 后手跟着走就行了处理完后就把这个大游戏转换为n个小游戏 这个n个小游戏是对于每个节点 把他其中的东西(只会是1或0)转移到叶子节点 那只要递归求解所有小游戏的SG值再全部异或就行了不会nim博弈的参考这篇博客: https://blog.csdn.net/strangedbly/article/de...
2018-04-11 23:23:30
112
原创 Group of Strangers UVALive - 6804 图论 bitset
https://vjudge.net/problem/UVALive-6804水题啊 看都没看就不做对于每个点 排除和他直接相邻的一个点和不和他直接相邻的一个点的和 再排除和他相邻的两个点的和就是答案了学了一些关于bitset的用法#include <cstdio>#include <iostream>#include <cstring>#include ...
2018-04-08 20:27:46
130
原创 华工校赛 K题
链接:https://www.nowcoder.com/acm/contest/94/K来源:牛客网题目描述 小马哥有杯盐水,第杯有单位的盐和单位的水。小马哥很无聊,于是他想知道有多少种这杯盐水的非空子集,倒在一起之后盐和水的比是输入描述:输入第一行包含一个整数,代表数据组数。每组数据第一行包含三个整数表示和的最大公约数。接下来行,第行包含两个整数输出描述:每组数据输出一行,包含一个整数表示非空...
2018-04-08 12:42:27
424
原创 华工校赛 E题
链接:https://www.nowcoder.com/acm/contest/94/E我们给出一个字符串的集合,在这个集合中有个字符串,编号为的字符串的长度为。我们给出个查询,每个查询是一个整数对,表示我们假定号串在左边,号串在右边,我们要查询的是最大的长度使号串的前缀与号串的后缀相等。 如我们有串:"ACGT"、"AACCGGTT"、“AAAA”,则查询(2,3)的结果为0,因为"AAA...
2018-04-07 22:28:12
153
原创 华工校赛 H-对称与反对称
#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <stack>#include <bitset&g
2018-04-07 21:15:54
220
原创 Prime Path POJ - 3126 BFS
很久没更新博客了 随便记录一道水题吧题意略,做法很简单,把他看做在四维空间中求最短路,只不过“行走”的规则是某一象限的值变为任意的值 用个四维数组就行 建议一开始用欧拉筛筛下素数。做的有点久 不小心把isprime数组写成prime ORZAC代码:#include <cstdio>#include <iostream>#include <cstring>...
2018-03-24 23:20:07
130
原创 POJ 2970 The lazy programmer
很水的一道题 本来不值得写总结的 不过WA了很多次 还是记录一下当时犯的错误吧首先讲讲思路:将n个项目排序 排序的规则是d小的优先 如果d相同 则a大的优先 同时设置一个初始值为0的变量time来表示时间的流逝 然后遍历每项目 如果当前的时间比我当前项目的deadline要晚 那么我就要从这个项目以及之前的项目来给钱“挤”时间出来 那么怎么选择从哪些项目来挤时间呢 很简单 选a大的来挤时间 可是遍...
2018-03-16 15:07:35
219
原创 Closest Equals CodeForces - 522D
题意略 (vjudge上有中文体面)一道很标准的离线查询问题 可以直观的想到首先要将n个数中相同且距离最近的两个数作为一条线段剥离出来存到结构体当中 这时常规的做法就是用线段树或者树状数组 但是要注意如果直接对线段进行预处理在在线处理每一个查询的数对是比较麻烦的 就说样例1 1 2 3 2 其中一条线段为【3,5】 如果直接把3到5的值都设为2的话 那么出现了【4,5】这样的查询是就会出错 所以需...
2018-03-14 22:21:26
236
原创 Prefixes and suffixes SGU - 505
题意:给n个字符串 和m个字符串对 问对于每个字符串对 他最多是n里面多少个字符串的前缀和后缀一道比较基础的AC自动机的题目 简单点说就是重新构造字符串和需要匹配的字符串对以样例为例:aaaaa 就改造为aaaaa}aaaaa 中间那个是26个字母之后的一个字符而字符串对于a aa为例就改造为aa}a可以看到假设字符串分别是字符串的前缀和后缀的话那么在两者的“}”两边必然是可以匹配的 那么问题就转...
2018-03-14 16:44:25
408
1
原创 FZU - 1688
没什么好说的 BFS模板题 只不过把传统的二维数组变成四维数组AC代码:#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <queue>#include <sta...
2018-03-13 14:20:52
135
原创 HDU - 5413
题意大致就是给一个有向无环图 问是否存在某两点u,v 使得u,v有直接的通路且u可以通过其他间接路径到达v(就是冗余的路径) 一开始我想着是用BFS做的 但后来发现会TLE就放弃了 在看过某师兄的代码后发现原来可以通过Bitset+DFS解决(非常感谢♪(・ω・)ノ)。简单点说就是用深搜沿着一条路径走到尽头 然后记录他可以到达的节点 更新bitset 回溯时通过bitset中的或运算使他前面的父节...
2018-03-12 23:33:08
161
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人