- 博客(42)
- 收藏
- 关注
原创 Codeforces Round #542 (Div. 2)
A. Be Positive简单题,代码已AC#include<bits/stdc++.h>using namespace std;int n,t;int main(){ scanf("%d",&n); int g=0,l=0; for(int i=0;i<n;i++) { scanf("%d",&...
2019-02-27 16:29:03
153
原创 Codeforces Round #541 (Div. 2)(A,B,C,D,E,F)
A. Sea Battle题意:询问两个长方形的外围周长,如图中所示 注:两个长方形左侧对齐简单题,已AC,代码如下#include<bits/stdc++.h>using namespace std;int a,b,c,d;int main(){ scanf("%d%d%d%d",&a,&b,&c,&d); ...
2019-02-25 09:34:05
161
原创 (离散+树状数组求逆序对)牛客练习赛38 出题人的手环
这个博客的树状数组逆序对数求法很清晰题解:先求出从第一颗珠子左侧断开的逆序对数,每次将断开的位置向右移一格,那么最左边的珠子会变成最右边的珠子,那么逆序对会减去比他小的数字个数,加上比他大的数字个数#include<bits/stdc++.h>#include<iomanip>typedef long long ll;using namespace std;...
2019-02-15 11:06:23
168
转载 C++保留小数位数问题
首先介绍主角:setprecision() 和 setiosflags()这两个函数是头文件#include<iomanip>里的函数,记得加头文件#include<iomanip>setprecision()顾名思义:就是设定精度。用来控制输出的数的位数(从左到右的),自动四舍五入。且不保留小数后的0。比如:int pi = 3.14...
2019-02-14 14:32:14
17819
1
原创 (树形dp)hdu 1520 Anniversary party
推荐题解#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <queue>#include <stack>using namespace std;const int inf=0x3f3f...
2019-02-11 13:44:24
139
原创 (dp)51nod 1241 特殊的排序
一个数组的元素为1至N的整数,现在要对这个数组进行排序,在排序时只能将元素放在数组的头部或尾部,问至少需要移动多少个数字,才能完成整个排序过程?例如:2 5 3 4 1 将1移到头部 => 1 2 5 3 4 将5移到尾部 =>1 2 3 4 5 这样就排好了,移动了2个元素。 给出一个1-N的排列,输出完成排序所需的最少移动次数。输入第1行:1个数N...
2019-01-24 13:56:48
193
原创 (最短路)(hdu1548)A strange lift
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <queue>#include <vector>#include <queue>using namespace std;const
2019-01-21 15:42:42
115
原创 (最短路)51nod 1693水群
若A=K*B,若仅通过操作二:将B变换为A需要K步,由算数基本定理可知:k=p1*p2*……pn(p为素数,且可能重复)那么:将B转化为p1*B需要p1步,将p1*B转化为p1*p2*B需要p2步,以此类推,将B转化为A需要(p1+p2+....pn)步因为(p1*p2*p3...*pn) < (p1+p2+p3+...pn),故而若仅通过操作二将B转化为A至少需要(p1+p2+...
2019-01-21 11:15:25
121
转载 有关最短路(spfa和dijkstra)
主要是为了方便自己忘记的时候复习一遍,不适合初学者全部内容摘自他人博客 spfa:上图来自此处 dijkstra: 上图来自此处 算法思路对比Dijkstra+heap是用小根堆,每次取出d最小的点,来更新距离,那么这个点来说,最小距离就是当前的d。 SPFA是用双端队列,每次取出队头,来更新距离,它之后可能...
2019-01-21 10:45:48
1233
1
原创 (并查集 set)51nod 1515 明辨是非
用并查集维护相等关系用set维护不等关系count()函数返回个数值#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <queue>#include <stack>#include &l...
2019-01-20 19:46:17
154
原创 (主席树 模板) 51nod1175 区间第K大的数
以下是找的主席树详解,感觉很棒这个是博主自己绘图,很容易理解以下是kuangbin的代码,实际上他写的应该是区间第k小,所以我就把后面稍微改动一下,就是区间第k大了楼上博主的讲解+kuangbin代码一起食用就很舒服了#include <iostream>#include <algorithm>#include <cstring>#inc...
2019-01-20 11:32:03
136
原创 (二分)51nod 1128 正整数分组 V2
给出一个长度为N的正整数数组,不改变数组元素的顺序,将这N个数分为K组。各组中元素的和分别为S1,S2....Sk。如何分组,使得S1至Sk中的最大值最小?例如:1 2 3 4 5 6分为3组,{1 2 3} {4 5} {6},元素和为6, 9, 6,最大值为9。也可以分为{1 2 3 4} {5} {6}。元素和为:10 5 6,最大值为10。因此第一种方案更优。并且第一种方案的最大值是所...
2019-01-17 17:14:28
294
原创 (单调栈)51nod 1215 数组的宽度
N个整数组成的数组,定义子数组a[i]..a[j]的宽度为:max(a[i]..a[j]) - min(a[i]..a[j]),求所有子数组的宽度和。 输入第1行:1个数N,表示数组的长度。(1 <= N <= 50000)第2 - N + 1行:每行1个数,表示数组中的元素(1 <= A[i] <= 50000)输出输出所有子数组的宽度和。输...
2019-01-17 10:04:07
151
原创 (最短路)51nod 1445 变色DNA
#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <cmath>#include <queue>#include <stack>#include <map>
2019-01-16 09:44:31
94
原创 (二分)51nod1624 取余最长路
佳佳有一个n*m的带权矩阵,她想从(1,1)出发走到(n,m)且只能往右往下移动,她能得到的娱乐值为所经过的位置的权的总和。有一天,她被下了恶毒的诅咒,这个诅咒的作用是将她的娱乐值变为对p取模后的值,这让佳佳十分的不开心,因为她无法找到一条能使她得到最大娱乐值的路径了!她发现这个问题实在是太困难了,既然这样,那就只在3*n的矩阵内进行游戏吧!现在的问题是,在一个3*n的带权矩阵中,从(...
2019-01-15 15:12:41
106
原创 有关默慈金数 51nod 1556 计算
默慈金数:1, 2, 4, 9, 21, 51, 127, 323, 835, 2188, 5798, 15511, 41835, 113634, 310572, 853467, 2356779, 6536382, 18199284, 50852019, 142547559, 400763223, 1129760415, 3192727797, 9043402501, 25669818476,...
2019-01-15 11:30:48
175
原创 (线段树,前缀和,贪心)51nod 1672 区间交
小A有一个含有n个非负整数的数列与m个区间,每个区间可以表示为li,ri。它想选择其中k个区间, 使得这些区间的交的那些位置所对应的数的和最大。(是指k个区间共同的交,即每个区间都包含这一段,具体可以参照样例)在样例中,5个位置对应的值分别为1,2,3,4,6,那么选择[2,5]与[4,5]两个区间的区间交为[4,5],它的值的和为10。 输入第一行三个数n,k,m(1<...
2019-01-15 11:17:56
150
原创 51nod 1682 中位数计数
中位数定义为所有值从小到大排序后排在正中间的那个数,如果值有偶数个,通常取最中间的两个数值的平均数作为中位数。现在有n个数,每个数都是独一无二的,求出每个数在多少个包含其的区间中是中位数。 输入第一行一个数n(n<=8000)第二行n个数,0<=每个数<=10^9输出N个数,依次表示第i个数在多少包含其的区间中是中位数。输入样例51 2...
2019-01-15 09:28:34
140
原创 (贪心)51nod1255 字典序最小的子序列
给出一个由a-z组成的字符串S,求他的一个子序列,满足如下条件:1、包含字符串中所有出现过的字符各1个。2、是所有满足条件1的串中,字典序最小的。 例如:babbdcc,出现过的字符为:abcd,而包含abcd的所有子序列中,字典序最小的为abdc。输入输入1行字符串S,所有字符均为小写,字符串的长度为L。(1 <= L <= 100000)。输出输...
2019-01-14 17:04:24
935
原创 51nod 1449 砝码称重
现在有好多种砝码,他们的重量是 w 0 ,w 1 ,w 2 ,... w0,w1,w2,... 每种各一个。问用这些砝码能不能表示一个重量为m的东西。样例解释:可以将重物和3放到一个托盘中,9和1放到另外一个托盘中。输入单组测试数据。第一行有两个整数w,m (2 ≤ w ≤ 10^9, 1 ≤ m ≤ 10^9)。输出如果能,输出YES,否则输出NO。...
2019-01-14 14:22:22
135
原创 (单调栈)51nod 1437迈克步
1437 迈克步有n只熊。他们站成一排队伍,从左到右依次1到n编号。第i只熊的高度是ai。一组熊指的队伍中连续的一个子段。组的大小就是熊的数目。而组的力量就是这一组熊中最小的高度。迈克想知道对于所有的组大小为x(1 ≤ x ≤ n)的,最大力量是多少。有n只熊。他们站成一排队伍,从左到右依次1到n编号。第i只熊的高度是ai。一组熊指的队伍中连续的一个子段。组的大小就是熊的数目。而组的力...
2019-01-14 09:36:23
214
原创 (dp)51nod 1202 子序列个数
1202 子序列个数子序列的定义:对于一个序列a=a[1],a[2],......a[n]。则非空序列a'=a[p1],a[p2]......a[pm]为a的一个子序列,其中1<=p1<p2<.....<pm<=n。例如4,14,2,3和14,1,2,3都为4,13,14,1,2,3的子序列。对于给出序列a,有些子序列可能是相同的,这里只算做1个,请输出a的不同子...
2019-01-13 20:01:43
120
原创 (kmp)51nod1554 欧姆诺姆和项链
比较难以理解的地方已经在代码里指出,可以多想一下借鉴了大佬的这篇博客#include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <queue>#include <stack>#include <...
2019-01-13 15:11:38
139
原创 (kmp)51nod 1277 字符串中的最大值
i从后往前,前缀长度为next[i]的字符串说明在此时出现过一次,累加上 #include <iostream>#include <algorithm>#include <cstring>#include <cstdio>#include <queue>#include <stack>#include &...
2019-01-13 10:37:10
144
原创 (区间dp模板)51nod1021(经典区间dp)
区间dp模板for(int i=1;i<=n;i++){ dp[i][i]=初始值}for(int len=2;len<=n;len++) //区间长度for(int i=1;i<=n;i++) //枚举起点{ int j=i+len-1; //区间终点 if(j>n) break; ...
2019-01-12 17:10:03
225
3
原创 51nod 1013 3的幂的和(矩阵快速幂)(逆元)
方法一:矩阵快速幂: * 方法二:逆元 等比数列求和公式 因为q=3,a1=1.所以化简下就是 (3^n-1)*2%1e9+7以下代码是矩阵快速幂的#include <bits/stdc++.h>#include <algorithm>#include <cstdio>#i...
2019-01-12 14:40:42
141
原创 (动态规划)洛谷P2051 [AHOI2009]中国象棋
dp[i][j][k]表示放了前i行,有j列是有1个棋子,有k列有两个棋子#include <bits/stdc++.h>#include <algorithm>#include <cstdio>#include <iostream>#include <vector>#include <cstdlib>#in...
2019-01-12 09:34:24
143
原创 (倍增)洛谷 P1613 跑路
学floyd的时候竟然没去想,这次傻了,枚举中间点的循环得放在最前面 for(int t=1;t<=n;t++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dis[i][j]=min(dis[i][j],(dis[i][t]+...
2019-01-05 17:13:13
144
原创 洛谷 1330封锁阳光大学(染色)
get了一个新事情: exit(x)(x不为0)都表示异常退出 exit(0)表示正常退出#include <bits/stdc++.h>#include <algorithm>#include <cstdio>#include <iostream>#include <vector>#include <...
2018-12-23 17:49:26
117
原创 紫书uva437 The Tower of Babylon(DAG&&dp)
代码已AC感觉写的有丑,而且我还为了想优化想了半天,然后没想出来,最后原计划进行 UVA 437 巴比伦塔#include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;int n,x,y,z,dp[200],a,b,c,cnt;struct ...
2018-11-28 22:10:39
91
原创 紫书uva1025 A Spy in the Metro(dp)
难受啊,dp的时候多写了else,傻了,站台肯定有可能同时左右方向一起来车啊 has_train[i][j][],第i分钟,j站台,是否有向右(0)/向左(1)开的车dp[i][j],第i分钟,在j站台最少还需要等候多长时间三种状态1.等一分钟2.接下来向右开3.接下来向左开代码已ACvjudge uva1025#include <bits/stdc++....
2018-11-28 19:35:20
98
原创 紫书uva1395(苗条的生成树)
#include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;int n,m,a,b,len,pre[110];struct node{ int d1,d2,l;}e[10010];bool com(node x,node y){ r...
2018-11-27 10:56:49
157
原创 有关最小生成树(概述及复杂度比较)
Prim算法: kruskral算法: 1.Prim在稠密图中比Kruskal优,在稀疏图中比Kruskal劣。2.Prim+Heap在任何时候都有令人满意的的时间复杂度,但是代价是空间消耗极大。竞赛所给的题大多数是稀疏图,所以尽可能地使用Prim+Heap吧,在稀疏图中这是无敌的。如果一定要在朴素Prim和Kruskal里选一个的话那就用Kruskal吧。当然Pr...
2018-10-03 20:11:03
3250
原创 有关扩展欧几里得
//返回d=gcd(a,b);//返回的x和y即为ax+by=d中x和y的解ll exgcd(ll a,ll b,ll &x,ll &y){ if(a==0&&b==0) return -1;//无最大公约数 if(b==0){x=1;y=0;return a;} ll d=exgcd(b,a%b,y,x); y-=a/b*x...
2018-10-01 18:30:08
103
原创 (分组背包)ZOJ3769-Diablo III
题意:有两个属性:攻击和防御,击败对手,你需要尽可能大的攻击和大于等于m的防御,接下来n行n个设备,一共13种装备,每种装备都有攻击力和防御值,每种装备只允许选择一个,13种装备里如果选择了双手装备,就不能选择武器和护盾,Finger可以最多同时存在两个,问你能获得的最大攻击。题解:用dp搞之前,先对限制进行操作,把武器,护盾,双手放在一组里,有四种情况(武器/护盾/武器+护盾/双手),...
2018-09-13 18:42:16
176
原创 (状压dp)POJ - 1170 Shopping Offers
最近在学习dp,这道题感觉挺不错的,(蟹蟹亲爱哒细心讲解,手动艾特,最喜欢你啦~)题意:购物车里有b种(0=<b<=5)物品,每种物品告诉物品代号c(1=<c<=999),数量为k(1=<k<=5),单价为p.超市有s种优惠方案,每种优惠方案包含n种物品,分别告诉这n种物品的代号和数量以及打包后的价格。询问刚好把购物车的东西买完,最少的花费。解题思路:离...
2018-09-12 17:39:22
193
1
原创 WOJ Problem 1537 - A - Stones I , Problem 1538 - B - Stones II
Problem 1537 - A - Stones ITime Limit: 1000MS Memory Limit: 65536KB Total Submit: 491 Accepted: 90 Special Judge: NoDescriptionXiaoming took the flight MH370 on March 8, 2014 to China to ...
2018-09-10 19:27:36
219
原创 ( 扩展欧几里得算法)bzoj 1477
第一眼感觉,咦,这么简单,再看看,,,,,,,我怎么可以质疑黄学长的题表!!!!公式列出来很easy (x+mk)%l=(y+nk)%l (k=0,1,2,3,4...........两只青蛙各跳了几次)然后,这道题太难了,我不会,我不会啊/(ㄒoㄒ)/~~扩展欧几里得算法ing————————————————————————原公式(x+mp)-(y+np)=kl ...
2018-08-31 15:19:30
131
原创 (状压dp)bzoj 1725
人生第一个状压dp,虽然知道这个题是状压dp,然而并不会写,看一遍黄学长的代码,自己又搞了一遍,其实我是复制了学长的代码吧(哭唧唧)这个是有关位运算和状压dp常用的小结https://www.cnblogs.com/z1141000271/p/7467896.html#include<iostream>#include <cstdio>#include<...
2018-08-31 09:22:29
214
原创 (线段树)hdu-4027 Can you answer these queries?
每天一个线段树,慢腾腾的学,啧 正常写的话超时,又因为不是模板类型题,所以我们得想一个剪枝的方法,事实上经过几次开根号之后,都会变成1,之后就不需要重复操作了,标记一下就好 有两个注意的点:1.给的数据x和y大小不确定,需要自己判断一下 2.long long int的问题(因为方便就都设为ll了) 剩下就...
2018-04-23 21:01:40
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人