
ACM
夏训入门记录
Listening~
Hello Word!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
练习赛 9-28(vj,周赛&队选赛)
A - 最大子矩阵题目:现在有一个矩阵,找出其中最大的子矩阵,保证子矩阵的元素和小于等于x。但是,这里的矩阵时通过两个行向量相乘给出,并不是直接给出的。这个矩阵是:1 2 42 4 84 8 16这时,元素和小于等于9的最大的子矩阵就是左上角2*2的矩阵,所以答案是4。此时时输入的是:3 31 2 41 2 49...原创 2019-10-23 15:00:29 · 165 阅读 · 0 评论 -
ACM新手DAY 13 高精度运算
题解C - A + B Problem II大数加法。#include<stdio.h>#include<string.h>#define maxn 1010int an1[maxn];int an2[maxn];char s1[maxn+10];char s2[maxn+10];int main(){ int t, cou(0); s...原创 2019-07-27 21:35:39 · 148 阅读 · 0 评论 -
ACM新手DAY 20 欧拉函数&线性筛
题解A - Prime Gap题目:读入一个n,是素数就输出0,不是就输出它左右两边最近的两个素数形成的区间的长度。素数线性筛思路:埃式筛法打表(素数表),用结合比较快的素数判定函数。注意点:上限是1299709,可以设成const int maxn = 1299709+100;判定素数函数部分bool isprime(int n){ if(n < 2)ret...原创 2019-08-05 21:49:25 · 272 阅读 · 0 评论 -
ACM新手DAY 17 线段树
题解A - 敌兵布阵样题。线段树#include<bits/stdc++.h>using namespace std;int sum[50010*4];void buildtree(int l,int r,int k)//k是当前节点的编号{ if(l==r) {cin>>sum[k]; return;} int mid=(l+r)/2;/...原创 2019-08-01 19:31:46 · 154 阅读 · 0 评论 -
ACM新手DAY 23 dfs序和LCA
题解A - How far away ?题目:有n个房子,两两之间有长度不一的路,求指定的a,b两个房子之间的距离(答案唯一)。直接放上两种代码,里面都有解释。#include<cstdio>#include<cstring>#include<algorithm>#include<vector>const int N=40000+...原创 2019-08-08 19:42:10 · 298 阅读 · 0 评论 -
ACM新手DAY 21 莫比乌斯反演&欧拉函数
题解I - Super A^B mod C给定A,B,C,您应该快速计算ABmodCA^BmodCABmodC的结果(1<=A,C<=10000000000,1<=B<=101000000)(1<=A,C<=10000000000,1<=B<=10^{1000000})(1<...原创 2019-08-06 19:52:10 · 228 阅读 · 0 评论 -
ACM新手 乘法逆元
简单认识乘法逆元如果ax≡1(modp)ax≡1 (mod p)ax≡1(modp),且gcd(a,p)=1gcd(a,p)=1gcd(a,p)=1(a与p互质),则称a关于模p的乘法逆元为x。代码不太恰当的举个栗子:if(a*x%p==1){ cout<<x<<endl; }费马小定理由费马小定理ap−1≡1(modp)a^{p-1}≡ 1 (mod p)a...原创 2019-08-13 17:24:48 · 300 阅读 · 0 评论 -
ACM新手DAY 24 倍增与树上倍增
题解D - Misha, Grisha and Underground题目:一棵树,给三个节点,求它们间一个点到其余两个点路径的公共路径上经过节点数的最大值。如果这三个整数构成了这样的两个路径,a到b,和,c到b 这两个路径。定义a到b的距离是lab,其他类推。那么这两个路径的交点个数是 ( lab + lbc - lac ) / 2 + 1那么用倍增在线LCA求任意两个节点的最短路径...原创 2019-08-09 21:24:43 · 381 阅读 · 0 评论 -
ACM新手DAY 22 RMQ
题解A - Balanced Lineup题目:给定一组数,求指定区间的最大值和最小值。RMQ标准问题ST算法预处理及查询对应代码//简单应用模板,但是注意最小花查询初始化的时候也要新起一个函数,不然最小化求得不对,不晓得怎么回事。。。#include<cstdio>#include<iostream>#include<algorithm&g...原创 2019-08-07 20:45:31 · 277 阅读 · 0 评论 -
ACM新手DAY 25 高斯消元&FFT
题解C - Painter’s Problem题目:有一个方墙,它是由n*n个小方砖组成的。有些砖是白色的,有些是黄色的。把所有的砖都涂成黄色。一旦用刷子画砖(i,j),(i-1,j),(i+1,j),(i,j-1)和(i,j+1)的砖都会改变颜色。找出应该画的砖块的最小数量,以使所有的砖块变黄。高斯消元样题#include <iostream>#include &...原创 2019-08-10 21:18:04 · 220 阅读 · 0 评论 -
ACM新手周赛 4
题解B - 高斯消元模板题目:求A^B mod C.于是又用了欧拉降幂。。。看这里D - 二元组题目:输入一个N值,判断有多少个二元组(x, y)满足1 <= x, y <= N, 且x, y互质。提示:N=2时,有三个二元组,(1,1) , (1,2) , (2,1).求多个欧拉函数模板稍微修改一下就好代码#include <iostream&g...原创 2019-08-10 21:44:04 · 266 阅读 · 0 评论 -
新生总结赛(1)
A-zcf来培训了签到,过。B- zcf学到了菲波那切数列题目:菲波那切数列的第LL项与菲波那切数列的第RR项之间,一共有多少个奇数,多少个偶数吗?模拟?奇奇偶三个一组。C-zcf迷上了菲波那切数列题目:菲波那切数列的第几项是多少。大数加法F- zcf斐波那契数列大成了题目:求i∈[L,R],Fib[i]%1000007∈[l,r]i∈[L,R],Fib[i...原创 2019-08-15 18:38:34 · 159 阅读 · 0 评论 -
ACM新手DAY 26 计算几何
题解A - TOYS题目:给出多个区间和多个点,计算每个区间包括的点的数目计算几何+搜索判断点与线段的位置关系+二分搜索(先用二分搜索找到点大概的位置,然后用点与线段的判断找到精确位置)//点在线段之间+二分查找#include<iostream>#include<cstdio>#include<string.h>using names...原创 2019-08-12 18:25:30 · 726 阅读 · 0 评论 -
新生总结赛(2)
A- zcf昨天爆零了吗签到,过。C- 睿智的zcf题目:假设实验室按比赛排名顺序先选择了n个人,每个人有一个能力值,代表了代码能力的强弱,然后学长要把这些人分成m段,如果不能整除(n/m)多出来就后面的人就不要了,然后从这m段里面选择每段的最大能力值加起来看是否能够大于老板需要的目标k由于实验室位置有限,所以实验室要尽可能少录取人,所以zcf学长想让你找出满足条件的最小的m。RMQ...原创 2019-08-17 18:14:31 · 132 阅读 · 0 评论 -
练习赛 9-15
A - Zmei Gorynich题目:怪兽Zmei Gorynich有xxx个头,你有nnn种攻击方式,每次可将它的头减少min(curX,d[i])min(curX,d[i])min(curX,d[i]),curXcurXcurX为当前所剩的头的数目,d[i]d[i]d[i]为选定的某种攻击的对应减少数目,且每次攻击后如果curXcurXcurX不为0,就会长出h[i]h[i]h[i]个新...原创 2019-09-21 17:11:07 · 151 阅读 · 0 评论 -
练习赛 9-21(National Contest for Private Universities (NCPU), 2019)
B. Population Count给出一个数据范围[b,e][b,e][b,e],求这个范围里面所有整数的二进制形式中1的数目。位运算的应用代码#include <bits/stdc++.h>using namespace std;int solve(int n){ int ans(0); while(n) { if(n...原创 2019-09-24 19:04:03 · 199 阅读 · 0 评论 -
离散化和离线化初步(10-5讲课)
注:离散化和离线化其实没什么关系,离线对应的是在线算法。例题:求i∈[L,R],Fib[i]%1000007∈[l,r]i∈[L,R],Fib[i]i\in[L,R],Fib[i]\%1000007\in[l, r]i∈[L,R],Fib[i]%1000007∈[l,r]i∈[L,R],Fib[i]%1000007∈[l,r]i∈[L,R],Fib[i]的个数。代码#include&...原创 2019-10-08 09:31:24 · 170 阅读 · 0 评论 -
ACM新手DAY 16 树状数组
题解A - 敌兵布阵树状数组样题:第一行一个整数T,表示有T组数据。每组数据第一行一个正整数N(N<=50000),表示敌人有N个工兵营地,接下来有N个正整数,第i个正整数ai代表第i个工兵营地里开始时有ai个人(1<=ai<=50)。接下来每行有一条命令,命令有4种形式:(1) Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30)(2)Sub ...原创 2019-07-31 20:57:19 · 214 阅读 · 0 评论 -
ACM新手DAY 12 扩展KMP+AC自动机+Manacher
题解A - Best Reward题意: 将一个串分割成两个串,你得到得代价就是两个子串的代价和,子串的代价是这样得到的:1、如果子串是回文串,那么代价就是子串每一个位置值的和。2、反之,代价是0。样题。分别给出KMP扩展和Manacher算法两种代码,详细解释在注释里。Manacher算法#include <bits/stdc++.h>using namesp...原创 2019-07-26 19:45:23 · 259 阅读 · 0 评论 -
ACM新手周赛 3
题解A - 群里又来新人了(补题)题目:执行n组命令,对一个队伍进行加入新人,去掉进去的时间最长的人,查询实力处于中间的人。注意点:其中,中间是这样定义的:floor(人数/2)+1。即,3个人时,中间就是2。4个人时,中间就是3。解题思路:队列+二分。具体:用队列解决删除操作中“去掉进群时间最长的人”的问题,然后用数组存储队列,每次插入和删除都要调整数组中的顺序,二分搜索用来查找插...原创 2019-08-04 20:34:56 · 227 阅读 · 0 评论 -
ACM新手DAY 2 模拟和贪心
题解A - Radio Station读入n和m。n是n个服务器的名称和ip地址,m是m个命令。找到每个命令对应的服务器的名称。输入部分(服务器的名称和ip地址,命令的命令句和ip地址分别用两个二维数组储存) int n, m; cin >> n >> m; for(i=0; i<n; i++) for(j=0; j&...原创 2019-07-15 21:54:03 · 144 阅读 · 0 评论 -
ACM新手DAY 5 BFS
题解A - Oil DepositsBFS连通块类型c语言形式的输入输出有时候会很方便int main(){ while(~scanf("%d%d",&n,&m)) { cnt=0; if(n==0)///输入0 0 退出 break; for(int i=0;i<n;i++...原创 2019-07-18 21:49:29 · 254 阅读 · 0 评论 -
ACM新手DAY 9 二叉树+哈弗曼树+字典树
题解A - 后序遍历给一个二叉树的前序遍历和中序遍历,求出它的后序遍历。具体方法题目已经给的很详细了,这里直接在代码里标出#include <iostream>#include <string>using namespace std;string str1, str2;string find(int begin1, int begin2, int len)...原创 2019-07-23 19:57:51 · 215 阅读 · 0 评论 -
ACM新手DAY 3 排序和逆序对
题解A - Teams Forming给一群人分队,每两人一队,能力相同才可以组成一队。解决问题可以提高能力,如一个人能力为59,解决1个问题能力就变成60。求出在成功分队的要求下,最少要解决多少问题。即对读入的“能力”排序,两两一队,每一对数字的差就是要解决的问题数量。代码如下(这里直接用sort升序就行)#include<iostream>#include<a...原创 2019-07-16 22:04:10 · 177 阅读 · 0 评论 -
ACM新手周赛 2
还活着,全是补题A - 神奇的皮卡丘本题只有一组数据,所有单词只包含小写字母。测试用例由两部分组成,字典部分以一个单行字符串“START”开头,此字符串应该被忽略。然后下面每行包含两个单词,第一个是英文单词,第二个是皮卡丘的语言。字典以一个单行字符串“END”结束。字典不包含“START”和“END”。皮卡丘的文章同样以“START”开头,以“END”结束,然后是一篇皮卡丘写的文章。你应...原创 2019-07-28 23:41:54 · 304 阅读 · 0 评论 -
ACM新手DAY 10 并查集+拓扑排序
题解A - X-Plosives并查集样题。有n个化合物,每个化合物由两种元素构成,现在按照输入顺序把所有化合物装车,当车上有k个化合物的时候,如果恰好有k种元素,就会发生危险,所以当工人拿到化合物的时候,确保它装车后不会有危险才会将它装入,问有多少个化合物被拒绝装车。并查集判环,把每种元素看成结点,每个化合物看成一条边,连接两种元素,当有环存在时就会发生危险.由于这个的输入有些特别,...原创 2019-07-24 21:00:22 · 176 阅读 · 0 评论 -
ACM新手DAY 4 DFS及其应用
题解A - 迷宫问题用DFS解决迷宫问题。直接代码分析#include <iostream>#include <vector>#include <string.h>using namespace std;int m(5),n(5);int vis[20][20];//标记数组,去掉已经经过的地点int f[4][2] = {{0,-1},{-...原创 2019-07-17 20:57:59 · 614 阅读 · 0 评论 -
ACM新手DAY 14 简单动态规划(背包、LIS等)
题解A - Common Subsequence题意:LCS 求最长公共子序列//LCS#include<bits/stdc++.h>#include<iostream>using namespace std;const int INF = 1<<30;const int maxn = 1010;int dp[maxn][maxn];in...原创 2019-07-29 22:27:11 · 165 阅读 · 0 评论 -
ACM新手DAY 18 线段树(2)
题解A - A Simple Problem with Integers题目:你有N个整数,A1,A2,…,AN。 您需要处理两种操作。 一种操作是在给定的间隔中为每个数字添加一些给定的数字。 另一种是要求给定间隔中的数字总和。样题。区间合并以及区间更新都有的标准模板。#include<iostream>using namespace std;#define ll lo...原创 2019-08-03 20:52:59 · 277 阅读 · 0 评论 -
ACM新手DAY 6 最短路径
题解A - 最短路以本题为模板做的讲解,直接放上代码,这个是Dijkstra(迪杰斯特拉)算法。Dijkstra算法步骤初始化:1、将源点v0加到S中,即S[v0] = true;将v0到各个终点的最短路径长度初始化为权值,即D[i] = G.arcs[v0][vi],(vi∈V − S);如果v0和顶点vi之间有弧,则将vi的前驱置为v0,即Path[i] = v0,否则Path[...原创 2019-07-21 18:05:33 · 397 阅读 · 0 评论 -
ACM新手DAY 7 最小生成树
题解A - Constructing Roads第一题是模板,直接放代码。当然因为题目中存在有一些路已经修过了,算是附加条件,这个模板还不算普遍的。#include<bits/stdc++.h>using namespace std;int f[200];struct edge{ int s,to,cost;} e[200*200];bool cmp(edge...原创 2019-07-21 18:29:59 · 143 阅读 · 0 评论 -
ACM新手周赛 1
题解D - 最小生成树真的就只是最小生成树,不过输出要求不好摸准。输出部分cout << fixed << setprecision(2) << sum <<endl; if(t>0) cout <<endl;E - 云底之弈的小bug很简单的排序题目,单组输入输出,没有字符...原创 2019-07-21 18:43:38 · 274 阅读 · 0 评论 -
ACM新手DAY 15 数位dp&状压dp
题解A - 不要62数位dp样题看了好久,解释都写在注释里了。#include<bits/stdc++.h>using namespace std;int aa[20];int dp[20][5];///state存的是,当前这一位的前一位是不是6,///limit是数位上界,如果,当前这一位的前一位循环未达到上界,那么这一位可以取到9,否则只能取到本位上界in...原创 2019-07-30 20:02:27 · 286 阅读 · 0 评论 -
ACM新手DAY 11 KMP+Shift And
题解A - Oulipo题意:给一个目标串再给一个主串,问子串在主串中出现了多少次。KMP算法样题。有些地方标记了一些理解,但是感觉还是有些不够深刻。#include <iostream>#include <string.h>#include <stdio.h>using namespace std;const int MX = 1e6+...原创 2019-07-25 21:00:54 · 162 阅读 · 0 评论 -
ACM新手DAY 19 前缀和与差分
题解A - Color the ball又是涂气球,题目和昨天的一样前缀和。思维和树状数组那天的那到题一样。只对区间的左边的点和右边的点的下一个点做修改。#include<stdio.h>#include<string.h>int a[100005];int main(){ int n,x,y; while(scanf("%d",&am...原创 2019-08-03 21:09:16 · 233 阅读 · 0 评论 -
ACM新手DAY 8 二分搜索
题解A - Can you find it?题目解释:三个数组A、B、C,一个整数k,三个数组各取一个数相加,判断有没有可能组成k。用三个循环自然会超时,所以把前两个数组两两相加,对第三个使用二分法。Memory Limit Exceeded:数组开大的话是有可能出现这个报错的二分法部分for(int i=0; i<n; i++) { ...原创 2019-07-22 21:54:35 · 238 阅读 · 0 评论 -
ACM新手DAY 1 位运算与(矩阵)快速幂
题解A - 最低位首先了解题意。读入一个整数,对它的二进制形式进行操作:取从他的右边向左边第一个不为0的一段二进制数,转换成十进制形式。如,26的二进制形式是11010,取出10这一段,输出8。接着开始编译代码多组输入:while(cin>>n && n) {}逻辑部分:int c(0); while(~ n & 1) ...原创 2019-07-14 23:03:41 · 282 阅读 · 0 评论