自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(99)
  • 收藏
  • 关注

转载 The Preliminary Contest for ICPC Asia Xuzhou 2019(补题)

E.XKC's basketball teamps:比赛过程中读错题了,而且一直没发现(好难受)。以为要求满足要求的个数,一直没有思路,没想到是求最长距离,那就很容易了。solution:贪心的从后往前维护一个单调递增序列,因为对于i<j,a[i]<=a[j],对于i之前的数那么a[j]可以完全替代a[i]的作用。 1 #include <bit...

2019-09-07 20:28:00 118

转载 树状数组模板(区间修改+单点查询)

很巧妙的用了差分建树,解决区间修改的问题 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=5e5+5; 5 6 int n,m; 7 int a[maxn]; 8 ll tree[maxn]; 9 ...

2019-09-05 18:05:00 147

转载 树状数组模板

树状数组模板 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=5e5+5; 5 6 int n,m; 7 int a[maxn]; 8 ll tree[maxn]; 9 10 int lowb...

2019-09-05 17:41:00 129

转载 P3901 数列找不同(简单莫队)

莫队入门题目,区间不相同数查询应该用线段树也能做,但是不知道该维护什么。一篇很好的题解:https://www.cnblogs.com/MisakaAzusa/p/8684319.html莫队算法主要解决的问题:莫队算法是用来处理一类无修改的离线区间询问问题。莫队算法的思想:1、分块and排序,使相邻的查询区间尽量接近,curL和curR两个指针移动的距离尽量...

2019-09-05 15:38:00 125

转载 Educational Codeforces Round 70 Editorial B(dp+暴力)

四维dp+暴力这个题看到后一点点想法都没有。题解的方法是:暴力处理出用a和b处理i—>j的最小步数。那么之后O(n)模拟就好了。写dfs的时候有一个小(大)坑,u—>u的步数不是0,所以写bfs的时候一定要注意。 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef lo...

2019-08-28 17:21:00 108

转载 Codeforces Round #581 (div. 2) Tutorial C(floyed最短路记录关键节点)

floyed最短路记录关键节点比赛的时候想到最短路了,但是不知道怎么处理。后来看了题解,因为以一个点一定要,所以记录第一个节点对于第二个要不要呢,实际上是取决于第三个点的,如果求出的最短路a1—>a3是小于(3-1)的,如果不记录第二个节点,那么第二个节点就会被抛弃,所以第二个节点记录。如果a1—>a3等于(3-1)的,那么一定可以走1—>2—>3...

2019-08-28 14:50:00 89

转载 Educational Codeforces Round 71 Editorial D

是一道permutation的题目。观察发现一共最多有N!种排列方式,对于第一关键字,如果有相同的元素a1,a2...那么bad permutation C1=a1*a2*...对于第二关键字相同,求出C2。但是如果总的减去两种bad permutation 显然不正确,因为有可能删除了重复的排列,那么就把这个重复的再加上就好了,就是第一关键字有序,第二关键字也有序。最后的ans=N...

2019-08-28 13:45:00 88

转载 codeforces.com/contest/1201/problem/B

B. Zero Array一道思维题因为每次操作对于sum会减少2,所以如果sum是奇数肯定不可以。另外,如果最大值大于前面n-1个数的总和,也一定不可以。其他情况都可以。证明:如果最后一个数等于前面n-1个数的总和,那显然可以。最后一个数小于前面n-1个数的总和,通过每次操作,前面n-1个数的总和会减少2.那么通过一定次数的操作,最大值会等于签名n-1个数的总和。所...

2019-08-27 10:42:00 237

转载 字符串Hash入门(转载)

字符串哈希入门:https://blog.csdn.net/pengwill97/article/details/80879387单哈希公式:hash=((hash[r]−hash[l−1]∗pr−l+1)%MOD+MOD)%MOD求子串哈希公式:若已知一个|S|=n|S|=n的字符串的hash值,hash[i],1≤i≤nhash[i],1≤i≤n,其子串sl..sr,1≤...

2019-08-17 10:37:00 122

转载 数论——定理整理

欧拉定理: 若正整数a , n互质,则aφ(n)≡1(mod n)其中φ(n)是欧拉函数(1~n)与n互质的数。费马小定理: 对于质数p,任意整数a,均满足:ap≡a(mod p)欧拉定理的推论: 若正整数a,n互质,那么对于任意正整数b,有ab≡ab modφ(n)(mod n)转载于:https://www....

2019-08-16 11:41:00 96

转载 2019牛客暑期多校训练营(第九场)

DKnapsack Cryptosystem折半搜索,晚上又去看了挑战程序设计,对于时间复杂度高的情况,可以通过牺牲空间来降低时间复杂度。先把前半部分所有可以组合的情况枚举出来,然后对于后半部分依次枚举,那么复杂度变化为O(2^36)->O(2^18+2^18log^18).显然就可做了,折半的裸题。但是用二分写了一发,没过,感觉时二分那里的问题,或者时01字符串那里出了...

2019-08-16 10:41:00 86

转载 hzw的数列分块入门

T1数列区间修改,单点查询。线段树,树状数组都可。(代码抄的) 1 #include <bits/stdc++.h> 2 3 using namespace std; 4 5 typedef long long ll; 6 const int maxn=5e4+5; 7 8 int n,blo; 9 int v[maxn],b...

2019-08-13 10:36:00 159

转载 洛谷P2727 01串 Stringsobits

P2727 01串 Stringsobits看了题解才做(抄)出来的,dp好弱啊dp[i][j]表示前i位有j个1的串数。转移方程 dp[i][j]=dp[i-1][j-1]+dp[i-1][j]。重点数如何求出这个串呢我们对于k(0->l)遍历求前缀和。当发现对于对于前缀和 sum[i]>=p&&sum[i-1] 的,那么就一定有第i位是...

2019-08-10 10:00:00 166

转载 P1404 平均数

P1404 平均数这个题有点像01分数规划那种类型。二分值域,逼近答案对于二分中的每次循环,有一个很巧妙的前缀最小记录,就是这个:Min=min(Min,s[i-m])一直往后扫,对于大于当i>=m时,考虑 if(s[i]-Min>=0),是的话一定有满足当前mid的区间(也就是有限制的最大子段和)对于找平均数的问题,一般可以二分答案解决ps:现在遇到...

2019-08-09 17:35:00 296

转载 UVA1210 连续素数之和 Sum of Consecutive Prime Numbers

UVA1210 连续素数之和 Sum of Consecutive Prime Numbers扫出扫出1~10000内的所有素数,记录素数前缀和。然后暴力O(n^2)。还有个思路是用队列,一直往上加,不满足出队,O(n)就可以 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef l...

2019-08-09 13:17:00 257

转载 P1082 同余方程

P1082 同余方程ext_gcd 求ax≡1(modb) 。板子不太好,求出的x不一定是最小的一个小技巧:x+=b*10000,x%=b;求出的就是最小正数了 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 5 6 ...

2019-08-09 11:43:00 91

转载 P1004 方格取数

P1004 方格取数四维dp ,dp[i][j][k][l]表示第一个人走到i,j、第二个人走到k、l时获得的最大的值。递推公式:dp[i][j][k][l]=max(dp[i-1][j][k-1][l],max(dp[i][j-1][k-1][l],max(dp[i-1][j][k][l-1],dp[i][j-1][k][l-1])))+M[i][j]+M[k][l];...

2019-08-09 09:41:00 124

转载 洛谷P1154 奶牛分厩

洛谷P1154 奶牛分厩如果(a同余b)mod c;则 c|(a-b)。n^2把每两个数之间的差求出来,做标记vis[cur]。之后从n开始枚举k,如果对于当前k以及k在数域s内的倍数mk都不存在标记,那么当前值一定满足。 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef lo...

2019-08-08 11:09:00 148

转载 763A - Timofey and a tree

codeforces百题计划第一周(5)(1)一开始树形dp写了半天(真的是半天),没过,看了题解,用了很巧妙的方法。对于对于每条两端颜色不同的边,都需要切断,才可以满足要求。因为只能删除一个点,那也就是这些有不同颜色端点的边都连在一个点上,那么才能通过删掉这个点把树分成几个纯色子树。每找到一条这样的边,异色边E++,两个端点num[u]++,num[v]++。最后找最大...

2019-08-07 16:27:00 119

转载 165C.Another Problem on Strings

codeforces百题计划第一周(4)观察发现对于k!=0时,对于包含k个1的区间,第一个1左边的0和第k个1右边的0时可选可不选的,那么对于包含当前k个1的区间,找到包含最有0的所有不同情况就时对于包含当前k个1的所有区间记录每个1的位置,cnt[i]每个1左右0的个数,l[i],r[i]对于每个包含k个1的区间就是 (r[i]+1)*(l[i-k+1]+1)...

2019-08-06 13:03:00 120

转载 706/C. Hard problem

codeforces百题计划第一周(3)很典型的选择或者不选的线性dp。两个状态,选择:dp[i][1],不选:dp[i][0]状态转移也很容易,就在i-1的基础上考虑(详见代码) 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const int maxn=1e5+5; 5 t...

2019-08-06 10:41:00 101

转载 455/A. Boredom

codeforces百题计划第一周(2)线性dp,记录每个数次出现的次数b[i],dp[i]的状态是处理完前i个数字后的最大值。转移方程:dp[i]=max(dp[i-1],dp[i-2]*i*b[i])注意会爆int 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 const in...

2019-08-06 09:46:00 195

转载 550/A. Boredom

codeforces百题计划第一周(1)暴力找两次,第一次找AB,然后从下一个位置找BA。第二次搜找BA,从下一个位置找AB。 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 5 int main(){ 6 7 string str;cin>>...

2019-08-05 10:28:00 68

转载 E - Tunnel Warfare HDU - 1540

E - Tunnel WarfareHDU - 1540区间合并+单点修改,查询最大连续长度区间修改的线段树实现起来稍微比较麻烦,因为维护两个区间左右延伸的数组。每次查询的时候,如果该区间是sum[rt]||l==r||sum[rt]==r-l+1,那么返回,否则继续向下查找,因为是单点修改,每次修改都要到最底层,所以懒标记不起作用,其他的就是代码实现的问题了。 ...

2019-08-01 11:16:00 78

转载 F - Assign the task HDU - 3974(dfs序线段树)

F - Assign the taskHDU - 3974dfs序线段树把树形结构变成线性区间结构,树的向下传值变成了这个节点能覆盖的区间的修改。线段树代码是真的难调,一点小bug就是找不出来,卡了两天。 1 #include <iostream> 2 #include <cstring> 3 4 using names...

2019-07-31 22:33:00 115

转载 线段树——区间合并(模板题)

poj 3667 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cctype> 5 using namespace std; 6 #define lson l,m,rt<<1 7 #def...

2019-07-30 15:36:00 121

转载 检查有向图是否是树

与无向图那题一样,但是需要多考虑一个点是树入度为0的点只有一个,因此边的前后顺序有了作用,这是和之前题的唯一区别。 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 #include <set> 5 #include <map>...

2019-07-29 21:24:00 528

转载 检查无向图的连通以及是否存在环

J - 小希的迷宫HDU - 1272 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 #include <set> 5 using namespace std; 6 const int maxn=1e5+5; 7 8 ...

2019-07-29 11:26:00 533

转载 逆向并查集

I - Connections in Galaxy War正向做这道题非常困难,可以从逆向开始。正向破坏边就是逆向加边。建图的时候把所欲破坏的边除去,那么这个图就是最后的图,当遇到破坏边时就加边,即回复到了破坏此条边之前的状态。这个和食物过期的想法很像(D - Supermarket POJ - 1456),也是一种贪心的策略。这个题实现起来比那个dp+权值并查集简单的多...

2019-07-29 10:40:00 82

转载 (正难则反)D - Supermarket POJ - 1456

贪心,从最大的 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 using namespace std; 5 typedef long long ll; 6 vector <int> V[10005]; 7 priority_qu...

2019-07-28 21:47:00 78

转载 种类并查集

Zjnu StadiumHDU - 3047逾期说是种类并查集,其实更像是权值并查集,以一个点作为基准,通过路径压缩把所有的座位关系都变成与基准有直接关系的,查询的过程也是不断维护集合的过程,没有当前查询的信息,就插入查询的信息,如果有,则判断是否与集合中的信息冲突。对于每次加入的时候都有下面这个关系,根据这个等价关系,求出cnt[fb],然后通过find函数进行路径压缩和更...

2019-07-27 23:19:00 112

转载 带权值并查集(转)

[POJ 1988] Cube Stacking  我们需要新增两种属性cnt[i]cnt[i]与s[i]s[i],分别表示ii之下的块数和ii所在堆的数量。在路径压缩时,cnt[i] += cnt[f[i]] ,另外在连接操作时,需要动态更新cnt[find(u)]和s[find(v)]的信息。 1 #include <iostream> 2 #define l...

2019-07-26 14:03:00 189

转载 A - Collecting Bugs

1 /*定义dp[i][j]作为完成i钟,j个子系统需要的天数,那么很显然dp[i][j]由四种状态转移来 2 p1 = i*j / (n*s) 3 p2 = (n-i)*j / (n*s) 4 p3 = i*(s-j) / (n*s) 5 p4 = (n-i)*(s-j) / (n*s) 6 但是对于 dp[i][j],显然此时的dp[i][j]是0,就...

2019-07-24 11:12:00 82

转载 C - Justice

结合代码 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int MAXN=1e5+5; 5 vector <int>pre[MAXN]; 6 struct node{ 7 int w;int sig...

2019-07-24 10:25:00 128

转载 2019牛客暑期多校训练营(第二场)

H Second Large Rectangle前天打比赛唯一的收获就是单调栈,然后这个题还没做出来,主要时没想到把它搞成直方图模拟,一直在推右下角作为最大矩形的dp,搞成直方图就很简单了,和poj那个入门单调栈题一模一样,只不过这个是有i层,还有一个点时每次找到最大的要对长-1还有宽-1,那么才能保证不丢失次大值。好菜啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!...

2019-07-20 23:35:00 65

转载 Can you answer these queries? HDU - 4027

Can you answer these querites?HDU - 4027普通的线段树题,但是有一个问题是,区间更新时,因为必须更新每个点,才能更新区间,那么线段树更新就很慢了,无法使用lazy数组。有一个小技巧是当区间和等于区间长度时,那么说明已经到最好的情况了,不用再修改了。这一步简化后就可以过了如果写线段树可以像喝水一样自然就好了 1 #include...

2019-07-19 22:30:00 101

转载 牛客——Neat Tree(单调栈)

维护一个单调增、一个单调减链,计算每个元素最为最大值或最小值被计算的次数。num[i]记录对于元素a[i]最为最大值或者最小值往左能走的最远距离,这道题其实和poj那个算矩形的差不多,每次元素出栈的时候就能计算出该元素的右边界。然后就有计算这个元素的贡献:ans-=(num1[S1.top()]*(i-S1.top())*a[S1.top()])对于相等的元素出不出栈都行...

2019-07-19 16:41:00 119

转载 2019牛客暑期多校训练营(第一场)

A Equivalent Prefixes求对于序列a、b满足1<=l<<=r<<q所有相同区间的最小值下标相同的最大q对于元素a[i],如果a[i]满足,前提条件是a[i-1]一定满足,因为1~i包含1~(i-1)的所有区间,那么就是从左到右扫,找到第一个不符合的i,那个i-1就是结果。对于每个元素暴力枚举显然不行,是O(n^2)。一定需要前面...

2019-07-19 09:49:00 42

转载 (区间最值差)C - Balanced Lineup POJ - 3264

区间最值差,线段树维护一个最大值,一个最小值。查询时,max-min就是结果 1 #include <iostream> 2 #include <cstring> 3 #include <vector> 4 #include <algorithm> 5 #define lson l,m,rt<<1 6...

2019-07-17 15:28:00 143

转载 区间覆盖 B - Count the Colors

和上一题的区别在于这个题是对区间染色,上一题是点染色,区间比点少1对于左右边界a、b,右边界b不变,左边界变为a+1即可统计区间个数,所以要把每种染色的左右边界记录下来,看是否相连,不相连染色区间数+1 1 #include <bits/stdc++.h> 2 #include <iostream> 3 #include <cstri...

2019-07-17 13:03:00 120

空空如也

空空如也

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

TA关注的人

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