自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一个AFO的蒟蒻

人生,一半是现实,一半是梦想。一念花开,一念花落。

  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 [Noi1999]钉子和小球

Description Input 第1行为整数n(2<=n<=50)和m(0<=m<=n)。以下n行依次为木板上从上至下n行钉子的信息,每行中‘*’表示钉子还在,‘.’表示钉子被拔去,注意在这n行中空格符可能出现在任何位置。 Output 仅一行,是一个既约分数(0写成0/1),为小球落在编号为m的格子中的概pm。既约分数的定义:A/B是既约分数,当且仅当A、...

2018-07-24 21:13:16 344

原创 [Ahoi2009]Seq 维护序列seq

Description老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成。 有长为N的数列,不妨设为a1,a2,…,aN 。有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2)把数列中的一段数全部加一个值; (3)询问数列中的一段数的和,由于答案可能很大,你只需输出这个数模P的值。 Input 第一行两个整数N和P(1≤P≤1000000000)。第二行含有N个非负...

2018-07-24 21:04:07 132

原创 UVA11728 Alternate Task 题解

题目大意给定n,求因子合为n的最大整数。(n≤1000),若没有输出-1.分析一道简单题,,通过题可知此数≤1000,可预处理,1000以内的数据,在询问时O(n)查询即可。 时间:0ms。 上代码#include<bits/stdc++.h>using namespace std;int al[1010],n,tot=0;void PRE(){ ...

2018-07-22 09:12:34 136

原创 c++中的取整函数

对含有小数点的数进行四舍五入是比较普遍的一种需求。在C++中也有类似的取整函数。在C++的头文件中有floor()和ceil()函数。在STL中还有round()函数。这三个函数的作用如下: 在运算时我们经常碰到取整问题,下面来说一下c++中的用的比较多三个取整函数。 函数 用途 1.1 1.9 -1.1 -1.9 floor() 向下取整(及最大...

2018-07-19 15:52:32 6311

原创 luogu1287 盒子与球

题目描述现有r个互不相同的盒子和n个互不相同的球,要将这n个球放入r个盒子中,且不允许有空盒子。问有多少种方法?分析这是一道第二类string数的题,可套用公式直接解出答案,下面来说一下公式是什么。 设f[i,j]表示第i个球已放入j个盒子的方案数。对于第i+1个球,我们有两种方法,第一种是新开一个盒子,方案数为f[i,j-1],第二种是放入里面已经有球的盒子,方案数为j*f[i...

2018-07-18 15:05:01 672

原创 二进制与bitset

一.基础位运算(以代码中的符号为准)运算符与(&)(and):1&1=1 0&1=0 1&0=0 0&0=0 或(|)(or):1|1=1 0|1=1 1|0=1 0|0=0 异或(^)(xor):1^1=0 0^1=1 1^0=1 0^0=0 非(!)(not): !1=0 !0=1逻辑移位...

2018-07-17 22:41:11 193

原创 CF549G Happy Line题解

题目大意给定一个长为 n 的序列 ai,你可以执行任意次操作,每次操作可以交换 两个相邻位置 (i, i + 1) 上的数,且交换后位置上的数变为 (ai+1 + 1, ai − 1),问是否能通过任意次操作使得 ai 不降,若有解则给出 最终的 ai分析这道题用数学公式来证明贪心,设原位置(x,y)现在位置为(u,v)且u#include<bits/stdc++.h>...

2018-07-17 11:15:02 278

原创 CF605A Sorting Railway Cars

题目大意给出一个 1 到 n 的排列,每次操作可以将某个位置的数字移动到最前面或最后面,求将排列从小到大排序的最小操作次数分析题目要求求出升序排列,且可以块与块之间装换,所以可以用最长上升子序列来解,因为n比较大,所以要用O(nlogn)的最长上升子序列,求完长度后用n减去即可。 时间:1180ms。#include<bits/stdc++.h>long lon...

2018-07-17 09:33:28 146 3

原创 【模板】最小生成树

题目链接 最小生成树一般是利用贪心的克鲁斯卡尔算法Prim不会写,克鲁斯卡尔是一个离线算法,首先将边读入,按边值排序,再从小往大加边,若两个端点在一起了,则不加,否则加,直至加了n-1条边,若不行,则无最小生成树。 时间:500ms。#include<iostream>#include<cstdio&a

2018-07-17 08:29:53 197

原创 luogu2820 局域网题解

题目大意某个局域网内有n(n<=100)台计算机,由于搭建局域网时工作人员的疏忽,现在局域网内的连接形成了回路,我们知道如果局域网形成回路那么数据将不停的在回路内传输,造成网络卡的现象。因为连接计算机的网线本身不同,所以有一些连线不是很畅通,我们用f(i,j)表示i,j之间连接的畅通程度,f(i,j)值越小表示i,j之间连接越通畅,f(i,j)为0表示i,j之间无网线连接。 输入输出格...

2018-07-16 21:35:56 296

原创 UVA1395 Slim Span题解

题目大意有多组数据,给一个图,求最大边减最小边最小的生成树分析由题知n≤100,所以m小于5000,可枚举最小的边,向上建立生成树若无生成树则跳过,否则计算出最大边减最小边的值,与答案取min即可,时间:20ms。 上代码#include<bits/stdc++.h>using namespace std;int n,m,f[120],ans;struct ...

2018-07-16 21:32:08 163

原创 CF578B "Or" Game题解

题目大意现在有n个数 a1,a2,a3,…,an 。你最多可以进行k次操作,每次操作你可以将其中一个数乘以 x。找出使得 a1∣a2∣…∣a最大的方法,”|“代表位或。 1<=n<=200000 , 1<=k<=10 , 2<=x<=8分析这道题显然要用位运算,观察x,发现当乘一个x时,至少要左移一位,根据贪心思想,我们考虑要将k次操作用在一个数...

2018-07-16 15:19:37 199

原创 [HNOI2010]弹飞绵羊

题目描述某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,Lostmo...

2018-07-15 16:51:35 138

原创 硬核优化

%:pragma GCC optimize(3)%:pragma GCC optimize("Ofast")%:pragma GCC optimize("inline")%:pragma GCC optimize("-fgcse")%:pragma GCC optimize("-fgcse-lm")%:pragma GCC optimize(&qu

2018-07-15 15:45:22 2662

原创 中国剩余定理

什么是中国剩余定理中国剩余定理是中国古代求解一次同余式组的方法。是数论中一个重要定理。又称孙子定理。一元线性同余方程组问题最早可见于中国南北朝时期(公元5世纪)的数学著作《孙子算经》卷下第二十六题,叫做“物不知数”问题,原文如下: 有物不知其数,三三数之剩二,五五数之剩三,七七数之剩二。问物几何?即,一个整数除以三余二,除以五余三,除以七余二,求这个整数。《孙子算经》中首次提到了同余方程组问...

2018-07-11 22:37:07 685

原创 乘法逆元总结

部分内容参考李煜东《算法竞赛进阶指南》。定义:若已知a,b,若a*c%b=1,则称c是a关于b的逆元。应用范围:有理数取余,中国剩余定理,解同余方程等。求法:1.硬算 通过枚举来寻找逆元神一般的做法,一般没什么人用。 具体代码int py(int a,int b){ int c=1; while(1){ if(...

2018-07-11 21:41:43 193

原创 数格子题解

题目描述你有多少种方法用2x1的多米诺骨牌填满4xN的矩形。 答案会很大,所以你只需输出答案模M的值。 输入输出格式 输入格式: 读入包括多组测试数据,以两个0结尾。 每组数据包含两个整数,N,M。 输出格式: 每行输出答案模M的值 输入输出样例 输入样例#1: 1 10000 3 10000 5 10000 0 0 输出样例#1: 1 11 95分析...

2018-07-10 16:26:42 478

原创 小 a 的强迫症题解

题目描述小a是一名强迫症患者,现在他要给一群带颜色的珠子排成一列,现在有N种颜色,其中第i种颜色的柱子有num(i)个。要求排列中第i种颜色珠子的最后一个珠子,一定要排在第i+1种颜色的最后一个珠子之前。问有多少种排列珠子的方案。 输入输出格式 输入格式: 第一行一个整数N,表示珠子颜色数量 第二行N个整数,分别表示每种珠子的颜色数量 输出格式: 排列方案数,对998244353取余...

2018-07-10 16:19:47 434

原创 luogu2807三角形计数

题目描述把大三角形的每条边n等分,将对应的等分点连接起来(连接线分别平行于三条边),这样一共会有多少三角形呢?编程来解决这个问题。 输入输出格式 输入格式: 第一行为整数t(≤100),表示测试数据组数;接下来t行,每行一个正整数n(≤500)。 输出格式: 对于每个n,输出一个正整数,表示三角形个数。 输入输出样例 输入样例#1: 3 1 2 3 输出样例#1: 1...

2018-07-09 22:55:40 1241

原创 [AHOI2001]质数和分解

题目描述任何大于 1 的自然数 n 都可以写成若干个大于等于 2 且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式。例如,9 的质数和表达式就有四种本质不同的形式: 9 = 2 + 5 + 2 = 2 + 3 + 2 + 2 = 3 + 3 + 3 = 2 + 7 这里所谓两个本质相同的表达式是指可以通过交换其中一个表达式中参加和运算...

2018-07-09 21:44:22 735

原创 STL之vector

vector可理解为一个长度可变的数组,当其内存接近于满时,便会申请内存,当其删减内容时,则会释放内存,vector的内存是动态的。vector支持随机访问,可像数组一样进行访问,但一般只在末尾进行插入。 vector的声明#include<vector> 头文件vector<int> a 长度变化的int数组vector<int> ...

2018-07-09 21:01:30 139

原创 【模板】缩点

题目链接 对于这道题,可将其分为tarjan和记忆化搜索,tarjan负责缩点,记搜负责求最大值。 对于缩点(实际上感觉是搜索),其实是求有向图的强连通分量对此有一个结论:在x回溯前,若low[x]=dfn[x],则从x到栈顶的所有节点构成强连通分量,对于缩完点后的点值,用缩点前的点值相加即可 对于求最大值,实际上就是一个简单记搜,不再说了 时间:60ms。#include<...

2018-07-09 11:26:08 1123

原创 高精(加减乘除)

高精,实际上使用数组模拟我们小学时列竖式的过程,所以当不会写时用python,列竖式的来想怎么解决。 高精加#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ int a2[...

2018-07-09 11:09:14 354

原创 【模板】线性筛素数

题目 线性筛,即在O(n)的时间里处理出素数及合数的最小质因子,对空间有一定要求,大约可处理1~6e6的素数,对于更大的素数,我们有Pollard’s Rho算法进行处理,下面来说一下线性筛的过程。 prime:记录素数 v:记录最小质因子 首先,从2开始筛,当遇见一个数时,若其v值为0,则此数是素数放进prime数组中,v值为其本身,后对质因子大于这个数且模这个数为零的数进行修改;当v值...

2018-07-09 10:09:18 148

原创 【模板】割点(割顶)

题目链接 用tarjan的裸题,对于一个点,设其子节点中一个节点y,当且仅当dfn[x]≤low[y]时为割点,特别的,对于根节点,要有两个y满足要求。 时间:100ms。#include<bits/stdc++.h>using namespace std;int ans=0,cut[1000010],hed[1000010],nxt[2000010],ver[1000...

2018-07-09 09:42:32 144

原创 【模板】st表

题目 ST表经典题——静态区间最大值 方法是设f[i,j]表示从i开始2^j个数中的最大值,在读入数据后可先处理出来,方便以后O(1)查询,转移方程f[j][i]=max(f[j][i-1],f[j+(1<<(i-1))][i-1]); 时间:1200ms。#include<bits/stdc++.h>using namespace std;int f[1...

2018-07-08 17:08:25 926 1

原创 【模板】树链剖分

题目 时间:1200ms。#include<bits/stdc++.h>using namespace std;long long n,m,p,r,ver[200001],nxt[200001],hed[100001],tot=0,al[200001],f[100001],d[100001],rk[200001],id[200001],size[100001],top[1...

2018-07-08 16:49:32 127

原创 离散化的实现

离散化,顾名思义,就是将比较大的数离散成比较小的数,若一共有1e4的数字,大小在0~1e9,这时你可将其离散化,在离散的过程中注意有相同的数字,这时它们的大小应该是一样的,否则会GG,在离散过程中,可先将其排序,运用lower_bound寻找第一个大于等于它的数即可int al[10010], bl[10010],n;scanf("%d",&n);for(int i=1; i&...

2018-07-08 11:05:39 339

原创 【模板】并查集

题目链接 时间:850ms。#include<bits/stdc++.h>using namespace std;int a,b,c,i,n,m;int f[10010];int find(int a){ if(f[a]==a) return a; return f[a]=find(f[a]);}int main(){ sc...

2018-07-08 09:03:55 130

原创 【模板】负环

模板链接 时间:4148ms。#include<bits/stdc++.h>using namespace std;int T,ver[60001],nxt[6001],hed[6001],tot,bian[6001],dian[2001],bj[2001],jl[2001],n,m;void add(int x,int y,int z){ ver[++tot]=y...

2018-07-08 09:00:10 235

原创 LCA的几种常见求法

LCA算是OI中比较有用的算法了,下面来介绍LCA的三种大众求法。暴力寻找法这种是将一个点到根节点上所有的点都标记上,然后,有另一个点想根节点找,第一个有标记的便是LCA。这种的时间复杂度为O(n^2),算是比较慢的了。 上代码#include<bits/stdc++.h>using namespace std;int n,m,s,ver[1000001],hed...

2018-07-06 23:23:34 1928

原创 luogu 3403跳楼机

题目描述Srwudi的家是一幢h层的摩天大楼。由于前来学习的蒟蒻越来越多,srwudi改造了一个跳楼机,使得访客可以更方便的上楼。经过改造,srwudi的跳楼机可以采用以下四种方式移动: 向上移动x层; 向上移动y层; 向上移动z层; 回到第一层。 一个月黑风高的大中午,DJL来到了srwudi的家,现在他在srwudi家的第一层,碰巧跳楼机也在第一层...

2018-07-06 22:15:54 325

原创 Pollard’s Rho算法

对于质因数分解,我们一般有试除法,欧拉筛等,但对于大于1e13的数来说,内存显然是不够的,所以这就让人很是苦恼,还好,有一个随机算法:Pollard’s Rho算法 解释:,要分解n,对于两个整数x,y来说,是n约数的几率很小,但是他们的差是n约数的几率还是有的,并且x,y还是一直在变得,所以只要计算的多了,有很大几率得到n的约数,对于x,y,一般令x1=y1,然后xn=(x(n-1)+c)%m...

2018-07-04 11:49:02 1558 1

原创 [JSOI2008]完美的对称

题目描述在峰会期间,必须使用许多保镖保卫参加会议的各国代表。代表们除了由他自己的随身保镖保护外,组委会还指派了一些其他的特工和阻击手保护他们。为了使他们的工作卓有成效,使被保卫的人的安全尽可能得到保障,保镖被分配到被保护人的各个方向。保镖的最佳站立位置应该是这样的:被保护人应站在所有保镖的对称中心。但是,只要被保护人一移动,保镖就很难根据要人的新位置调整位置。大多数的特工都很难对此作出实时调整...

2018-07-03 22:56:13 250

原创 时间管理题解

题目大意你有n个工作,同一时刻只能做一个任务,其中每个工作有其所需时间及完成的截止时间,问要完成所有工作,最迟要从什么时候开始。你最早可以从时间0开始工作。 输入格式 第一行一个整数n,表示任务数量,接下来M行,每行两个整数,Ti,Si,分别表示该任务的持续时间和截止时间。 输出格式 输出一个整数,表示最晚的开始时间,如果不能完成,输出-1. 样例输入 4 3 5 10 13 ...

2018-07-03 14:40:55 485

原创 [NOI2009]变换序列

题目大意分析一道二分图匹配的题,通过纸上化简,可得一个点i只会与(i+k)%n和(i-k+n)%n这两个点连边,然后对其进行匈牙利,因为顾及到最后要求,所以从后往前匹配,若匹配失败直接输出“No answer”,在匹配过程中要维护两个数组,一个是用来判断是否可以喊一个点进行匹配,另一个则是维护答案,若匹配成功,返回true,否则false,同时在遍历所连得边时,要先遍历较小的一个,这样有利...

2018-07-02 16:33:58 202

原创 [JSOI2009]游戏

题目描述小AA和小YY得到了《喜羊羊和灰太狼》的电影票,都很想去观看,但是电影票只有一张,于是他们用智力游戏决定胜负,赢得游戏的人可以获得电影票。在N*M的迷宫中有一个棋子,小AA首先任意选择棋子放置的位置。然后,小YY和小AA轮流将棋子移动到相邻的格子里。游戏的规则规定,在一次游戏中,同一个格子不能进入两次,且不能将棋子移动到某些格子中去。当玩家无法继续移动棋子时,游戏结束,最后一个移动棋子...

2018-07-02 14:52:15 349

原创 [NOI2002]荒岛野人

题目描述克里特岛以野人群居而著称。岛上有排列成环行的M个山洞。这些山洞顺时针编号为1,2,…,M。岛上住着N个野人,一开始依次住在山洞C1,C2,…,CN中,以后每年,第i个野人会沿顺时针向前走Pi个洞住下来。每个野人i有一个寿命值Li,即生存的年数。下面四幅图描述了一个有6个山洞,住有三个野人的岛上前四年的情况。三个野人初始的洞穴编号依次为1,2,3;每年要走过的洞穴数依次为3,7,2;寿命...

2018-07-02 11:32:10 357

原创 [SDOI2008]烧水问题

题目描述把总质量为1kg的水分装在n个杯子里,每杯水的质量均为(1/n)kg,初始温度均为0℃。现需要把每一杯水都烧开。我们可以对任意一杯水进行加热。把一杯水的温度升高t℃所需的能量为(4200*t/n)J,其中,“J”是能量单位“焦耳”。如果一旦某杯水的温度达到100℃,那么这杯水的温度就不能再继续升高,此时我们认为这杯水已经被烧开。显然地,如果直接把水一杯一杯地烧开,所需的总能量为(420...

2018-07-02 09:38:27 134

原创 luogu P2613有理数取余

题目描述给出一个有理数 c=a/b,求 c mod19260817的值。 输入输出格式 输入格式: 一共两行。 第一行,一个整数 a 。 第二行,一个整数 b 。 输出格式: 一个整数,代表求余后的结果。如果无解,输出Angry! 输入输出样例 输入样例#1: 233 666 输出样例#1: 18595654 说明 对于所有数据, 0≤a,b≤10e10001...

2018-07-02 09:06:32 336

《算法导论》中文第三版

算法导论 第三版 中文版 清晰 PDF,全书共8部分35章节,内容涵盖基础知识、排序和顺序统计量、数据结构、高级设计和分析技术、高级数据结构、图算法、算法问题选编、以及数学基础知识。非常实用的参考书和工程实践手册。此外,其他资源也已经上传,全部免费,欢迎大家下载! 第3版的主要变化 1、新增了van Emde Boas树和多线程算法,并且将矩阵基础移至附录。 2、修订了递归式(现在称为“分治策略”)那一章的内容,更广泛地覆盖分治法。 3、移除两章很少讲授的内容:二项堆和排序网络。 4、修订了动态规划和贪心算法相关内容。 5、流网络相关材料现在基于边上的全部流。 6、由于关于矩阵基础和Strassen算法的材料移到了其他章,矩阵运算这一章的内容所占篇幅更小。 7、修改了对Knuth-Morris-Pratt字符串匹配算法的讨论。 8、新增100道练习和28道思考题,还更新并补充了参考文献。

2018-07-07

空空如也

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

TA关注的人

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