自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 模拟题【数论】光剑

用欧几里得即辗转相除法做即可(就是个水题~)代码如下:#include<bits/stdc++.h>#define ll long longusing namespace std;ll T;ll a,b;ll res;ll gcd(ll a,ll b,ll ans){ if(a==b)return ans; else{ ll t; if(a%b==0)t=b,ans+=a/b-1; else t=a%b,ans+=a/b; return g..

2020-10-06 13:39:13 336

原创 模拟题【最短路】迷宫

迷宫【题目描述】破了魔法阵后,亮亮进入了一座迷宫。这座迷宫叫做“梦境迷宫”,亮亮只有走出这座迷宫,才能从睡梦中醒来。梦境迷宫可以用无向图来表示。它共有nnn个点和mmm条双向道路,每条道路都有边权,表示通过这条道路所需的时间,且每条道路可以多次经过。亮亮位于一号点,而出口则是nnn号点。原本,亮亮该找到一条最短路,快速冲出迷宫,然而,梦境迷宫的特殊之处在于,如果沿着最短路到达出口,亮亮就永远陷入梦境。因此,亮亮必须寻找一条次短路。次短路的长度须严格大于最短路(可以有多条)的长度,同时又不大于所有除最短

2020-10-04 19:51:40 279

原创 模拟题【二分、动态规划】神光

神光【题目描述】亮亮成功地念出了咒语,石门缓缓地自动移开,一道道绚丽的神光从城堡内激射而出。亮亮好奇而又兴奋地走入了城堡中,迎面有一座极长的魔法阵。魔法阵可以看作一条直线,它被均匀地分成了10000000001 000 000 0001000000000个位置,一个位置可以看成是一个格子。有些位置上筑有法坛,一共NNN座。亮亮只有破了眼前的魔法阵,才能继续前进,而欲破法阵,必须毁掉所有的法坛。亮亮身前有两根法杖:一根颜色血红,能发红色神光,光芒可以笼罩连续LLL个位置,并摧毁这LLL个位置上所有的法

2020-10-04 19:37:56 1205 2

原创 模拟题【枚举计数】咒语

咒语【题目描述】亮亮梦到自己来到了魔法城堡,但一扇巨大的石门阻拦了他通向城堡内的路。正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条。亮亮拿起纸条的一端,只见上面写着打开机关的方法:“打开机关需要念动符咒,咒语是一串长为LLL 的由000和111组成的字符串。在这张长纸条上列了nnn个长为LLL的字符串,正确的咒语即是在纷繁的 2L2^L2L种字符串中,与这些纸条上的字符串相异度之和最小,并且在满足这一条件下,000的个数最多的字符串。两个字符串的相异度定义为对应位置不相等的字符对的个数

2020-10-04 19:21:30 185

原创 模拟题【图论、分类讨论】魔法森林

魔法森林【题目描述】亮亮在梦中游历了魔法城堡后,对此心驰神往,于是用自己制造的法杖,创造了一片魔法森林。这片森林中一开始有nnn个节点,没有边相连,若想要在第iii个点和第jjj个点之间建立一条双向通路,则需花费CijCijCij的魔法值。每个结点上住着一个魔法居民,若两个节点间有边直接相连,则他们就成为了邻居。居民一共有三种类型:①村民:他们只能通过道路拜访自己的邻居。②巫师:他们可以拜访自己的邻居以及邻居的邻居。③大魔法师:由于他们拥有法力,因此可以拜访所有与自己连通的人。亮亮不希望有人

2020-09-27 08:24:21 302

原创 模拟题【质因数分解、排列组合】桃园之礼

桃园之礼【题目描述】小林和亮亮在桃园里一起玩游戏。桃园里的桃树成行成列,刚好构成一个N×MN×MN×M的矩阵,亮亮在某些桃树下放置了一些小礼物,要求小林把所有树下的礼物全部收集起来。小林从左上角的桃树(1,1)(1,1)(1,1)出发,走到右下角的桃树(N,M)(N,M)(N,M)。他只能沿着路径向下或者向右走,某些桃树下有礼物,他必须到达所有有礼物的树 下并把礼物收集起来。小林在出发前,想请你帮他计算一下,他有多少种不同的走法。由于答案可能很大,你只需要输出答案模100000000(108)10000

2020-09-27 08:13:47 261

原创 模拟题【字符串、枚举、贪心】字符串

字符串【题目描述】小林与亮亮正在做一个游戏。小林随意地写出一个字符串,字符串只由大写字母组成,然后指定一个非负整数mmm,亮亮可以进行至多mmm次操作,每次操作为交换相邻两个字符。亮亮的目标是使得操作后的字符串出现最长相同的字符的长度最大。你能帮亮亮计算一下这个最大长度是多少吗?【输入格式】第一行一个字符串SSS。第二行一个整数mmm。【输出格式】只有一个整数,表示所求的最大长度。【样例输入】ABCCDCDDC4【样例输出】4【数据规模】对于20%20\%20%的数据,

2020-09-27 07:58:36 186

原创 初赛模板复习

全部来自acwing算法基础课一、基础算法1、快速排序(1)快速排序#include<iostream>#include<cstring>#include<algorithm>#define N 100000+10using namespace std;int n,q[N];void quick_sort(int q[],int l,int r){ if(l>=r)return; int i=l-1,j=r+1,x=q[l+

2020-09-19 14:08:04 324 1

原创 【网络流】最小割:算法模板,直接应用

算法模板Dinic/ISAP求最小割原题链接由最大流最小割定理得:最大流===最小割代码如下:#include<bits/stdc++.h>using namespace std;const int N=10000+10;const int M=200000+10;const int INF=1e9;int n,m,S,T;int h[N],ve[M],c[M],ne[M],id;int d[N],q[N],cur[N];void add(int x,int y,

2020-08-11 14:37:05 238

原创 【网络流】最大流:最大流判定,拆点,建图实战

最大流判定秘密挤奶机原题链接给出一张包含NNN个点,PPP条边的无向图,1→N1\rightarrow N1→N走TTT次,每条边最多走111次。问:TTT条路径中最大边权的最小值。用dinic+dinic+dinic+二分。判定问题:在无向图中,删除大于midmidmid的边,查找边权≤mid\leq mid≤mid的边,1→N1\rightarrow N1→N是否存在TTT条没有公共边的路径。建图:将无向图变为有向图:S=1,T=nS=1,T=nS=1,T=n,最大可行流流量===路

2020-08-11 11:09:10 663 2

原创 【网络流】最大流:上界可行流,多源汇,关键边

上下界可行流无源汇上下界可行流原题链接可行流满足:①流量守恒②容量限制:cl(u,v)≤f(u,v)≤cu(u,v)c_l(u,v)\leq f(u,v)\leq c_u(u,v)cl​(u,v)≤f(u,v)≤cu​(u,v)与一般的可行流不同的是,某一边流量有给定的上下界。建图:流网络为GGG,GGG中的某一个可行流记为fff,无源点与汇点,且有上下界。对于(G,f)(G,f)(G,f),我们要建立一个(G′,f′)(G',f')(G′,f′)与(G,f)(G,f)(G,f)对应,且为正

2020-08-07 15:59:09 537

原创 【网络流】最大流:算法模板,二分图匹配

求最大流Ek算法 时间复杂度:O(nm2)O(nm^2)O(nm2)给一个流网络,维护残留网络。while ①在当前的残留网络里找增广路(bfs):f' ②更新残留网络:把当前的残留网络 Gf 更新为新流的残留网络 G(f+f') ①简单的遍历,用bfsbfsbfs即可。②假设当前残留网络里正向边的容量为c1c_1c1​,反向边的容量为c2c_2c2​,且增广路径流了kkk的流量,正向边的容量变为c1−kc_1-kc1​−k,反向边的容量变为c2+kc_2+kc2​+k。更新:一旦找到一

2020-08-06 15:16:26 883

原创 【网络流】网络流的基本概念

流网络:G=(V,E)G=(V,E)G=(V,E)①有向图,可有环,不考虑反向边。②对于每条边,都有c(u,v)c(u,v)c(u,v),称为边的容量。③有两个特殊的点,源点sss、汇点ttt。可行流:fff①不考虑反向边。②需要满足的条件:容量限制:0≤f(u,v)≤c(u,v)0\leq f(u,v) \leq c(u,v)0≤f(u,v)≤c(u,v)流量守恒:∀x∈v{s,t},∑(v,x)∈Ef(v,x)=∑(x,v)∈Ef(x,v)\forall x\in v \{s,t\},

2020-08-04 08:15:12 253

原创 【整除】教堂 church

答案与m,n的奇偶性有关,考虑特殊情况。#include<bits/stdc++.h>using namespace std;int n,m;double ans;int main(){ freopen("church.in","r",stdin); freopen("church.out","w",stdout); scanf("%d%d",&n,&m); if(n==1||m==1)ans=(double)(n+m-2)*2; else

2020-06-02 16:20:44 315

原创 CSP初赛基础知识整理

一、硬件计算机发展:年代元件第一代1946~1958电子管第二代1959~1964晶体管第三代1965~1970集成电路第四代1971~?大规模集成电路世界上第一台计算机:ENIAC(1946.2,美国宾西法尼亚大学)冯诺依曼理论(美籍匈牙利数学家)①采取二进制②存储程序,程序控制③五大部件:运算器、控制器、存储器、输入设备、输出设备运算器:进行算数运算与逻辑运算组成:①算数逻辑运算部件(ALU)②累加器 ③状态寄存器及通用寄存

2020-05-13 21:33:50 2707

原创 【数论 高等数学】跑步

原题链接模型:把n拆成若干个正整数的方案数。拆分时顺序是无所谓的。n=2+1+1=1+2+1 为一种方案4=4=3+1=2+2=2+1+1=1+1+1+1 一共五种方案整数划分问题缩小n的范围。1<=n<=1000整数划分方法一:完全背包把1~n看作n个物品,每个物品的体积为1,问:装满背包的情况下方案数是多少。方法二:换一种状态表示 f[i][j]:总和为j,一共有i个数答案:f[n][1]+f[n][2]+f[n][3]+…+f[n][n]前两种做法的时间复

2020-05-13 21:07:55 412

原创 并查集知识点总结

1、存储int fa[N];2、初始化for(int i=1;i<=n;i++) fa[i]=i;3、Get操作+路径压缩int get(int x){ if(x==fa[x])return x; return fa[x]=get(fa[x]);}4、Merge操作void merge(int x,int y){ fa[get(x)]=get(y);}【例题1】格子游戏【例题2】搭配购买(并查集+01背包)【例题3】程序自动分析5、边带权、扩展域 并查集【

2020-05-13 20:40:23 140

原创 2020.5.9测试 T3 数星星

原题链接树状数组裸题。用单点增加操作与区间查询操作即可。处理时别忘了x右移。代码如下:#include<bits/stdc++.h>#define N 32000+10using namespace std;int n,x,y;int c[N],k[N];void add(int x,int y){ for(;x<=N;x+=x&-x)c[x]+=y;}int ask(int x){ int ans=0; for(;x;x-=x&-x)an

2020-05-10 10:32:35 168

转载 2020.5.9测试 T2 选择客栈

题解转发自:https://www.cnblogs.com/zzyh/p/7427804.html题目描述丽江河边有n 家很有特色的客栈,客栈按照其位置顺序从 1 到n 编号。每家客栈都按照某一种色调进行装饰(总共 k 种,用整数 0 ~ k-1 表示),且每家客栈都设有一家咖啡店,每家咖啡店均有各自的最低消费。两位游客一起去丽江旅游,他们喜欢相同的色调,又想尝试两个不同的客栈,因此决定分别住在色调相同的两家客栈中。晚上,他们打算选择一家咖啡店喝咖啡,要求咖啡店位于两人住的两家客栈之间(包括他们住的

2020-05-10 10:27:37 182

原创 2020.5.9测试 T1 算

题目:sumsumsum=11+12+⋅⋅⋅+1M+21+22+⋅⋅⋅+2M+⋅⋅⋅+N1+N2+⋅⋅⋅+NM=1^1+1^2+···+1^M+2^1+2^2+···+2^M+···+N^1+N^2+···+N^M=11+12+⋅⋅⋅+1M+21+22+⋅⋅⋅+2M+⋅⋅⋅+N1+N2+⋅⋅⋅+NM=M+2M+1−22−1+3M+1−33−1+⋅⋅⋅+NM+1−NN−1=M+\frac{2^{M+1}-2}{2-1}+\frac{3^{M+1}-3}{3-1}+···+\frac{N^{M+1}-N

2020-05-09 15:33:30 148

原创 【并查集】程序自动分析

原题链接规模太大,先用离散化缩小。①考虑所有相等条件,把所有相等的变量捆绑进同一个集合中。②考虑所有不等条件,若两个变量处于同一集合中,则证明无法同时满足这两个条件。代码实现:#include<bits/stdc++.h>#define N 100000+10using namespace std;int n,m;int a[2*N],fa[2*N];int x...

2020-05-03 11:11:59 195

原创 快读模板

inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();) return x*f;

2020-05-03 11:02:28 173

原创 离散化

void discrete(){ sort(a+1,a+n+1); for(int i=1;i<=n;i++) if(i==1||a[i]!=a[i-1]) b[++m]=a[i];}vodi query(int x){ return lower_bound(b+1,b+m+1,x)-b;}

2020-05-03 10:58:42 194

原创 【并查集】搭配购买

原题链接并查集+01背包。先将需要搭配购买的云用并查集绑定,再利用01背包求出价值的最大值。代码实现:#include<bits/stdc++.h>#define N 10000+10using namespace std;int n,m,w;int c[N],d[N];int u,v;int fa[N];int vv[N],ww[N];int f[N];i...

2020-05-03 07:39:19 902

原创 【并查集】格子游戏

原题链接并查集裸体。如果将要用线连接的两个点位于同一个集合内,那么当前操作可以围成一个封闭的圈。否则,将两点合并到同一集合内。代码实现:#include<bits/stdc++.h>#define N 1000000+10using namespace std;int n,m,ans=0;int f[N];int get(int x){ if(f[x]==x...

2020-04-28 16:11:11 547

原创 【最短路】昂贵的聘礼

原题链接难点在于构图。先建一个虚点,连上所有的物品,代价为直接买物品的价值。再连上可用某物品换取优惠的点,价值为优惠价(由需要的物品指向要买的物品),再枚举等级区间,算出所有在此等级中的点的最短路,再取最小值。代码实现:#include<bits/stdc++.h>#define N 100+10using namespace std;int d[N],l[N],a[N...

2020-01-20 13:19:14 216

原创 【最短路】最优乘车

原题链接连好每个车站可以直接到达的点,设定距离为1,算出此时构成的图的最短路,实际意义为上车数,减1即为换车数。代码实现:#include<bits/stdc++.h>#define N 500+10using namespace std;int n,m;int d[N],bus[N],used[N];int a[N][N];vector<int>v[N...

2020-01-20 09:00:35 269

原创 【最短路】新年好

原题链接老师讲解是:1、先预处理出以1、a、b、c、d、e出发到其他所有点的单源最短路径。2、DFS所有拜访顺序,(5!),对于每一种摆拜访顺序,可以通过查表的方式,算出最短距离。我:极其讨厌dfs的我直接放弃选择枚举。代码实现:#include<bits/stdc++.h>#define N 50000+10using namespace std;int n,m...

2020-01-19 14:59:41 265

原创 【最短路】最小花费

原题链接可以从后往前做。假设已经收到了100元,可以求出最少需要几元可以获得100元,算出一条最短路,推出最开始需要的钱。数据小,用朴素版的Dijkstra可以过。代码实现:#include<bits/stdc++.h>#define N 2000+10using namespace std;int a[N][N];int v[N];int st,ed,n,m;d...

2020-01-19 11:27:52 277

原创 【最短路】香甜的黄油

原题链接枚举所有的牧场,每次算出所有点到此牧场的最短路,再累加所有奶牛喜欢的牧场的最短路,比较得出最小值。数据规模对spfa比较友善。#include<bits/stdc++.h>#define N 500+10#define M 800+10using namespace std;int ans=1e9;int c,n,m;int cow[N],d[M],used[...

2020-01-19 09:46:43 270

原创 【最短路】信使

原题链接数据非常小,可以用Floyd。用Floyd求出节点1到所有节点的最短路,答案即为这些最短路中最长的一条。代码实现:#include<bits/stdc++.h>#define N 100+10using namespace std;int d[N][N];int n,m;int main(){ cin>>n>>m; ...

2020-01-19 09:03:58 248

原创 【最短路】热浪

原题链接数据规模十分良心,相当于是一个最短路算法裸题,打一遍模板即可。代码实现:(此为spfa)#include<bits/stdc++.h>#define N 2500+10using namespace std;int n,m,st,ed;int d[N],used[N];vector<int>v[N];vector<int>val[N]...

2020-01-19 08:50:30 255

原创 最短路问题的模板复习

大部分摘自《算法竞赛进阶指南》单源最短路问题Dijkstra(边权为非负)朴素版原题链接算法流程:1、初始化dist[1]=0,其余节点的dist值为正无穷大。2、找出一个未被标记的dist[x]最小的节点x,然后标记节点x。3、扫描节点x的所有出边(x,y,z),若dist[y]>dist[x]+z,则使用dist[x]+z更新dist[y]。4、重复上述的两个步骤,...

2020-01-18 08:55:41 202

原创 2019.11.29 T2【动态规划】 不等数列(num)

T2【题目描述】将111到nnn任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”“>”“>”和“<”“<”“<”。问在所有排列中,有多少个排列恰好有kkk个“<”“<”“<”。答案对201220122012取模。【输入格式】第一行222个整数n,kn,kn,k。【输出格式】一个整数表示答案。【样例输入】5 2【...

2019-12-02 20:52:31 219

转载 11.24模拟赛

全国信息学奥林匹克联赛(NOIP2014NOIP2014NOIP2014)复赛模拟题 Day1Day1Day1长乐一中题目名称正确答案序列问题长途旅行英文名称answersequencetravel输入文件名answer.insequence.intravel.in输出文件名answer.outsequence.outtravel.out...

2019-11-24 11:04:34 181

原创 2019CSP游记

CSPday1说实话,我真的一点儿也不紧张。第一题直接找规律,但是我没有注意到是2的64次,以致于没有开unsigned long long。调了半个小时左右,感觉小问题还挺多的。最后总算调出来了。虽然数据类型出了错,不过我不慌。第二题直接打部分分,就是第i个节点的父节点是第i-1个节点,于是我十分快乐地开始打部分了。打了之后调,调了一个半小时。不慌不慌。第三次看到链和菊花的那一刻我是十分...

2019-11-18 22:06:46 175

原创 山东游记:CSP第二轮前的最后几天

初赛之后浙江咕了老久,我第一轮的成绩是75.5,这个成绩十分危险,按照往年是过不了的。但是这次的机位增加到了一千多台,我就过了。不得不说,受宠若惊的感觉。11.5上完上午的三节课后,信息竞赛的小伙伴们集结完毕,准备向山东进军。每个人心中都有一件非常开心的事情——不用期中考了!不用面对可怕的政史地了!十点多的时候就吃了午饭,两位家长开车载我们到达了义乌的火车站。来之前看了一下地理书上的地图,...

2019-11-13 19:53:02 312

原创 a【思维题】山东集训day9T1:CF991D Bishwock

这是一道原题,地址如下:CF991D BishwockA题目描述给一个2×n2\times n2×n的网格,上面一些位置以及被覆盖上了现在你有一种形状为L的小块,每个由三个小格组成,构成L型现在问你,当前的网格最多还能摆多少小块(不能覆盖以及覆盖过的格子)输入格式两行两个字符串由X,.组成,X表示被覆盖了,.表示还没有输出格式一行一个整数样例样例输入00X00X0XXX0...

2019-11-13 18:30:22 231

原创 b【二叉树】山东集训day9T2:CF1010D Mars rover

这道题是一原题,地址如下:CF1010D Mars roverB题目描述给你一棵二叉有根树,根为1,节点数为n。每个节点有五种情况,AND表示&运算有两个子节点,OR表示|运算有两个子节点,XOR表示^运算有两个子节点,NOT表示!运算有一个子节点,和IN表示这个节点没有子节点,是初始节点,01状态由读入决定。现在,我们并不能局限于现在的树,我们要进行改变!我们同时只可以改变一...

2019-11-13 16:52:50 194

原创 a【思维题】山东集训day8T1

T1 A题目描述一开始,你拥有一个饼干现在有三种操作一种是将手里的饼干数量+1+1+1一种是将手里的AAA个饼干换成111¥一种是将111¥换成BBB个饼干求出在KKK次操作后最多多少饼干输入格式一行三个整数,K,A,BK,A,BK,A,B输出格式一行一个整数表示答案样例输入4 2 6输出7数据范围子任务分值ABK30A≤10A...

2019-11-12 16:02:20 191

空空如也

空空如也

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

TA关注的人

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