自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 博客搬家(更新)

新博客地址!!!!!!!!!!!!!

2019-11-14 17:14:33 154 1

原创 二维前缀和+二维差分

原题链接二维前缀和pre[i][j]=pre[i-1][j]+pre[i][j-1]+a[i][j]-pre[i-1][j-1]一维差分要修改2个位置即(l->r)p[l]+=xp[r+1]-=x二维差分要修改4个位置即(i,j)->(x,y)p[i][j]+=xp[x+1][j]-=xp[i][y+1]-=xp[x+1][y+1]+=x#include <bits/stdc++.h>using namespace std;int n,m;class So

2022-01-11 18:24:42 280

原创 codeforces(D. Dogeforces) 并查集

原题链接排序+并查集代码://#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie

2021-03-04 14:04:23 238 1

原创 系数 (牛客)lucas

实际就是求C(2*n,k)%3代码://#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.

2021-03-03 21:27:46 162 1

原创 codeforces C2. Pokémon Army (hard version)(模拟)

原题链接//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie

2021-02-25 23:21:11 132

原创 codeforces(D. Rescue Nibel!)(排序,二分)

原题链接//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie

2021-02-24 12:28:34 97

原创 codeforces(E. XOR Inverse) 字典树(异或)

原题链接//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie

2021-02-23 10:23:44 139

原创 codeforces(D. Make Them Equal) 构造

原题链接将所有数都加到1上,再从1平分到所有数中//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false

2021-02-22 19:31:21 131

原创 codeforces(D. Returning Home)(建图+dijkstra)

原题链接//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie

2021-02-21 23:46:40 119

原创 codeforces(E. Paired Payment)(dijkstra 多维)

原题链接//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie

2021-02-21 22:57:00 162

原创 codeforces(D. Max Median)二分答案

原题链接//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie

2021-02-19 22:41:14 188

原创 codeforces(C. Row GCD)gcd更相减损术

原题链接gcd(a,b)=gcd(a,b-a)gcd(a,b,c)=gcd(a,b-a,c–b)gcd(a1,a2,a3,···,an-1,an)=gcd(a1,a2-a1,a3-a2,···,an-1-an-2,an-an-1)代码://#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/st

2021-02-11 11:35:32 150 1

原创 Atcoder E - Magical Ornament(状压dp+bfs)

原题链接建图,用bfs预处理出k个点两两之间的最短距离,再用状压DP求解d[i][j]表示当前状态为i,且当前在j点上(1<=j<=k)//#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bits/stdc++.h>#define pb push_back#define ll lo

2021-01-31 20:55:45 161

原创 奶牛异或(字典树求异或极值)

原题链接题意:给你n个数求一段区间[l,r]使得该区间的异或和最大,若有多个,求区间右端点最小的那个,如果还有多个,求区间长度最段的那个思路:先求一个异或前缀和,假设最后答案是[x,y]区间,那么就是[1,x]区间的异或和 与 [1,y]区间的异或和 异或的结果,用为每一个前缀和构造0-1字典树(从高位到低位),然后枚举前缀和pre[i] 在字典树上查询。同样的,也可以求树上的一条路径(u,v)间的异或极值代码://#pragma GCC optimize("Ofast")//#pragma

2021-01-31 16:47:07 157

原创 codeforces(D. Nezzar and Board) 裴蜀定理

原题链接n个数,每次可以从数组中选择一个x和一个y,将2*x-y添加到原数组中,问是否能构造出k仔细想一下,最后的k,一定是某一个基数x[i] 加上 若干任一一对数的差的和因此对于每个k-x[i],若可以整除gcd(x[2]-x[1],x[3]-x[2],…x[n]-x[n-1]) 即为YES代码://#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("un

2021-01-29 12:42:39 1321 2

原创 洛谷月赛 魔法(二分)

原题链接先进行若干次操作1,再进行若干次操作2,不会交叉操作操作1肯定对全区间操作操作2的次数可以枚举,最多30几次,2的30次方已经大于s的最大值1e9了1的操作次数可以二分二分的query函数求一下最大子段和,即最大连续子区间的和代码://#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#pragma GCC optimization ("unroll-loops")#include <bit

2021-01-25 22:46:35 83

原创 2020 ICPC 南京站 F题(Fireworks)

原题链接emmmm,概率论没学好,没思路。最优情况是制作k个烟花,放一次烟花,如此往复循环,直到出现一次完美烟花。对于每一次操作的时间为k*n+m该实验符合几何分布,即前k-1次实验失败,第k次实验成功概率为1-(1-p)k期望为1/(1-(1-p)k )所以公式就出来了:(k *n+m)/(1-(1-p)k )这是个凹函数,三分极值点即可代码://#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#

2021-01-25 20:15:05 513

原创 codeforces(C. Perform Easily)双指针

题目链接先给你6个数 a1 ~ a6还有n个数b1 ~ bn对于 b[i](1<=i<=n) 选择a1 ~ a6的任意一个减去,问最后b数组中的最大值与最小值的差的最小值为多少。对于每个bi 每个ai都减一次放进数组c中,最后形成一个长度为6*n的数组c,排个序,跑个双指针(两个指针区间里的都至少包含一个 bi 就更新ans)。代码://#pragma GCC optimize("Ofast")//#pragma GCC target("avx,avx2,fma")//#prag

2021-01-14 17:30:07 212 1

原创 codeforces(E. Carrots for Rabbits)贪心

题目链接给你n个数,每个数再被切分若干份(整数),比如5可以切分为2、3或2、2、1等通过切割将n个数变成k个数,使这k个数的平方和最小。一开始是想将所有数放在一个优先队列里,每次取出最大的一分为二,但这样是不行的。一个数切分后要想平方和最小,肯定要均分,设一个数当前的减少量为now,增加一次切分次数后的减少量为next,用一个堆维护next-now即可。(比如10的平方和为100,切分一次后的平方和为50,减少量为50)代码://#pragma GCC optimize("Ofast")//

2021-01-13 15:20:10 290 1

原创 codeforces(D. Bandit in a City)思维

题目链接给一个有向图,就是一棵树,1为根节点,每个点都有一些权值,将所有点的权值都分配到所有叶子节上,怎样分配使得权值最大的叶子节点的权值最小。dfs,对每个结点,计算以其为根的叶子节点的个数,若想满足题意,权值肯定是平均分给叶子节最好,但是有可能有一些节点本身权值就很大,如下图,因为4号节点权值过大,3号节点就算将权值全分给8、9、10也抵不上.最后计算结果还是按照将以该节点为根的子树的权值和平均分配来算,如果出现上图的情况,在计算到节点4时会更新结果。代码://#pragma GCC opt

2021-01-13 15:12:53 127

原创 2020 ICPC上海站D题 Walker

分类讨论+二分题目链接:https://ac.nowcoder.com/acm/contest/9925/D比赛的时候想到用二分,但当时想的是二分时间,唉,就不会转变一下思维去二分路程。而且当时分类讨论的的情况很细,情况太多了没法写,也应该想到去设置一个中间点。思路:总体分为3种:1、由某一个人走完全程。2、两人对着走,直到两人都走到头。3、二分p1和p2之间的中间点,中间点左边的由p1走完,中间点右边的由p2走完。代码://#pragma GCC optimize("Ofast")/

2021-01-11 22:09:25 362

原创 codeforces(E. Long Permutation)康托展开

题意:给你一个n和q,1~n个数和q次查询n表示1到n的全排列,一开始是1,2,3····n-1,n查询有两种1 x表示将当前的排列往后递推x次,比如现在是[1,2,3,4]->[1,2,4,3](这是递推了1次)按照字典序2 x y输出排列中第x个数到第y个数的和思路:我们晓得全排列的复杂度是n!比如5的全排列有5!=120种但题目给的x是1e5的,并且q是2e5,所以题目给的排列最坏情况下会递推x*q次,也就是2e10次而14个数的全排列为14!高达87178291200次!

2020-11-06 21:54:07 196

原创 E. Make It Increasing(DP最长不下降子序列)

题意:一个数组a(长度为n),还有数组b(长度为k),其中数组b中存的是位置,在数组a中这些位置的数不可以改变,其余位置的数可以随意改变,问能否是a变成一个上升序列,能的话最小的操作次数是多少首先判断一下能否使a变成上升序列(略)然后将a划分为k+1个区间,每个区间单独计算将每个区间处理一下比如一段序列:2、3、5、7、8、6、10每个数减去其相应的位置然后序列变为:1、1、2、3、3、0、3可以看出该序列的最长上升子序列为处理后的最长不下降子序列,其中该区间是被b数组固定的,因此该区间前后.

2020-10-29 17:35:55 517

转载 头文件加速

#pragma GCC optimize(3)#pragma GCC target("avx")#pragma GCC optimize("Ofast")#pragma GCC optimize("inline")#pragma GCC optimize("-fgcse")#pragma GCC optimize("-fgcse-lm")#pragma GCC optimize("-fipa-sra")#pragma GCC optimize("-ftree-pre")#pragma GCC

2020-10-10 16:53:33 226

原创 CodeForces(C. Watching Fireworks is Fun)DP单调队列优化

题意:有一个小镇,有1~n共 n 处位置,有 m 个烟花表演,第 i 个烟花会在第 ti 时间绽放,绽放位置为 ai,你在每个时刻会在某个位置 w,当第 i 个烟花绽放时,你处在位置 w,你会得到 bi-|ai-w| 的高兴值,你每个单位时间可移动0 ~ d个长度,求 m 场烟花表演后最大的高兴值和最大为多少定义d[i][j]为第i场烟花在位置j时的最大高兴值和为多少显然d[i][j]由d[i-1][k]的max转移过来,k为 j-(t[i]-t[i-1])*d ~ j+(t[i]-t[i-1])*d.

2020-08-18 18:55:17 153

原创 洛谷(P4933 大师)DP

先练他几十道DP,就不信还不会题意:大体就是求等差子序列的个数(公差可以为负)定义 d[i][j] 表示以 i 结尾且公差为 j(j>=0) 的子序列的个数定义 f[i][j] 表示以 i 结尾且公差为 j(j<0) 的子序列的个数有了状态表示状态转移就很明显了代码:#include <bits/stdc++.h>#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);c.

2020-08-17 20:13:20 182

原创 Codeforse(E. Two Types of Spells)set模拟

题意:就是给若干个技能,每个技能有不同的伤害,技能只有两种,一种雷,一种火,可以自定义技能释放顺序,使用一次雷元素技能可以使下个技能伤害翻倍。n次操作,每次操作会学习或忘记一种技能(一开始啥技能也不会),计算每次操作后能释放的最大伤害值。用set模拟就行了,过程一定要清晰明了,注意细节代码:#include <bits/stdc++.h>#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(..

2020-08-16 16:15:08 185

原创 Codeforces(D. Odd-Even Subsequence)二分+奇偶选数

从序列s中选一个子序列a要求a中的奇数下标的数的最大值为u,偶数下标的数的最大值为v,ans=min(u,v)求最小的ans二分答案,然后判断答案是否满足即从s中取一串不连续的数,这些数都小于等于要判断的值并把这串数分别从当做奇数下标和偶数下标分别取一次代码:#include <bits/stdc++.h>#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0..

2020-08-11 16:51:35 166

原创 Codeforces(D. 505)状压DP

亏我上上个星期还写过状压DP专题,1个多小时硬是没反应过来这题是个状压,一直还当成一个普通二维DP去想状态表示,宛如个智障一样代码:#include <bits/stdc++.h>#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);template<class T> inline void read(T &x){ x=0; regis

2020-08-10 11:34:30 403

原创 Codeforces(D. Rarity and New Dress)DP

这场开局半小时没读懂A题意,还闹肚子了(o(╥﹏╥)o),本来想把这场鸽了的,奈何上厕所的时候出了B题思路,然后又打下去了。rank+29,又是在1700左右徘徊,关注列表又一个好友上紫了,我啥时候也能上紫啊啊啊啊(o(╥﹏╥)o)D题暴力写了一发WA5(连TLE的样例都没到就给我WA了),DP题做的还是太少了啊,得去搞个DP专题练练了题意:就是找给定区域里有多少个斜45度正方形,正方形内的字母必须都一样枚举每个点,f[i][j]表示以该点为(正方形最低端的点)的正方形的边长最大是多少,z[i]

2020-08-08 18:36:17 172

原创 洛谷-炮兵阵地(状压DP)

原题链接代码:#include <bits/stdc++.h>#define ll long long#define IOS std::ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);template<class T> inline void read(T &x){ x=0; register char c=getchar(); register bool f=0; while(!isdigit

2020-07-27 10:22:41 121

原创 Codeforces(D. Unmerge)DP

题意:给你一个n,和2*n个数的序列,问能否由两个长度为n的数组构造出这个序列,构造过程为每次从两个数组中取排在第一个数中小的那个数。solution:将原序列分块,比如一个序列1、4、2、5、3,1为一个块,4和2为一个块,5和3位一个块,最后跑一遍0-1背包看这些块能否恰好拼成n代码:#include <bits/stdc++.h>#define ll long longusing namespace std;ll a[20005];ll w[20005],f[20005],

2020-07-23 11:27:19 150

原创 codeforces(E. Johnny and Grandmaster)贪心

排好序,从大到小贪心分配即可,比如当一个数K分配给了A集合,那么剩下的数如果凑不出K,那么他们的和就一定小于K,注意判断相等要再加一个模数。代码:#include <bits/stdc++.h>#define ll long longusing namespace std;ll mod1=1000000007,mod2=1610621741,mod3=1000000009,n,p;ll a[1000005];ll apow(ll a,ll b,ll mod){ ll .

2020-06-05 21:54:08 155

原创 Codeforces(E. Magic Tricks)DP

题意:n张牌,编号从1到n,m次交换,n张牌中有一张特殊牌,m次交换可以取消若干次,问将特殊牌移动到每个位置时所需的最小取消次数思路:记录特殊牌的出现位置,按照题意DP即可。。。。代码:#include <bits/stdc++.h>#define ll long longusing namespace std;ll x[200005],y[200005],inf=1e9+9;struct node{ ll pos; ll flg,w; ll ans;.

2020-05-31 15:00:55 156

原创 Codeforces edu 88(A~E)

A题.Berland Poker读懂题意即可代码:#include <bits/stdc++.h>#define ll long longusing namespace std;int main(){ ll t,n,m,k; scanf("%lld",&t); while(t--) { scanf("%lld %lld %lld",&n,&m,&k); ll op=n/k;

2020-05-29 20:50:46 223

原创 Codeforces(D. The Best Vacation)

昨晚的C题耽误了太多时间了,用了一个多小时才A掉,前期推式子推不出来,到最后打了个表一眼就看出规律了(懊悔了一晚上,早打表就好了)D题是以每个月的最后一天为x的结尾,然后枚举即可,再加上一个前缀和计算。代码:#include <bits/stdc++.h>#define ll long longusing namespace std;ll a[400005];ll sum[400005],s[400005],f[400005],all[400005];int main(){.

2020-05-27 11:53:47 173

原创 codeforces E. Monotonic Renumeration(线段树做法)

蛮水的一道题,就是线段覆盖。可用线段树维护区间值,若某区间总和为0,则说明该区间任何一个点都没有被覆盖代码:#include <bits/stdc++.h>#define ll long longusing namespace std;struct qq{ ll w,ip;}q[200005];ll a[200005],d[200005],mod=998244353;struct node{ ll l,r,pre,add;}sum[800005];b.

2020-05-23 12:22:08 114

原创 华为杯山理校赛

去年的比赛了昨天浏览山理的官网,偶然看到的有一说一,山理对算法竞赛的重视程度确实高别人学校的OJ真的好唉。。。注册了账号,当成模拟赛打了一把,自闭。。。A题签到题代码:#include <bits/stdc++.h>#define ll long longusing namespace std;int main(){ int a,b; cin>>a>>b; if(b%2!=0) { if(a%2

2020-05-21 11:48:20 138

原创 Codeforces edu 87(D. Multiset)树状数组+二分

给你一串数组a(有序),再给你q次操作,每次操作给你一个数k,如果k大于0,则将k按顺序插入到数组a中,若k小于0,则将数组中第 | k | 大的数删除,最后输出数组a中的任意一个数,若数组a中没有数则输出0注意:该题内存限制为28M最先想到用multiset去做,但是由于multiset是集合,没法像数组那样通过下标访问某个元素,遍历的话又会超时。。。。然后就恰饭去了。。。。经大佬点播,用树状数组去维护每个数的个数,比如1,1,2,3,5中,1的个数就是2,即a[1]=2,用树状数组维护这个数组a。

2020-05-19 13:00:03 155

原创 codeforces(E. Restorer Distance)三分

凹函数,三分高度即可代码:#include <bits/stdc++.h>#define ll long longusing namespace std;ll e[200005],sum[200005];ll ans=9223372036854775807,n,a,r,m;ll f(ll x){ ll pos=lower_bound(e+1,e+1+n,x)-e; ll high=sum[n]-sum[pos-1]-x*(n-pos+1); ll lo.

2020-05-17 16:36:08 201

空空如也

空空如也

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

TA关注的人

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