- 博客(76)
- 收藏
- 关注
转载 提问的智慧
在黑客的世界里,当你拋出一个技术问题时,最终是否能得到有用的回答,往往取决于你所提问和追问的方式。本指南将教你如何正确地提问以获得你满意的答案。现在开源(Open Source)软件已经相当盛行,您通常可以从其他更有经验的用户那里获得与黑客一样好的答案,这是件好事;和黑客相比,用户们往往对那些新手常遇到的问题更宽容一些。尽管如此,以我们在此推荐的方式对待这些有经验的用户通常也是从他们那里获得有用答案的最有效方式。首先你应该明白,黑客们喜爱有挑战性的问题,或者能激发他们思维的好问题。
2023-06-06 16:32:37 172
原创 JAVA打印Hello World的底层实现
在linux中输入tty,就可以看到对应的伪终端设备文件路径。空闲时间翻了下代码,看看它的底层是怎么实现的。下看到提供的write方法实现,通过一堆的宏定义最终是一个系统调用,调用了linux的。就创建好了,在print的时候会调用这个类的方法,最后根据调用栈发现调用了。发现这个方法是native的,也就是说不在JAVA中实现,打开。方法的第一行,打开了一个文件描述符,其中调用了。在不同的平台下,这个方法有不同的实现。是一个宏定义,获取当前正在运行的任务。找到在jdk中的实现,发现调用了。
2023-06-04 22:26:32 1031 1
原创 差分约束例题
poj 3159#include <cstdio>#include <iostream>#include <cstring>#include <algorithm>#include <queue>using namespace std;const int inf=0x3f3f3f3f;const int maxn=300...
2018-09-21 18:06:11 298
原创 zkw线段树两题
普通的线段树也能写,只是练习一下zkw线段树。POJ 3468// POJ 3468#include <cstdio>#include <cstring>using namespace std;typedef long long ll;const int maxn=100000+10;int n,bit,q;ll sum[maxn<<...
2018-09-03 22:35:10 366
原创 HDU 6331 Walking Plan 【矩阵快速幂妙用+分块】
题目链接题意:n个点m条单向边,一个人每天要从s点走到t点,至少经过k条边,问每天走的最短路径。考虑邻接矩阵中,a[i][j]a[i][j]a[i][j]表示的是iii这个点走到jjj这个点的距离。这里我们可以认为是iii这个点恰好经过111条边走到jjj点的最短距离。在做矩阵乘法的时候,用min(a[i][j],a[i][k]+a[k][j])min(a[i][j],a[i][k]+a[...
2018-08-24 16:50:47 287
原创 牛客网多校第九场 H Prefix Sum【分块】
题目链接题意:a[0]a[0]a[0] ~ a[k]a[k]a[k],一开始a[0]a[0]a[0]全为000,且无论何时a[i][1]=a[i−1][1](i>=1)a[i][1]=a[i−1][1](i>=1)a[i][1]=a[i-1][1](i>=1),a[i][j]=a[i][j−1]+a[i−1][j](j>=2)a[i][j]=a[i][j−1]+a[i−1][...
2018-08-24 14:59:08 263
原创 HDU 6325 Interstellar Travel 【凸包+单调栈】
题目链接题意:平面上有n个点,每个点只能往它右边的点走,并且从一个点到另一个点的费用是这两个点坐标的叉积。现在要从1走到n,求花费的最小值。众所周知,叉积等于平行四边形的面积…… 可以先在平面上画一个点,然后再它右边画若干个点,把平行四边形画出来,发现越往上面积越小…… 因此一定是沿着上凸包走的。用单调栈求上凸包就行啦,大致思路跟Graham求凸包差不太多。由于题中要求输出字典序最...
2018-08-23 15:22:41 328
原创 Stirling数
第一类Stirling数:stir(n,k)stir(n,k)stir(n,k)表示nnn个元素安排成kkk个轮换的方式数。 注意这里是kkk个轮换,而不是kkk个子集。轮换可以理解为循环排列,即认为[A,B,C,D]=[B,C,D,A]=[C,D,A,B]=[D,A,B,C][A,B,C,D]=[B,C,D,A]=[C,D,A,B]=[D,A,B,C][A,B,C,D]=[B,C,D,A]...
2018-08-19 10:28:44 1019
原创 HDU 6357 Hills And Valleys 【LCS+思维】
题目链接题意:给一串数(长度&amp;lt;=1e5),翻转其中的一段区间,使得翻转后这串数的最长不下降子序列的长度最大。求最大的长度以及翻转的区间的左右端点。明显不可能遍历所有的子区间……但是里面的每个数都只有0到9,因此可以枚举翻转的区间的左右端点的值。例如左端点的值是L,右端点的值是R,那么求出原串和0,1,2,…,L,(R,R-1,..,L),R,R+1,…,9这个模式串的LCS。维护最大...
2018-08-14 18:15:55 284
原创 HDU 6390 GuGuFishtion 【gcd+欧拉函数+mobius函数】
题目链接题意:已知Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b)Gu(a,b)=ϕ(ab)ϕ(a)ϕ(b)G_u(a,b)=\frac{\phi(ab)}{\phi(a)\phi(b)} 求(∑a=1m∑b=1nGu(a,b))(modp)(∑a=1m∑b=1nGu(a,b))(modp)(\sum_{a=1}^{m}\sum_{b=1}^{n}G_u(a,b))\pmod p先推公式……必...
2018-08-14 13:36:17 225
原创 HDU 5726 GCD 【st表+二分+gcd+离线】
题目链接题意:给n个数和q次查询,每次查询输入[l,r][l,r][l, r],输出在序列中有多少个子区间的gcd值与查询的这个区间相同。大致可以将题目的主要矛盾分为2点: 1. 快速的查询区间gcd值 2. 由于不能遍历所有子区间,如何尽可能的减少遍历的子区间解决方法:1.因为只需要查询,可以简单的用st表实现。for (int j = 1; j <= 20; j+...
2018-08-10 20:09:55 254
原创 HDU 6356 Glad You Came 【st表】
题目链接题意:n个数,通过一个算法和生成器X,Y,Z生成m组更新。每次将[l,r][l,r][l, r]中小于v的数更新为v。 求m次更新后(1∗a[1])⊕(2∗a[2])⊕...⊕(n∗a[n])(1∗a[1])⊕(2∗a[2])⊕...⊕(n∗a[n])(1*a[1])\oplus(2*a[2])\oplus ... \oplus(n*a[n])的值。其中⊕⊕\oplus为异或。题...
2018-08-10 19:58:25 189
原创 牛客网多校第七场 E Counting 4-Cliques 【构造】
题目链接题意:输入k(<=1e6),构造一个图使得图中大小为4的团恰好有k个。首先考虑构造完全图,那么t个点的完全图一共能有C(t, 4)个大小为4的团。但是在C(t, 4)和C(t+1, 4)之间会有空缺,因此在完全图外放若干个点,每个点与这个完全图中的若干个点连边,最后会形成类似于C(t, 4)+C(x1, 3)+C(x2, 3)+…这样的式子,并且要能补满中间的空隙。打表发...
2018-08-09 20:49:44 391
原创 HDU 6363 bookshelf 【容斥+gcd+欧拉降幂】
题目链接题意: 由于有n=x1+x2+..+xk(xi>=0)n=x1+x2+..+xk(xi>=0)n=x_1+x_2+..+x_k(x_i>=0),假设xi=g∗tixi=g∗tix_i=g*t_i,那么t1+...tk=n/gt1+...tk=n/gt_1+...t_k=n/g 所以系数一共有C(n/g+k−1,k−1)C(n/g+k−1,k−1)C(n/g+k-...
2018-08-08 22:41:04 204
原创 HDU 6370 Werewolf 【推理+基环树】
题目链接题意:有n个人玩游戏,每个人会说另一个人是狼人或者村民,已知狼人可能说谎话,村民一定说真话,问最终有几个人一定是狼人,几个人一定是村民。 参照题解。村民边反向建边,狼人边正向建边。枚举所有的狼人边,如果这条狼人边的起点和终点同属于一个连通块则标记终点所在子树都是狼人。用并查集维护连通块。#include <iostream>#include <cs...
2018-08-08 22:21:28 236
原创 HDU 4879 ZCC loves march 【map+set+并查集】
题目链接题意:在矩阵中有n个点,现有两种操作。Q x表示把x这个点所在行以及所在列的所有点都并到这个点上,并输出所有点移动距离的平方和。另外就是把某个点向某个方向移动若干位。用两个map<ll,set<ll>>map<ll,set<ll>>map 分别存每行中点的集合和每列中点的集合,再用并查集的根节点存每个点所在的集合。#inclu...
2018-07-05 20:59:17 173
原创 HDU 5738 Eureka 【共线点集】
题目链接题意:给出n个点,每个集合中至少存在两个点,且他们都共线,问一共有多少个这样的集合。对于在同一个位置上的k个点,在这个位置上能产生的集合数为2k−k−12k−k−12^k-k-1对于其他的点,遍历每个点,再遍历其他点,计算出斜率。对于每个相同的斜率,是在这个点位置上至少取一个点,再在其他点上至少取一个点。设这个点上有p个点,其他共有q个点对应于这个点能产生这个斜率,则此时ans...
2018-07-04 20:47:24 243
原创 HDU 5556 Land of Farms 【最大独立点集】
题目链接题意:N*M的图中有一些旧农场,现在要建立一些新的农场,如果新的农场覆盖了某一个旧的农场中的一个点,它就必须覆盖整个这个旧农场。现在要建立尽可能多的新农场,使得每个新农场之间都不相邻,求最多能建立多少个新农场。很容易想到最大独立点集这东西,把每个旧农场看成一个点,不是农场的点看成一个点,在相邻的之间建边,求最大独立点集即可。最大独立点集=补图的最大独立团,因此求出补图的最大独立...
2018-07-03 16:53:22 312
原创 快速傅里叶变换(FFT)的推导过程(DIT)
FFT是一种快速计算DFT的算法。按时间抽选的基-2FFT推导过程如下:首先给出DFT的计算公式:X(k)=DFT[x(n)]=∑n=0N−1x(n)WnkNX(k)=DFT[x(n)]=∑n=0N−1x(n)WNnkX(k)=DFT[x(n)]=\sum^{N-1}_{n=0}x(n)W^{nk}_{N}其中WN=e−j2πNWN=e−j2πNW_{N}=e^{-j\frac{2\p...
2018-06-24 17:45:33 14709 4
原创 Mac下使用PyInstaller打包PyQt5
1. Mac下使用PyInstaller打包PyQt5文件pyinstaller --windowed --onefile --clean --noconfirm demo.pypyinstaller --clean --noconfirm --windowed --onefile demo.spec这样打包后的应用程序在/dist/****.app目录下 或者:pyins...
2018-04-03 23:35:05 9456 6
原创 ZOJ 3981 Balloon Robot 【离线处理】
题目链接题意:有n支队伍,一张桌子有m个座位顺时针编号1~m。p个预言。预言a队伍在b时刻ac一道题目。机器人每个时刻都顺时针走一步,有需要气球的就发。每支队伍,ac后多少时刻没收到气球就有多少不开心的值,问机器人起始位置在哪里可以使得总的不高兴值最小。输出最小的不高兴值。假设机器人在第11个位置,那么位置pospos的队伍在tt时刻过题要等待的时间为(pos−1−t(pos-1-t % m+m)m
2017-11-01 23:33:28 268
原创 CF round#439 div.2 C The Intriguing Obsession【DP】
题目链接题意:有三种颜色的点,两点之间建无向边的长度为1,要求同色之间若能到达,他们之间最短距离的长度至少为3,求有几种建边方式。首先容易得到同色之间若能到达,一定是经过了另外两种颜色的点,才能保证长度至少为3。换句话说,若红色的两个点都连到了黄色的同一个点上,就不符合要求。所以,红色的每个点最多和黄色的一个点相连,黄色同理。最后答案就是三个颜色两两之间可连的边数相乘。令dp[i][j]dp[i][
2017-10-09 13:11:46 237
原创 HDU 3223 Decrypt Messages 【N次剩余+模拟】
题目链接题意:xqmodp=ax^q mod p = a,已知p,q,ap,q,a,求从2000.01.01 00:00:00过了xx秒后是几年几月几日几时几分几秒。要列出所有的可能情况。如果年份模10等于5或8,则这一年的最后一天会多一秒。(+1s)求N次剩余,然后模拟出时间…… 不知道为什么,T到死…… 调了调又换了个板子才过……辣鸡模板……毁我青春……#include <iostream>#
2017-09-30 17:08:08 339
原创 HDU 6198 number number number【找规律+矩阵快速幂】
题目链接题意:从含0的斐波那契数列中可重复的任取K个数,求这K个数的和无法形成的最小整数。写了几个之后大胆的猜测ii的答案是F[2∗(i+1)+1]−1F[2*(i+1)+1]-1… 于是矩阵快速幂……#include <bits/stdc++.h>using namespace std;typedef long long ll;const ll mod=998244353;struct Mat
2017-09-10 21:54:17 389
原创 HDU 6205 card card card【最长连续子串+尺取法】
题目链接题意:n堆牌,每堆牌有个penalty value,刚开始可以把第一堆牌移到最后面,这个操作可以进行任意多次。然后从第一堆牌开始,每次加上这堆牌的数目减去这堆牌的penalty value,如果这个值小于0则取走到现在为止的所有牌,游戏结束。求刚开始时移第一堆的这个操作进行几次的时候可以拿走的牌最多。其实就是一个变形版的最长连续子串,保证子串中每个前缀和都大于等于0,如果有一个小于0,这串就
2017-09-10 21:45:45 241
原创 POJ 2187 Beauty Contest【平面最远点对+旋转卡壳】
题目链接题意:求平面最远点对距离的平方。可以用旋转卡(qia)壳(qiao)来求最远点对,旋转卡壳的介绍点这里。里面这个动图还挺有趣的……#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <string>#include <cmath>#include <vector>#
2017-09-08 10:23:48 263
原创 POJ 3449 Geometric Shapes【计算几何+判线段相交】
题目链接题意:有一堆多边形,问每个多边形和哪些其他多边形相交。讲道理是个水题……就是输入输出麻烦了点,中间判下线段相交就行。线段相交的模板:// 判断一个数是否为0bool zero(double x){ if (fabs(x)<eps) return true; else return false;}// 求矢量p0->p1, p0->p2的叉积double xm
2017-09-04 14:29:58 241
原创 OpenCV之5种滤波方法
5种滤波方法分别为:3种线性滤波:方框滤波、均值滤波、高斯滤波2种非线性滤波:中值滤波、双边滤波简单来说,方框滤波就是邻域内取个平均值,均值滤波就是方框滤波再归一化一下,高斯滤波就是用正态分布去和图像做卷积。中值滤波是用像素点邻域灰度值的中值来代替这个像素点的灰度值,而双边滤波像素点的灰度值是邻域像素值的加权组合,是一个基于空间分布的高斯滤波函数,可以很好的保留边缘附近的像素值。从书上抄的代码:#i
2017-09-01 21:23:34 1405
原创 OpenCV之卷积得到二阶导数
设图像中每个像素点的值为f(x)f(x)f(x),对其做泰勒展开。f(x+h)=f(x)+hf′(x)+12h2f″(x)+13!h3f‴(x)+O(h4)f(x+h)=f(x)+hf′(x)+12h2f″(x)+13!h3f‴(x)+O(h4)f(x+h)=f(x)+hf^{'}(x)+\frac{1}{2}h^{2}f^{''}(x)+\frac{1}{3!}h^{3}f^{'''}(...
2017-09-01 16:54:17 2269 1
原创 OpenCV之鼠标响应事件
#include <opencv2/opencv.hpp>#include <opencv2/opencv_modules.hpp>#include <opencv2/highgui/highgui.hpp>#include <cstdio>using namespace cv;Mat org,dst,img,tmp;void on_mouse(int event,int x,int y,i
2017-09-01 10:45:32 454
原创 OpenCV之Canny算子边缘检测
#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/opencv.hpp>using namespace cv;int CurrentValue = 0;int main(int argc,char ** argv){ Mat srcImage; srcI
2017-09-01 08:37:02 305
原创 HDU 6180 Schedule【优先队列+模拟】
题目链接题意:有一些任务,要用一些机器去做这些任务,给出每个任务的开始时间和结束时间。一台机器最多只能同时做一个任务,并且机器关掉不能再开,求在使用最少机器的情况下,最少的机器个数和最短的运行时间。拿两个优先队列模拟…贪心的找现在空着的机器中做完上个任务最晚的那个,这样才能让机器等的时间最少。代码里有详细解释。#include <bits/stdc++.h>using namespace std;
2017-08-25 14:35:18 259
原创 HDU 6172 Array Challenge【推公式/猜+矩阵快速幂】
题目链接题意:给一堆公式,求⌊a[n]‾‾‾‾√⌋\lfloor\sqrt{a[n]}\rfloor的值。官方题解的公式推的实在是没什么道理,但是这个xjb乱猜我真的是一口老血喷出来。。。令f(n)=⌊a[n]‾‾‾‾√⌋f(n)=\lfloor\sqrt{a[n]}\rfloor,则f(n)=4f(n−1)+17f(n−2)−12f(n−3)f(n)=4f(n-1)+17f(n-2)-12f(n-
2017-08-24 22:09:24 592
原创 HDU 6178 Monkeys【DFS+输入输出外挂】
题目链接题意:给一棵树,有N个节点,树上有K个猴子,每个节点最多有一个猴子,从树上的边中去掉一些边,留下尽可能少的边使得每个猴子都至少和一个其他猴子相连,求最少留的边数。DFS,类似于一个简单的树形DP,从叶子节点往根节点找,如果没有相连的就相连,如果有就继续向上找。这样搜完以后得到的结果是最多有几对猴子可以两两相连。然后判断如果能两两相连的猴子数比总的猴子少,那么剩下的只能和那些两两相连的连。如果
2017-08-24 21:06:48 447
原创 HDU 6158 The Designer【计算几何+笛卡尔定理+韦达定理】
题目链接题意:照着图一个个的摆n个小圆,求小圆的总面积。首先很容易得到第一个圆的半径,然后用笛卡尔定理导出4个圆半径的关系。 笛卡尔定理: 若平面上四个半径为r1r_1、r2r_2、r3r_3、r4r_4的圆两两相切于不同点,则其半径满足以下结论: (1)若四圆两两外切,则∑4i=11ri=2∑4i=11r2i\sum_{i=1}^{4}\frac{1}{r_i}=2\sum_{i=
2017-08-23 21:53:59 455
原创 POJ 1039 Pipe【计算几何+直线相交】
题目链接题意:有一根管子,从管口射进去一根光线,问最远能到的点的横坐标。枚举上下两个端点。先判断经过这两个端点的光线是否能和管口相交,再计算这根光线所能达到的最远的点。要注意的地方: 1. 求的是横坐标,不是距离 2. 坐标可能会有负,ans初始化为-INF 3. 注意精度问题卡精度WA了好久,好气啊……#include <iostream>#include <cstdio>#includ
2017-08-23 18:47:03 257
原创 HDU 6097 Mindis【计算几何+反演点】
题目链接题意:有一个圆心在原点,半径为rr的圆,圆内有两点PP,QQ到圆心的距离相同,在圆上找一点DD,使|DP|+|DQ||DP|+|DQ|最小。求这个最小值。当然不是直接取中垂线这么简单啊…… 反演点: 已知圆OO的半径为RR,从圆心OO出发任作一射线,在射线上任取两点M,NM,N。若|OM|=m|OM|=m,|ON|=n|ON|=n,且m∗n=R2m*n=R^2,则称点M,NM,N是
2017-08-22 21:32:35 423
原创 HDU 6150 Vertex Cover【构造】
题目链接题意:求最小点覆盖,给你一个错误的算法,输出一个反例使得正确答案比它小三倍以上。这个构造太吊了啊 构造一个二分图,设左边有nn个点,标号是11到nn。对于每个 i∈[1,n]i\in[1, n],都在右边新建 ⌊ni⌋\lfloor \frac{n}{i} \rfloor个点,每个点都选择左边的ii个点连1条边,使得左边每个点最多只被多加了一条边。这样构造完成后可以发现贪心的做法会把右边
2017-08-20 16:04:43 411
原创 HDU 6153 A Secret【扩展KMP】
题目链接题意:给两个字符串s和t,求t的每个后缀的长度乘以它在s中出现的次数之和。用了扩展KMP的板子,因为扩展KMP求出的extend[i]extend[i]表示的是ss的ii到strlen(s)−1strlen(s)-1字符和tt的最长公共前缀。题目中要求后缀,就将两个字符串reverse一下。这样的话,extend[i]extend[i]就变成了ss的前strlen(s)−istrlen(s)
2017-08-20 15:16:34 307
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人