![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM题目和算法
anthony1314
退役acmer 想要找到后端实习的菜鸡
展开
-
P3649 [APIO2014]回文串 【回文自动机/回文树】
题意给你一个由小写拉丁字母组成的字符串 ss。我们定义 ss 的一个子串的存在值为这个子串在 ss 中出现的次数乘以这个子串的长度。对于给你的这个字符串 ss,求所有回文子串中的最大存在值。由小写拉丁字母(a~z)组成的非空字符串 ss解法回文自动机入门题目参考博客感觉回文自动机跟后缀自动机差不多,虽然我不会后缀自动机,只会一点点后缀数组,但感觉回文自动机挺好用的在解决回文串问题上,...原创 2019-10-15 20:04:06 · 214 阅读 · 1 评论 -
CodeForces - 892B (第一篇题解)写得不是很好
题意:有n个人,每个人都有长度不一样的爪子,所有人同时杀人,且只能杀在你前面的人(也就是数组小标比你小的人)爪子长度的大小决定你可以杀在你前面的人数,问最后还剩多少人?思路:这道题可以从最后面开始进行遍历,每次声明一个变量len把当前爪子当前所能够到的最前面的位置存进去,与前一个所能够到的位置(j - a[j])进行比较最小值,变量len就更新,循环不断判断当前位置是否大于len...原创 2018-03-18 22:12:37 · 275 阅读 · 0 评论 -
CodeForces - 892C Pride
题意:给你一个长度为n的数组,每次可以进行一种操作把第i个数和第i+1个数替换为第i个数或者第i+1个数的gcd,问最少多少步能够使得序列全部变成1.思路:这道题的只要数组里面有一个1 ,操作就变得简单了。如果只有一个1那么只要再执行n - 1步操作就可以全变成1,i个1就执行n-i步操作,就可以了,如果给的初始数组没有1那么我们就化出一个1来再加上n - 1,考虑每一段区间i ~ j(i &...原创 2018-03-19 21:29:45 · 181 阅读 · 0 评论 -
codeforces769b
题意思路:先输入当前每个人所有的发送次数,并且纪录下当前位置。判断 :第一个人的发送次数是否为0, 以及所有发送次数是否为小于人数,是的话直接输出打印-1.当第二个到第n个的人根据发送次数从小到大进行排序,最近进行循环遍历打印发送的过程AC代码:#include <iostream>#include <algorithm>using namespa...原创 2018-03-29 21:35:07 · 166 阅读 · 0 评论 -
codeforces 899b
题目大意:给出不超过24个数字,判断是否是连续的月份思路:打表循环判断要注意平平年 平闰年 闰闰年ac代码:#include<bits/stdc++.h>using namespace std;int m[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; int m1[12] = {31,29,31,30,31,30,31...原创 2018-03-26 17:15:13 · 217 阅读 · 0 评论 -
CodeForces - 899C
题目大意:给出一个n,把1到n分成两个集合,绝对值差为最小;打印出绝对值差,输出第一个集合的元素个数,和各个元素,多少个元素都无所谓。思路:这道题第一就可以判断出绝对值差只有0和1两种情况,关键是怎么分配元素,而其中有一个小规律,就是每四个连续的数,可以分成两个一样大的集合,这样我们可以先把元素个数模4通过剩下判断前几个分成的两个集合绝对值差,来确定绝对值差,打印每个元素也是先打印前...原创 2018-03-28 07:48:47 · 1035 阅读 · 0 评论 -
codeforces 869a
题目大意:给出1到n(偶数),平均分为两个各(n/2)个元素的集合,从上面的集合随机抽取一个数与下面的数异或,如果得出的值在输入中出现,则ans+1,如果ans最后为偶数则Karen赢。思路:a^b = c, a^c = a^ b^a = b;这是一个循环,如果输入中有出现,那必定成为一个 循环 ,出现的次数为偶数,无论怎么样都是Karen赢。#include<stdi...原创 2018-03-28 09:34:23 · 237 阅读 · 0 评论 -
CodeForces - 812B [DP]
这道题一开始以为是有规律的的, 想通过最大区域的0来计算,然后用bfs来解决,但是写到一半又发现思路错了,最后还是学长提醒我用dp思路去做,纪录最右和最左的点,dp已经很久没做了,看了网上其他题解才明白要怎么去维护那些状态,里面有几个点需要注意一下:1.所有的数都为02.最下面楼层的dp方式不一样3.每次dp要保存前一个的状态 因为下一次会变化AC代码:#include<...原创 2018-04-16 19:28:14 · 164 阅读 · 0 评论 -
Sagheer and Nubian Market 812c [二分枚举]
题目大意:给你n个物品,还有m钱每个物品的价值为k【i】;请你用不超过m钱买最多个物品,有多少个 ,花了多少钱?每个物品的价格为该物品的价格k【i】+ (该物品的下标+1)* 买的物品个数思路 :简单的二分枚举一开始就想到要开longlong不过在cf输入输出c++不能交%lld 新手的我实在不知道该怎么办只能按照他的提示改为定义int64改为%I64dAC...原创 2018-04-16 22:14:20 · 157 阅读 · 0 评论 -
codeforces 977d
#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 110;int n;int gt[N];bool f[N];ll a[N];int main() { scanf("%d", &n); for (int i = 1; i <= n;...原创 2018-05-09 18:25:41 · 255 阅读 · 0 评论 -
hdu1754 I Hate It (线段树)
很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。Input本题目包含多组测试,请处理到文件结束。在每个测试的第一行,有两个正整数 N 和 M ( 0<N<=200000,0<M<500...原创 2018-05-04 13:25:41 · 110 阅读 · 0 评论 -
hdu 2795 Billboard (线段树,找第一个大于w的点)
这道题一开始看,实在想不出跟线段树有什么关系,自己实在是太菜了。给出h*w的广告版。每个广告是1*w的,给出m个广告,要每张广告尽量在上层尽量靠左,输出它所在的高度。假设放不下。就输出-1这里的问题就是h给的非常大,可是 一共仅仅有m个广告,所以即使是一条广告占一条,那么也就仅仅须要m的高度,多余的高度没实用,假设m的高度的不能放下m条广告,那么即使h再高,也放不下,所以n应该是m和h的小...原创 2018-05-04 14:24:44 · 182 阅读 · 0 评论 -
codeforces 165B - Burning Midnight Oil codeforces 【二分+快速幂】
#include<bits/stdc++.h>#define ll long longusing namespace std;ll powp(int k, int l){//快速幂 ll i, j, sum = 1; for(i = 1; i <= l; i++) { sum*=k; } return sum;}int cheak(int m, int k...原创 2018-05-11 22:38:38 · 136 阅读 · 0 评论 -
最短路模板dijistra
dijistrahdu1596/*XX星球有很多城市,每个城市之间有一条或多条飞行通道,但是并不是所有的路都是很安全的,每一条路有一个安全系数s,s是在 0 和 1 间的实数(包括0,1),一条从u 到 v 的通道P 的安全度为Safe(P) = s(e1)*s(e2)…*s(ek) e1,e2,ek是P 上的边 ,现在8600 想出去旅游,面对这这么多的路,他想找一条最安全的...原创 2018-06-07 22:46:20 · 304 阅读 · 0 评论 -
2018 Multi-University Training Contest 1 ------ 1004 hdu6301 Distinct Values【贪心+优先队列】
题意:给出一个数组大小,这个数组里面所有的数范围从 1到100000,这个数组有这样一个规则,某个子区间内的所有数必须不相同,求按字典序最小输出这个数组。解法:贪心+优先队列先把所有区间按前端进行排序,再按后端进行排序,进行遍历,每次把前面区间用过的数字但现在遍历的区间没覆盖的数存进优先队列中,然后再取出来用。本人AC代码:#include<bits/stdc++....原创 2018-07-24 13:21:42 · 175 阅读 · 0 评论 -
2018 Multi-University Training Contest 1 ------ 1002 hdu6299 Balanced Sequence【贪心】
Balanced SequenceTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2802Accepted Submission(s): 700Problem DescriptionChiaki hasnstrin...原创 2018-07-24 17:11:35 · 123 阅读 · 0 评论 -
树状数组模板
// 单点更新区间求和 树状数组 #include<bits/stdc++.h>using namespace std;#define ll long longint n,c[1000010];int lowbit(int x){ return x&(-x);}void Add(int x,ll d){ while(x<=n){ ...原创 2018-07-28 16:53:53 · 107 阅读 · 0 评论 -
poj3321 Apple Tree 树状数组+dfs序
Apple TreeTime Limit: 2000MS Memory Limit: 65536K Total Submissions: 34141 Accepted: 10231 DescriptionThere is an apple tree outside of...原创 2018-07-28 20:35:49 · 232 阅读 · 0 评论 -
2018 Multi-University Training Contest 2 ---------hdu 6315 Naive Operations【线段树】
Naive OperationsTime Limit: 6000/3000 MS (Java/Others)Memory Limit: 502768/502768 K (Java/Others)Total Submission(s): 853Accepted Submission(s): 318Problem DescriptionIn a galaxy far, f...原创 2018-07-26 11:47:51 · 173 阅读 · 0 评论 -
2018 Multi-University Training Contest 2-----hdu6313Hack It【构造题】
Hack ItTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 668Accepted Submission(s): 216Special JudgeProblem Description...原创 2018-07-26 13:55:11 · 242 阅读 · 2 评论 -
2018 Multi-University Training Contest 2 ---- hdu6318 Swaps and Inversions【离散化+归并排序】
Swaps and InversionsTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1070 Accepted Submission(s): 401Problem DescriptionLong long ago, ...原创 2018-07-26 16:10:59 · 136 阅读 · 0 评论 -
某些小点(离散化)
离散化sort(t+1,t+1+n);m=unique(t+1,t+1+n)-t-1;//m为不重复的元素的个数原序列:6 9 4 6 4排序后:4 4 6 6 9unique(元素去掉重复的)后:4 6 9 6 9 (前m位数字无重复,其他数字跟排序后的序列想比不改变)unique有一个返回值,例如有十个有序的数列3 3 5 5 6 6 6 7 7 8,不重复的数字有五...原创 2018-05-04 13:21:00 · 242 阅读 · 0 评论 -
hdu6319---2018 Multi-University Training Contest 3 ---Problem A. Ascending Rating【单调队列】
题意:给定一个序列a[1.....n],对于每个长度为m的子区间,求出区间a的最大值以及从左往右扫描该区间时a的最大值变化次数。思路:按照平从m到n的顺序用个单调队列就可以算出子区间的最大值,但是按照r从m到n的顺序很难求出变化次数,不如我们反着顺序过来求,按照递增,来写单调队列,队列中元素的个数就是最大值的变化次数。队列中存的元素是以数组下标来进行存的。#inc...原创 2018-07-31 15:17:54 · 116 阅读 · 0 评论 -
codeforces 1017C The Phone Number [分块+贪心]
题目链接题意:给你一个数n,让你给出一个有n个数的排列,这n个数分别是1到n,求一个最长上升子序列和最长递减子序列的长度和最小的排列。题解:通过样例1可以看出只要n是某个整数的平方,那么可以将其分为sqrt(n)块,每一块为sqrt(n)个,那么夹杂在(n-1)^2 和 n^2 的数该如何方块呢,为何方块就是因为如果方块进行排列:那么每个块以内按递增进行排列,块与块之间按递减排列, 块数...原创 2018-08-09 15:44:51 · 231 阅读 · 0 评论 -
hdu6395 Sequence 2018杭电多校第7场1010 【矩阵快速幂+分块】
题目链接题意:给你A, B, C, D, p, n这些条件通过公式请你推出第n项答案(mod1e9+7)题解: 有前面几项推出后一项的公式一般都是用矩阵快速幂来求, 主要是p/n难以进行操作,那么我们便根据p/n的值来进行分块例如 p = 16 n = 55分块可分为 :p/3 = 5 3p/4 = 4 4p/5 = 3...原创 2018-08-14 11:27:37 · 199 阅读 · 0 评论 -
hdu6396Swordsman 2018杭电多校第七场1011 【优先队列+IO输入优化】
题目链接题意:有一个法师 法师身上有k个属性 Vi, 1<=k<=5 有m只怪物, 每只怪物有k个属性 Aij, 当法师杀死某只怪物的时候, 每一项属性 Vi 可以根据 提高相应的值Bijm<= 5*1e5求法师最多可以杀死几只怪物 以及其最终属性是多少题解:由于k的值很小,所以我们可以开k个优先队列,每个队列的优先级是从小到大,先将所有怪物...原创 2018-08-14 15:48:47 · 156 阅读 · 0 评论 -
hdu6333 Problem B. Harvest of Apples 莫队算法+费马小定理求逆元
S(n,m - 1) = S(n,m) - C(n,m)S(n,m + 1) = S(n,m) + C(n,m + 1)S(n - 1,m) = (S(n,m) + C(n - 1,m)) / 2S(n + 1,m) = 2 * S(n,m) - C(n,m)推出四道公式,用莫队算法做,求组合数用费马小定理求逆元。#include<bits/stdc++.h>#...原创 2018-08-02 16:56:35 · 126 阅读 · 0 评论 -
hdu6351 Beautiful Now 全排列+剪枝(暴力) 2018杭电第五场B题
题意:给你一个不超过10^9的数n,和一个k;有一种操作方式交换这个数的某一位与另一位进行交换 比如 201 可以换成 102,让你进行k次操作,求出交换后最大的数字和最小的数字.要点:1 . 某一位的数字可以和它本身进行交换 2 .交换的数字不可以有前导零(即第一位不可以是0)题解:如果这个数字是n位数,那么其交换不超过n-1次就可以变成最大值和最小值,可以根...原创 2018-08-07 14:05:47 · 658 阅读 · 0 评论 -
hdu6386 Age of Moyu 2018杭电多校第七场A题【优先队列+BFS】(已更改)
题目链接题意:给你n个点, m条边(双向), 每条边有一个编号,求从1到n的最短路。如果没有则输出-1.规则:经过一条边,花费为1,若经过的下一条边与当前的边编号相同,则下一条边不需要花费, 如果不同则代价+1.简单来说就是 求 换乘次数+1例1:1-2 的编号 为11-3 的编号为22-3 的编号为1则最短路 可以是 1-2-3 这里的编号都为1 所以答...原创 2018-08-18 23:30:00 · 491 阅读 · 5 评论 -
算法竞赛中 C++常用方便的函数
目录_builtin_popcount()_builtin_popcountll()next_permutation(p,p+n)lower_bound() ,up_bound()assert(bool a);二进制运算符:64位最大数的边界字符串函数:priority_queueunique_builtin_popcount()计算32位二进制中多...原创 2018-08-19 15:06:56 · 1583 阅读 · 0 评论 -
poj2478 Farey Sequence【筛法欧拉函数】
原题传送门题意:F2 = {1/2} F3 = {1/3, 1/2, 2/3} F4 = {1/4, 1/3, 1/2, 2/3, 3/4} F5 = {1/5, 1/4, 1/3, 2/5, 1/2, 3/5, 2/3, 3/4, 4/5} 求出F(n) 有几个元素也就是要你求 1~n 有几对 a与b 互质这是一道欧拉函数的裸题AC代码:#in...原创 2018-08-19 15:55:02 · 199 阅读 · 0 评论 -
codeforces 1025B Weakened Common Divisor【gcd】
题目链接:传送门题意:给你n对数, 每队数字有两个,问是否有一个数不等于1至少能整除每一对数中其中一个数字?如果有,输出那个数,没有则输出-1,答案多个输出其中一个。题解:能整除这个数的一定是该数的因子,而整除这对数其中一个数的一定是这对数两个数乘积的因子,那么我们可以把首项其中一个数与接下来每一项的乘积求gcd,得出来的结果不等于1则再去求其最小不为1因子。AC代码:#...原创 2018-08-23 11:02:40 · 181 阅读 · 2 评论 -
The Super Powers UVA11752 超级幂
题意:输出打印1到 2^64 - 1所有超级幂如果一个数可以表示成两个或以上的数的幂,就是超级幂;思路:所有数的合数次幂,都是超级幂;AC代码:#include<iostream>#include<algorithm>#include<string>#include<sstream>#include<set>#...原创 2018-08-23 11:35:20 · 318 阅读 · 0 评论 -
2018CCPC网赛 题解补 hdu6440 hdu6441 hdu6446(未完)
目录hdu6440 Dream【费马小定理】hdu6441 Find Integer 【费马大定理】hdu6446Tree and Permutation【邻接表dfs】hdu6440 Dream【费马小定理】传送门复习费马小定理的定义:费马小定理:假如p是质数,且gcd(a,p)=1,那么 a^(p-1)≡1(mod p)。即:假如a是整数,p是质数,且a,p互质...原创 2018-08-30 21:17:17 · 241 阅读 · 0 评论 -
ACM心路历程(一)2018.8.23
初识ACM:大学刚进来就抱着想要学好计算机这一门专业的目的,但是进来刚开始的专业是数字媒体技术,也是我们学校的信息技术学院的一个专业,开学进来一片迷茫,第一次听见acm的就是在大一第一学期刚开学的国家奖学金评选上,评选奖学金的每一个都很优秀,有各个专业的,每个人的经历都很丰富,有出国游学,参加国际建模大赛,完成一些看起来很厉害的项目,总之看起来每个人都是全能的,绩点高,又是各种学生干部,然...原创 2019-08-24 10:54:00 · 445 阅读 · 1 评论 -
hdu6415 Rikka with Nash Equilibrium 2018杭电多校第9场A题【DP】
题目链接:传送门题意:给你一个n*m矩阵,以及一个mod;给你一种定义,在矩阵内的某个元素Aij(第i行第j列)在所在的行和列任意一个元素大,为一个平衡。在这个n*m矩阵中有1~n*m,每个数出现次数为1, 请问有多少种方案构成这个矩阵,答案模mod,且这个矩阵的平衡只有一个。题解:想了这道题想了很久,赛后看到多校群里的神仙们用oeis推出了公式,真的nb,公式为n!*m!*(n*...原创 2018-08-21 11:26:54 · 195 阅读 · 0 评论 -
hdu6418 Rikka with Stone-Paper-Scissors 2018杭电多校第九场D题 【推公式(奇妙对称性)】
题目链接:传送门题意:Rikka 和 Yuta有剪刀石头布三种卡片,他们两个卡片的数量相同, 只是每个种类的卡片可能不同.现在给你 a b c 代表Rikka的剪刀 石头 布三个种类卡片的数量而aa bb cc 则代表Yut卡片的数量每个回合双方各出一张牌,出完这张牌后舍弃掉,赢的人得加一分,输的人减一分,平局不增不减。Yuta随机出牌求Rikka的最大预期得分。...原创 2018-08-21 13:04:31 · 270 阅读 · 0 评论 -
hdu6424 Rikka with Time Complexity 2018杭电多校第九场 J题 复杂度【对数公式推规律】
题目链接:传送门题意就不说了,直接说怎么推的直接在 求的结果前面+2个log 取对数loglog(f(a)^f(b)^f(c)) = (log(f(b)^f(c))*log(f(a)) = log(f(b)^f(c)) + loglog(f(a)) = f(c)log(f(b)) + loglog(f(a)) = f(c)f(b+1) + f(a+2)f(+无穷大)...原创 2018-08-21 17:24:02 · 224 阅读 · 0 评论 -
ACM心路历程(二)2018.8.28(CCPC网络赛总结)
2018.08.24.晚上还在打cf,那天晚上状态不是很好,因为在jxb他们宿舍打的cf,那天刚好是jxb的生日,去他们宿舍蹭了蹭空调,大家为xb准备了一个惊喜的蛋糕, 庆祝了一下,吃完就差不多9点多了,10点半开始的cf,吃完之后xb他们宿舍都说今晚不是很想打cf,xm说div3对于他这种手速慢的很不利,wd看了两个宿舍都不打也不打了,所以整个宿舍就我一个人孤军奋战,cy一直在说靠我了,我受...原创 2019-08-24 10:55:23 · 331 阅读 · 0 评论 -
ACM-ICPC 2018 南京赛区网络预赛 题解(未完)
目录 A.An Olympian Math Problem【签到题】J.Sum【分解质因数+线性筛】A.An Olympian Math Problem【签到题】传送门题意:给你一个n求S模n的值题解:推规律AC_code:#include<bits/stdc++.h>#define ll long longusing namesp...原创 2018-09-01 23:21:43 · 444 阅读 · 0 评论