摘要:
Max answer 题意:给n个数(n<=5e5),定义一个区间的值为,区间内最小的值乘区间和。求n个数所有区间中的最大值。 思路:为了考虑到所有的情况,我们可以枚举每个数字作为最小值时,它所产生的区间的最大值,那么对于一个数字作为最小值,通过单调栈,可以找到这个数字最左最右的区间,在这个区间内, 阅读全文
摘要:
POJ2823 题意:给n个数字,有一个大小为k的框,从左往右框数字,一共框n-k+1次,问每次框中数字的最大,最小值。 思路:可以先思考只求最大值,因为1e6的数字,维护最大堆的复杂度是nlogn,肯定超时了。我们可以想到,框每次向右移动一格,只会增加一个数字,减少一个数字,可以想到,我们要维护一 阅读全文
摘要:
POJ2559 阅读全文
摘要:
D - Tolik and His Uncle 题意:给个n*m的单元格,起始位置(1,1)每次可以自己造个(x,y)使位置变为(a+x,b+y),a,b为目前所在位置,现在要求每对x,y不能重复,要求遍历所有单元格,输出按顺序走的单元格的坐标。 思路:别被样例迷惑,可以发现对于一维来说,我们可以想 阅读全文
摘要:
C - Valeriy and Deque 注意:vector<pair(int,int)> v; 放入元素:v.push_back(make_pair(a,b)) 取元素:v[i].first,v[i].second. 阅读全文
摘要:
E - Polycarp and Snakes 题意:在一个全是点的图上开始画线,每次将一行或一列任意长度染成字母,一笔染一种字母,字母必须从a开始连续到后面某个字母可以覆盖。 问所给图案是否满足 ,若满足输出它画了几个字母,然后输出这每个字母开始和截止画的横纵坐标。 思路:存图,模拟,用个x1,x 阅读全文
摘要:
商汤AI园区的n个路口(中等) 思路:设f(x,y)表示以x为根的子树,x点值为y时,且满足条件的方案数,那么状态转移很好想,就是dfs回溯到父亲结点时,枚举父亲结点的y值。f(x,y)父亲结点的方案数,就是对于每个儿子满足条件的方案数相乘,对于这题还需要一个优化,预处理gcd,提前得到每个数字已知 阅读全文
摘要:
https://codeforces.com/contest/1084/problem/D?tdsourcetag=s_pctim_aiomsg 题意:一个树,点有值,边有值,求任意两点之间的最大值,遇到点要加它对应的值,遇到边减掉它对应的值。 思路:嗯,题意理解做法水的一笔,任意两点的路径的最大值 阅读全文
摘要:
HDU6446 题意:给一棵树,n个点,n-1条边,求它n个点全排列(一共n!种)下的所有答案和,对于每种全排列,比如n=5,点的全排列为31245,则求3-1,1-2,2-4,4-5的所有距离的和。最后答案模1e9+7。 思路:对于所有的全排列来看,我们可以先考虑两个点u,v产生的贡献,u和v在全 阅读全文
摘要:
https://ac.nowcoder.com/acm/contest/923/B 我真是个辣鸡,现在才知道线性筛, 思路:对于每个数字的阶乘,开一个一维数组记录每个数字出现的个数,先利用一维差分将每个数字的阶乘中出现都得数字累加个数,然后再利用线性筛中,已知每个数字的最小质因数是什么,在比较过程中 阅读全文
摘要:
D. Extra Element 题意:给一串数字,让删一个数字使使这个串排序后可以形成等差数列,可以的话输出这个数字开始时的下标,否则输出-1 思路:先用pair(int,int)使数字的值和位置形成映射关系,然后按first排序,之后顺着一对一对看它们之间的差值是否改变,如果变了就存在错误的数字 阅读全文
摘要:
https://codeforces.com/contest/1185/problem/C2 题意:给你n个数字,从左往右有序,问对于每个数字来说,从左往右(到这个数字)取一些数字,如果取得数字一定要包括这个数字,且这些数字的累加和不能超过m,求对于每个数字来说,它最少落下几个数字没取。 思路:题目 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2196 题意:给你一棵树,已知每条边的权值。求每个点所能达到的最远点的距离。 思路:先将无根树转为有根树,比如以1为根,对于每个点来说它所能达到的最远距离,就是已自身为根结点向下dfs最大的距离,或者通过自身父节点 阅读全文
摘要:
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3201 阅读全文