自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

鲤の游

SSL是母校,现前往新地图开拓中...... 漫游于平行线间的灰鲤,此处激起黑色孤独水花。

  • 博客(46)
  • 收藏
  • 关注

原创 【模拟】【树】这是一棵树吗?

题目解对于一棵大小为n的树,它必定有n-1条边,而且除了大小为1的树以外的树的节点都肯定有一条边连向他。判断一下就好。代码#include<cstdio>long long n,a[1000001],z,l,lz;int main(){ scanf("%lld", &n); for(long long i = 1; i <= n; ++i){ scanf("%lld", &a[i]); z = z + a[i]; //边 if(a[i]

2020-08-24 15:42:04 102

原创 T145120 最佳解答

题目解n方暴力,优化了些许变nlog(n)。n方:枚举TAB的长度,逐行计算长度nlog(n):枚举TAB的长度,与其的倍数。两个前缀和分别记录某个值到某个值中出现a[i]的数量,和a[i]值的总和。然后计算一下即可。代码#include<cstdio>#include<cmath>#include<iostream>#include<algorithm>using namespace std;long long n,a[10

2020-08-22 22:04:35 98

原创 【网络流】【最小割】洛谷P2598 [ZJOI2009]狼和羊的故事

(毛绒绒的题)忽然就想起beastars。题目 ------Link------题目解最小割=网络流中的最大流。建图:代码#include<cstdio>#include<iostream>#include<queue>#include<cmath>#include<cstring>#define innf 1000000000using namespace std;int n,m,s,t,tot,lx[101]

2020-08-22 08:21:12 145

原创 【Floyed】【匈牙利算法】【二分答案】导弹

题目描述给出一张无向的完全图(任意两点之间都有一条边的图)G=(V,E),它可以表示出某一块大陆的地图:每个顶点表示一座城市,每条边代表连接的两个城市间的距离,该大陆任两个城市都是直接连通的。另外在这个大陆上有两个特殊的国家,我们称为A国与B国,其中A国有N个城市,B国有M个城市。这里A国相对于B国来说是一个大国(我们有N>=M),而且它最近发明了一种新型武器:响尾蛇导弹(A Crotalid Missile),这种武器威力十分巨大,以至于每枚导弹都可以摧毁任意一座城市。A国总统在战略安排上要求A

2020-08-21 17:26:43 225

原创 【DP】统计蚂蚁(ants)

题目描述蚂蚁山上有T(1<=T<=1,000)种蚂蚁,标记为1…T,每种蚂蚁有N_i只蚂蚁(1<=N_i<=100),现有A(A<=5000)只蚂蚁,从中选出S,S+1,…,B(1<=S<=B<=A)只蚂蚁一共有多少种选法?如有5只蚂蚁分别为{1,1,2,2,3},一共有3种蚂蚁,每一种蚂蚁的数量分别为2,2,1,以下是选不同数量蚂蚁的方法:1个蚂蚁3种选法:{1}{2}{3}2个蚂蚁5种选法:{1,1}{1,2}{1,3}{2,2}{2,3}3个蚂

2020-08-21 17:18:01 193

原创 【数论】简单游戏(easygame)

题目描述一天,小R准备找小h去游泳,当他找到小h时,发现小h正在痛苦地写着一列数,1,2,3,…n,于是就问小h痛苦的原因,小h告诉他,现在他要算1…n这些数里面,1出现的次数是多少,如n=11的时候,有1,10,11共出现4次1,现在给出n,你能快速给出答案么?输入一行,一个整数n输出一个整数,表示1…n中1出现的次数。输入样例11输出样例4说明对于30%的数据:n<=1000;对于100%的数据:n<=maxlongint;解推,找规律。代码#includ

2020-08-21 17:09:18 300

原创 【01分数规划】【二分】洛谷P2868 [USACO07DEC]Sightseeing Cows G

Link题目解(一切如tag)二分一个比L,使在某精度下某个环内的 ΣF[i]/ΣT[i]>L\Sigma F[i] / \Sigma T[i] > LΣF[i]/ΣT[i]>L移项再乘-1,得ΣT[i]∗L−ΣF[i]<0\Sigma T[i] * L - \Sigma F[i] < 0ΣT[i]∗L−ΣF[i]<0于是我们将上面这条式子作边权,用spfa求负环即可得到这个比是否能得到。代码#include<cstdio>

2020-08-20 19:34:05 126

原创 【思路】【暴力】WING

题解我们发现:当一个位置出现过某个字母,那么拼凑的时候就总是可以在这个位置拼到。记录每个字母在每个位置第一次出现的位置,询问时取其构成字母出现的位置最大值。评测,坑,快读快输加40分。代码#include<cstdio>#include<cmath>#include<iostream>using namespace std;int n,m,lx,t,B[100001][101],ans;char c[100001];char read(){

2020-08-20 16:08:23 114

原创 【数论】X-因子链(factor)

题目描述给一个正整数X,一个长度为m的X-因子链是指这样一个序列:X0=1,X1,X2,。。。,Xm=X满足:Xi<Xi+1同时Xi|Xi+1(Xi+1能把Xi整除)要求X-因子链的最大长度Len和长度为Len的X-因子链的数量。输入一个正整数X输出一行,两个整数,分别表示最大长度和该长度链的种数。输入样例100输出样例4 6解分解质因数。然后预处理阶乘,即质因数的全排列,再将重复的质因数的排列去除。代码#include<cstdio>long long

2020-08-20 15:53:07 393

原创 【DFS】【暴力】【最小正环】开心小屋(smile)

题目描述Kc来到开心小屋。开心小屋是用来提升心情的。在这个小屋中有n个房间,一些房间之间有门连通。从房间i到达房间j,心情值可以加上-10000<=Cij<=10000,当然Cij可能是负的。现在kc失恋了,所以他想要知道他是否可以在这个小屋中无限地增加他的心情值,也就是无限地绕着一个环走?请帮kc求出最小的环需要经过的房间数,来使他的心情无限增加。输入第一行给出,1<=n<=300,1<=m<=5000。分别表示房间数及门的数量。接下来m行,每行四个数:i,j

2020-08-19 20:24:39 193

原创 【DP】KC的瓷器(porcelain)

题目描述KC来到了一个盛产瓷器的国度。他来到了一位商人的店铺。在这个店铺中,KC看到了一个有n(1<=n<=100)排的柜子,每排都有一些瓷器,每排不超过100个。那些精美的艺术品使KC一下心动了,决定从N排的商品中买下m(1<=m<=10000)个瓷器。这个商人看KC的脸上长满了痘子,就像苔藓一样,跟精美的瓷器相比相差太多,认为这么精致的艺术品被这样的人买走艺术价值会大打折扣。商人感到不爽,于是规定每次取商品只能取其中一排的最左边或者最右边那个,想为难KC。现在KC又获知每个

2020-08-19 20:13:41 103

原创 【DFS】【暴力】KC看星(star)

题目“一闪一闪亮晶晶,满天都是小星星”Kc吟唱着歌谣,躺在草坪上边想着她边看起了星星。Kc刚刚结识了笛卡尔这位好基友,认为他的坐标系非常神奇。于是他随机地选出了8颗星星,并且给它们标上了坐标。Kc又不甘寂寞,于是思考起一个问题:这八个点能否恰好构成一个正方形和一个矩形呢?输入输入文件包括1行16个数,表示8个星星的坐标,坐标绝对值不超过10000。输出输出文件第一行是"YES"或者"NO"。表示是否有解。若有解则第二行依次输出正方形每个顶点的序号。第三行依次输出矩形每个顶点的序号。序号即为输入

2020-08-19 20:05:36 113

原创 【DP】送你一颗圣诞树

这题…就是很毒瘤。玄学map。玄学pair。否则大点炸掉。解DP。ans[i]为第i颗树的美观度。topx(nowt,x)为在第nowt颗树上所有点到x点的距离和disx(nowt,x,y)为在第nowt颗树上x点到y点的距离关于转移:(模拟一下,分类讨论一下,得到代码)把当前的树拆成两个树(当初拼成它的数)然后判断各种情况,递归,记忆化搜索。虽然代码繁琐(chou)了(亿)点,但还是比较好理解的(?)详见代码。(万能句)然后便是%%%%%%(只要我%得够标准WA就找不上

2020-08-18 21:53:13 169

原创 【gcd】【桶】【伪暴力】欠扁的CD

题目解用一个桶存下a[i]。暴力枚举gcd,从max(a[i])直接往下枚举,然后枚举这个gcd的倍数,统计它的倍数有多少,达到k了就可直接输出。代码#include<cstdio>#include<iostream>#define ll long longusing namespace std;ll n,k,lj,maxx,a[500001],t[500001];int main(){ scanf("%lld%lld",&n,&k);

2020-08-18 16:00:12 184

原创 【二分答案】工资

题解二分答案。本来还想着DP或者二分答案再优化优化的,一看数据范围能过就不管了。代码#include<cstdio>#define ll long longll n,m,l,r,mid;ll k[1000005];bool pd(ll zz){ ll lj = 0,sl = 0; //累计值,数量 for(int i = 1; i <= n; ++i){ //逐个累加,看看需要分段数量是否大于mid if(lj + k[i] <=

2020-08-18 14:44:05 232

原创 【数论】分火腿

题目解有两种切法,像下面这样:第二种切法是优于第一种的,因为第一种切完之后小部分零件不一定能够平均分下去从而要多切几刀。第二种切着切着可能要切的地方就是这根火腿和另外一根火腿的分界,就少切一刀了。关于什么时候能少切一刀呢?每一份为n/m,化简一下为 (n/gcd(n,m) / (m/gcd(n,m) 。使 (一些n/m) 加在一起得到一个整数就可以少切一刀。已知除以gcd后分数线上下互质,那么凑的整数便是 (上下的最小公倍数/(m/gcd(n,m))然而这个并没有什么用,我们要的是多少份

2020-08-18 12:02:10 218

原创 【数论】洛谷P2671 求和

题目Sample-1 in6 25 5 3 2 2 22 2 1 1 2 1Sample-1 out82Sample-2 in15 45 10 8 2 2 2 9 9 7 7 5 6 4 2 42 2 3 3 4 3 3 2 4 4 4 4 1 1 1Sample-2 out1388解1. 分析题目发现三元组分数与y无关x,z同色x,z的位置i 必定同为双数或者同为单数2. 然后我们就可以把同色,同单双的数分到一类计算分数。3. 再简化计算公式,用

2020-08-17 20:12:15 157

原创 【数论】阶乘

《关于一些细节造就的悲剧》《怎么TLE了》《怎么又WA了》… …《?》题目输入第一行有一个正整数T,表示测试数据的组数。接下来的T行,每行输入两个十进制整数n和base。输出对于每组数据,输出一个十进制整数,表示在base进制下,n!结尾的零的个数。样例输入210 10 10 2样例输出28题目大意/转化n!最大可以整除base的多少次方。(根据十进制转换base进制方式得)解分解base的质因数P。然后在n!里提取足够数量的P来合成base,最终答案为能合

2020-08-17 16:53:09 212 1

原创 【最小生成树】洛谷P2259 Charmer--viv

双倍经验!(窥屏+水)题链——Link另一题题链——Link题目Sample input51 2 3 4 54 3 2 13 4 52 15Sample output7解同这篇。题目大意,样例,思路,代码都是一样的。不过这题的说明没有另一题清楚——它没说明“球”有几个。然而实际上它有若干个“球”。如果只有一个“球”的话,那便应该是另一种解法了。...

2020-08-16 21:06:45 375 1

原创 【并查集】旅游

题目Sample input15 5 32 3 63341 5 157243 5 57054 3 123821 3 2172660001000013000Sample output2612解直接每读入一次询问便建一遍图所用时间过于长…遂考虑将边和提问都从小到大排序,对于一个提问:连上权值小于它的边,然后用上并查集判断两点是否连通即可。Code#include<cstdio>#include<cstring>#include<

2020-08-16 20:08:55 92

原创 【树状数组】【离散化】简单计算器

题目Sample input41 4 3 2Sample output3解离散化+树状数组这里引用至一篇别人的博客当数据的范围较小时,比如maxn=100000,那么我们可以开一个数组c[maxn],来记录前面数据的出现情况,初始化为0;当数据a出现时,就令c[a]=1。这样的话,欲求某个数a的逆序数,只需要算出在当前状态下c[a+1,maxn]中有多少个1,因为这些位置的数在a之前出现且比a大。但是若每添加一个数据a时,就得从a+1到 maxn搜一遍,复杂度太高了。树状数组却能

2020-08-16 19:47:38 120

原创 【数论】双端队列xLIS问题

题目解对于数列中的某个点:求从它开始下降的最长子序列,这个序列将倒过来接到某点前面,成为最终的序列的前半段;求从它开始上升的最长子序列,这个序列将倒过来接到某点后面,成为最终的序列的后半段;最终答案为某个点两种子序列长度的和再减去1(因为统计了两次自己)其余的操作其实都可以省略。(无法更优)Code#include<cstdio>#include<cstring>#include<iostream>using namespace std;i

2020-08-14 22:17:37 237

原创 【DP】不知道该叫啥

题目解30分f[i][j]为第i位填j时的方案数,转移为:for(int i = 1; i <= n; ++i) for(int j = 1; j <= m; ++j) for(int k = 1; k <= m/j; ++k) //可以填的数 f[i][j] += f[i-1][j];然后我们可以用前缀和压掉k的枚举,因为答案只跟上一行有关系所以也压掉:for(int i = 1; i <= n; ++i){ for(int j

2020-08-14 20:40:45 89

原创 【DP】俄罗斯套娃

题目Sample input10 1000Sample output3628800解dp:设f[i][j]为前i个,逆序对数为j的方案数。然后用前缀和和滚动优化yi下:Code#include<cstdio>#include<iostream>using namespace std;long long mod = 1e10+7;long long f[10][1000001];long long n,k,sum,ans;int main(){

2020-08-13 21:55:15 293

原创 【神仙题目】【LCA】洛谷P1852 跳跳棋

Link这题妙啊,题目解由"一次只能跳过一颗棋子",得到此题的一个重要性质:这三个棋在某一时刻至多有3种跳法:中间的往左右跳,或离中间棋子较近的棋子跳往中间。像这样而当AB=BC时只有两种跳法(A跳不到A’的位置)当外面的点往里跳后,这三个棋子的范围会越来越小,直到出现不能往里跳的情况。我们发现,此时的状态是唯一的:这三个棋子不可能在其它地方重现此时的相对状态。我们就把这样的状态作为根;判断两组棋子的根,如果它们不相同,说明它们永远不可能摆成另外一组的样子;直接输出No。如果它

2020-08-13 20:50:22 300

原创 【组合】奶牛编号

题目描述作为一个神秘的电脑高手,Farmer John 用二进制数字标识他的奶牛。然而,他有点迷信,标识奶牛用的二进制数字,必须只含有K位“1” (1 <= K <= 10)。 当然,每个标识数字的首位必须为“1”。FJ按递增的顺序,安排标识数字,开始是最小可行的标识数字(由“1”组成的一个K位数)。不幸的是,他没有记录下标识数字。请帮他计算,第N个标识数字 (1 <= N <= 10^7)。输入第1行:空格隔开的两个整数,N和K。输出如题,第N个标识数字输入样例

2020-08-13 15:51:17 184

原创 【最小生成树】洛谷P5994 [PA2014]Kuglarz

(吟唱)转换题意——Link题目解每个点的情况都要知道i的奇偶可以通过询问 i <-> j 和 i+1 <-> j 或 i<->i 得到i,j区间的价格转化为边的权值,边连接i-1和j然后我们通过连上所有的点,就可以通过各种加减计算后,得到一种得到所有暗藏球的杯子的方案建最小生成树使花费的价格最少Code#include<cstdio>#include<iostream>#include<algorithm

2020-08-12 22:13:47 135

原创 【DP】中国象棋

题目描述这次小可可想解决的难题和中国象棋有关。在一个 N 行 M 列的棋盘上,让你放若干个炮(可以是 0 个),使得没有任何一个炮可以攻击另一个炮,请问有多少种放置方法。大家肯定很清楚,在中国象棋中炮的行走方式是:一个炮能攻击到另一个炮,当且仅当它们在同一行或同一列中,且它们之间恰好有一个棋中。你也来和小可可一起锻炼一下思维吧!输入一行包含两个整数 N, M,之间由一个空格隔开。输出总共的方案数。由于该值可能很大,只需给出方案数模 9999973 的结果。样例输入1 3样例输出7数据

2020-08-12 19:13:40 155

原创 【DFS】【暴力】跳房子2

题目描述奶牛们按不太传统的方式玩起了小孩子们玩的"跳房子"游戏。奶牛们创造了一个5x5的、由与x,y轴平行的数字组成的直线型网格,而不是用来在里面跳的、线性排列的、带数字的方格。然后他们熟练地在网格中的数字中跳:向前跳、向后跳、向左跳、向右跳(从不斜过来跳),跳到网格中的另一个数字上。他们再这样跳啊跳(按相同规则),跳到另外一个数字上(可能是已经跳过的数字)。一共在网格内跳过五次后,他们的跳跃构建了一个六位整数(可能以0开头,例如000201)。求出所有能被这样创造出来的不同整数的总数。输入第1到5

2020-08-12 17:54:02 446

原创 【二分答案】【SPFA】架设电话线

题目描述Farmer John打算将电话线引到自己的农场,但电信公司并不打算为他提供免费服务。于是,FJ必须为此向电信公司支付一定的费用。FJ的农场周围分布着N(1 <= N <= 1,000)根按1…N顺次编号的废弃的电话线杆,任意两根电话线杆间都没有电话线相连。一共P(1 <= P <= 10,000)对电话线杆间可以拉电话线,其余的那些由于隔得太远而无法被连接。第i对电话线杆的两个端点分别为A_i、B_i,它们间的距离为L_i (1 <= L_i <= 1,00

2020-08-12 17:44:23 335

原创 【LCA】洛谷P6374 「StOI-1」树上询问

???????!数组开大就过了???!!震惊。它卡了我半天诶??!Link题目Sample input #110 51 21 32 42 52 105 63 77 87 94 6 24 10 16 8 39 10 24 10 5Sample output #170140Sample input #210 51 21 32 42 52 105 63 77 87 94 6 24 10 16 8 39 10 24 10 5

2020-08-12 14:56:48 220

原创 【第k短路】【图论】旅行

这题目,,,好糊啊。题目输入输出数据范围样例输入5 61 2 31 3 42 4 22 5 3样例输出4解先立个根节点,然后DFS求个dis[i]表示i到根节点的路径长度。我们可以发现u,v两点间的距离 = dis[u]+dis[v];因为它们的最近公共祖先到根节点那一段所产生的值会互相抵消掉。分别记录奇数深度与偶数深度的点用来配对,(奇数和奇数,偶数和偶数不能走,很明显)然后用堆?维护第k短路。Code#include<cstdio>#

2020-08-11 20:06:51 102

原创 【最小生成树】【并查集】灌水

很明显的最小生成树数…写的时候我竟然一时忆不起来…还有一不小心思路打对了结果数组开小了交上去掉分…wsl题目描述Farmer John已经决定把水灌到他的n块农田,农田被数字1到n标记。把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库。建造一个水库需要花费wi,连接两块土地需要花费Pij.计算Farmer John所需的最少代价。输入*第一行:一个数n*第二行到第n+1行:第i+1行含有一个数wi*第n+2行到第2n+1行:第n+1+i行有n个被空格分开的数,第j个数代

2020-08-11 15:33:36 116

原创 【数论】异或

题目描述SarvaTathagata是个神仙,一天他在研究数论时,书上有这么一个问题:求不超过n两两的数的gcd。SarvaTathagata这么神仙的人当然觉得这个是sb题啦。学习之余,他还发现gcd的某一个特别好的性质:如果有两个数i,j满足gcd(i,j)=ij(这里的为c++中的异或)的话,那么这两个数组成的数对(i,j)就是一个nb的数对(这里认为(i,j)和(j,i)为相同的,并不需要计算2次)。当然,SarvaTathagata并不会只满足于判断一个数对是否nb,他还想知道满足两个数都是

2020-08-11 14:50:11 164

原创 【期望DP】洛谷P1365 WJMZBMR打osu! / Easy

Link题目Sample-input4????Sample-output4.1250思路是看着这个做的xx。然后这里期望设f[i]为完成第i个点击时期望的分数:如果c=‘x’,分数不变,继承f[i-1]如果c=’o’,总共增加的分数=连击数2如果c=’?‘,~~(开始搞期望?)~~那么f[i] = x的情况所能得到的分数50%+o的情况所能得到的分数50%。但是连击数不能按照o统计,根据折算,累计=(累计+1)/2;Code#include<cstdio

2020-08-10 20:50:06 605

原创 【LCA】洛谷P3398 仓鼠找sugar

Link题目思路树形结构求两点间的最短路可用LCA,然后我们可以发现,两条路如果相交的话其中一条路的两点的LCA必定是在另一条路上的。Code#include<cstdio>#include<algorithm>using namespace std;int n,q,t;int l[500001],jump[500001],Deep[500001],father[500001][101];struct asdf{ int to,next;} A[100

2020-08-10 17:07:20 129

原创 【二分答案】爬山

很明显的二分…题目思路二分上升用的时间,#include<cstdio>long long m,d,a,b,l,r,ups,downs,uup,ddown;int main(){ scanf("%lld%lld%lld%lld",&m,&d,&a,&b); --m; l = 0; r = m; while(l<r){ ups = (l+r+1)/2; //往上用时 downs = m-ups; //往下用时 uu

2020-08-10 14:22:53 116

原创 【图论】洛谷P5018 对称二叉树

Link题目描述Sample-in```cpp#include<cstdio>#include<cmath>#include<iostream>using namespace std;int n,ans,lleft[1000001],rright[1000001],val[1000001],f[1000001];void dfs(int d){ f[d] = 1; if(lleft[d] != -1){ dfs(lleft[d]); f

2020-08-10 08:09:10 148

原创 【贪心】洛谷P1095守望者的逃离

Link题目思路顺着时间轴推。详见代码。#include<cstdio>#include<cmath>#include<iostream>using namespace std;int m,s,t,s1,s2; //s1表示用闪现赶路,s2跑步int main(){ scanf("%d%d%d",&m,&s,&t); for(int i = 1; i <= t; ++i){ s2 += 17; //跑步

2020-08-09 21:12:51 114

原创 【模板】【拓展欧几里得】洛谷P1082 同余方程

题目思路看着大佬这篇——题解写的。Code#include<cstdio>long long x = 1,y,l,a,b;void gcd(long long aa, long long bb){ if(bb == 0) return; gcd(bb,aa%bb); l = x; x = y; y = l-aa/bb*y; return;}int main(){ scanf("%lld%lld",&a,&b); gcd(a,b); x =

2020-08-09 20:44:05 141

空空如也

空空如也

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

TA关注的人

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