
2020 暑期集训
几乎所有的板子
paranoidZ
这个作者很懒,什么都没留下…
展开
-
AtCoder Beginner Contest 176
AtCoder Beginner Contest 176Acode:#include<iostream>#include<cmath>using namespace std;int n,x, t;int main(){ cin>>n>>x>>t; double a=n*1.0/x; int ans=ceil(a); ans=ans*t; cout<<ans<<endl; ..原创 2020-08-23 16:47:30 · 92 阅读 · 0 评论 -
2020 8.15 2020 Multi-University Training Contest 8
2020 Multi-University Training Contest 8Clockwise or Counterclockwise思路:Fluctuation Limit思路:先从前议原创 2020-08-16 21:00:39 · 131 阅读 · 0 评论 -
2020 8.3 暑期 背包专题
01背包从前i个物品中选择总重量小于W的总价值最大//二维的写法int dp[N][M];for(int i=1;i<=n;i++)for(int j=0;j<=W;j++)if(j<w[i]) dp[i][j]=dp[i-1][j];elsedp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+v[i]);cout<<dp[n][W];//一维的写法int dp[M];for(int i=1;i<=...原创 2020-08-11 20:49:00 · 122 阅读 · 0 评论 -
2020 8.10暑期最小生成树专题
学习最小生成树之前我们首先来学习一下并查集相关的博客:https://blog.youkuaiyun.com/qq_44797733/article/details/104693392?然后最小生成树的算法大部分都是用加边法Kruskal 算法来写的Highways思路:求最小生成树中的最长的边,并且要使这个最长的边要尽可能的小,这符合最小的生成树的思想,边从小到大找到符合要求的n-1条边code:#include<iost...原创 2020-08-10 21:23:37 · 96 阅读 · 0 评论 -
2020 8.8 2020 Multi-University Training Contest 6
2020 Multi-University Training Contest 6原创 2020-08-09 14:57:24 · 254 阅读 · 0 评论 -
2020 8.7 2020 Multi-University Training Contest 5
2020 Multi-University Training Contest 5Paperfolding思路:通过折纸可以发现,只有上下折纸还有只有左右折纸是一样的,然后再对比一下左右折一次,上下折一次可以发现是不一样的都以2次为例左右(2次) 10上下(2次) 10左右上下(各一次) 9我们可以推出公式然后就是求期望 化简可得code:#include<iostream>#include<cstdio>...原创 2020-08-08 17:04:23 · 194 阅读 · 0 评论 -
2020 8.7 暑期线段树专题
线段树可以在 n*logn 的时间复杂度内实现单点修改、区间 修改、区间查询(区间求和,求区间最大值,求区间最小值) 等操作。在这里顺便把树状数组附上,树状数组只能区间求和时间复杂度也是n*log ncode:#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespa...原创 2020-08-07 15:31:58 · 105 阅读 · 0 评论 -
2020 8.4 线性dp
总结一下,这种问题就是找子问题,由子问题来求当前的问题就这吧 ,还是得多刷题题目连接:https://vjudge.net/contest/387533A - 超级楼梯这个n是40,相当于斐波那契数列f[40]可以背int类型的数据存储f[i]表示到第i层的方法数到第i层可以由第i-2或则i-1层得到f[i]=f[i-1]+f[i-2]\code:#include<iostream> using namespace std...原创 2020-08-05 16:28:53 · 116 阅读 · 0 评论 -
2020 8.3树的直径练习
树的直径,又称树的构 长链。 我们将丆 棵树 T = {V, E} 的直径定义为max(u,v), 也就是说,树中所有最短路径距离的构 大值即为树的直径。 这个树由于没有根结点,其实直径这个概念,还是理解为一 个连通无向无环图的直径也就是说任何两点之间只有一条路,n个点,n-1条边这里介绍两种解法1.俩次BFS或则DFS首先对任意一个结点做 BFS/DFS 求出最远的结点,然后以 这个结点为根结点再做 BFS/DFS 到达另一个最远结点。第一次 BFS/D...原创 2020-08-03 23:34:29 · 265 阅读 · 0 评论 -
2020 7.31 暑期最短路练习
相关的模板可以看下我之前博客dijkstra+heap优化 O(mlogn)只能处理边权为正数的问题。spfa算法 O(km)bellman-ford算法的优化版本,可以处理存在负边权的最短路问题。最坏情况下的时间复杂度是 O(nm)O(nm),但实践证明spfa算法的运行效率非常高,期望运行时间是 O(km)O(km),其中 kk 是常数。floyd算法 O(n3)Floyed算法允许图中有带负权值边,允许有回路,但不允许有带负权值边的回路。标准弗洛伊德算法,三重循环。循环结原创 2020-08-02 10:55:39 · 167 阅读 · 0 评论 -
2020 7.31 Deliver the Cake
Deliver the Cake思路:建立分层图,这里是俩层,上一层L,下一层是R然后我们开始建图:输入边:a b c分别表示a到b长度为cx为额外的代价这里建图的时候有九种情况1.ss[a]=='L' ss[b]=='‘R' a和b+n之间的长度为c+x(b在下层图)2. ss[a]=='L' ss[b]=='M'这里需要连接俩条边分别是 a与b+n之间长度是c+x(b在下层图) a与b之间的长度是c(b在上层图)剩下情况类似然后直接对优化dijkstra跑图求...原创 2020-07-31 17:03:47 · 128 阅读 · 0 评论 -
2020 7.30 Multi-University Training Contest 4
2020 Multi-University Training Contest 4Blow up the Enemyhttp://acm.hdu.edu.cn/showproblem.php?pid=6803思路:儿子选择最优的策略就是用时最少的那个情况,老子等概率随机选择策略,,如果儿子与老子选的都是最优的策略则概率要乘1/2code:#include<iostream>#include<cstdio>#include<algorithm&..原创 2020-07-31 11:13:14 · 220 阅读 · 0 评论 -
2020 7.29 Multi-University Training Contest 3
2020 Multi-University Training Contest 31004Tokitsukaze and Multiplehttp://acm.hdu.edu.cn/showproblem.php?pid=6794题意:给一个包含n个数的线段,问最多可以分成多少段使得每一段的和都是p的倍数,输出段数思路:用map维护前缀和sum%p ,如果ma[sum%p]>0则说明这一段存在一个和是p的倍数,继续下一段的计算,此时字典要清0,且mp[0]=1;code:..原创 2020-07-29 23:59:11 · 784 阅读 · 0 评论 -
2020.7.28暑期集训--拓步排序
拓步排序相关概念拓步排序:对一个有向无环图G进行拓扑排序,是将G中所有顶点排成 一个线性序列,使得图中任意丏对顶点u和v,若 边< u, v >∈E(G),则u在线性序列中出现在v 之前。通常, 这样的线性序列称为满足拓扑次序的序列,简称拓扑序列。 如果图中存在环,则无法进行拓扑排序。 BFS的算法流程:(1) 在图中选择所有入度为零的顶点,加入队列。 (2) 从队列中取出一个点,删除该点及其所有出边(对应点的 入度-1)。 重复(1)...原创 2020-07-29 12:26:59 · 305 阅读 · 0 评论 -
暑期DFS相关练习
DFS深度优先搜索dfs就是从起点出发,走过的要做标记, 从没有标记的点中随意挑一 个往前走,走不了就回退,此种路径搜索策略就称为“深度 优先搜索”,简称“深搜”。就是典型的不撞南墙不回头。 其实dfs就是逻辑的建立的过程 比如说选择一个物品后我们进行下一个物品的选择,但是我们也可以不选择的这个物品然后继续下一个物品的选择,所以有个恢复现场的步骤。有关DFS的习题习题连接:https://vjudge.net/contest/385599...原创 2020-07-28 14:55:57 · 121 阅读 · 0 评论 -
Atcoder-M-SOLUTIONS Programming Contest 2020
Atcoder-M-SOLUTIONS Programming Contest 2020心情不是很好,明天还要补HDU多校第二场,还要复习一下DFS,还要去教我弟,还要给我妹报志愿,虽然事情不是很多,但是心情很糟糕,说出来舒服多了还是先把这个题解给写了吧A - Kyu in AtCoder按题意输出即可,靠我看错了还wa了一发,今晚的心情从这么开始变糟糕code:#include<iostream> using namespace std; int mai.原创 2020-07-25 23:10:18 · 167 阅读 · 0 评论 -
2020 多校联盟(第一场)
2020 HDU多校联盟第一场1004:Distinct Sub-palindromes思路:我们通过观察可以得到当时 ,所有字符串的所有子回文串的个数都是n当时,每中情况都有如下所示,最小有三个子回文串“abcabc......”code:#include<iostream>#include<cstdio>using namespace std;const int mod=998244353;int main(){ int t; cin&..原创 2020-07-25 22:47:22 · 150 阅读 · 0 评论 -
BFS暑期相关练习
BFSBFS是用队列来写的,按层次遍历 (步数从小到大开始)入列的顺序和出列的顺序是一样的,所以用来求最小步数,而DFS是求一条路径(不一定是最短)这就是BFS和DFS的区别通常要设置结构体保存坐标和步数,起点的步数为0,一般都是求最小步数。如果每一步的步数不是+1那么就需要用到优先队列了下面这个题是求最小不步数的,献给阿尔吉侬的花束阿尔吉侬是一只聪明又慵懒的小白鼠,它最擅长的就是走各种各样的迷宫。今天它要挑战一个非常大的迷宫,研究员们为了鼓励阿尔吉侬尽快到达...原创 2020-07-25 11:41:26 · 165 阅读 · 0 评论 -
UCF Local Programming Contest 2019(Practice)
UCF Local Programming Contest 2019(Practice)A. Buying in Bulk思路:2个以上的五篇每个减去2code:#include<iostream>using namespace std;int main(){ int c,p; cin>>c>>p; cout<<c*p-(c-1)*2<<endl; return 0;}B. Are...原创 2020-07-24 20:12:24 · 481 阅读 · 0 评论 -
容斥定理+组合计数
7.22容斥定理:问题 例子:[A,B] 区间内,与 N 互质的数的个数。可以先求不互质的个数,再利用前缀和的思想 [1,B]-[1,A-1]即可N的质因子的倍数就不互质的现在求[1,m]中与n不互质的个数假如m=12,n=30;n的质因子:2,3,5(2,4,6,8,10,12)->n/2 6 个 (3,6,9,12)->n/3 4 个, (5,10)->n/5 2 个这里面是有重复的这样就用到了容斥定理记住奇加...原创 2020-07-23 19:44:03 · 200 阅读 · 0 评论 -
扩展欧几里得的应用(超详细求逆元求解方程)
扩展欧几里得算法:1.扩展欧几里得算法可以求逆元2.扩展欧几里得算法可以求类似ax+by=m,的所有整数解,当m%gcd(a,b)==0则ax+by=m有无线多个解,否则无解扩展欧几里得的基础式 ax+by=gcd(a,b) 下面会用到这个式子下面我会给出这个基础式的模板扩展欧几里得算法求逆元:刚开始值知道这个算法可以求解逆元,逆元的定义:ax1(mod b) (注意gcd(a,b)==1的时候才能保证a的逆元是x)ax%b=1ax-by=1(是不是和上面...原创 2020-07-23 14:57:51 · 3006 阅读 · 2 评论 -
ICPC Arab Collegiate Programming Contest 2013(部分题解)
ICPC Arab Collegiate Programming Contest 2013E. Balloons Colors思路:判断第一个数是否等于x最后一个数是否等于y,依次输出即可code:#include<iostream>#include<cstdio>using namespace std;int a[110];int n,x,y;int main(){ int t; cin>>t; while(t--){ ...原创 2020-07-22 17:46:55 · 328 阅读 · 0 评论 -
逆元的三种解法
先介绍一下同余定理吧:如果a-b能整除m则a,b对m同余,用公式即为ab(mod m);费马小定理:如果a<p一定满足上面的那个试子,(a*inv(b))mod p;b的逆元是在mod p下意义的逆元,因此b的逆元为b;下面的是费马小定理的代码:通常求出来的逆元都要进行取摸#include<bits/stdc++.h>using namespace ...原创 2019-11-12 21:55:30 · 1977 阅读 · 0 评论