The Preliminary Contest for ICPC China Nanchang National Invitational 题目一览表 考察知识点 I. Max answer 单调栈+暴力?? J. Distance on the tree 树链剖分 M. Subsequence 思维??…
Distance on the tree DSM(Data Structure Master) once learned about tree when he was preparing for NOIP(National Olympiad in Informatics in Provinces) in Senior High School. So when in Data Structure Class in College, he is always absent-minded about…
目录 Contest Info Solutions A. PERFECT NUMBER PROBLEM D. Match Stick Game G. tsy's number H. Coloring Game' I. Max answer J. Distance on the tree K. MORE XOR M. Subsequence Contest Info Practice Link Solved A B C D E F G H I J K L M 8/13 O - - O - - O…
题目链接:https://nanti.jisuanke.com/t/38228 题目大意:一个区间的值等于该区间的和乘以区间的最小值.给出一个含有n个数的序列(序列的值有正有负),找到该序列的区间最大值. 样例输入: 5 1 2 3 4 5 样例输出: 36 解题思路:如果序列的值全部为正值的话,可以说很简单,用一个单调栈加前缀和就可以了直接a.但是区间中存在负值,这个问题就变得复杂多了. 首先我们可以用两次单调栈,在O(n)的时间内,对于每个a[i]找到一个最大区间[ l[i] , r[i]…
打网络赛 比赛前的准备工作要做好 确保 c++/java/python的编译器能用 打好模板,放在桌面 A. PERFECT NUMBER PROBLEM #include <cstdio> #include <cstdlib> #include <cmath> #include <cstring> #include <string> #include <algorithm> #include <set> #include…
Alice has a magic array. She suggests that the value of a interval is equal to the sum of the values in the interval, multiplied by the smallest value in the interval. Now she is planning to find the max value of the intervals in her array. Can you h…
Alice has a magic array. She suggests that the value of a interval is equal to the sum of the values in the interval, multiplied by the smallest value in the interval. Now she is planning to find the max value of the intervals in her array. Can you h…
题面 题意:一个5e5的数组,定义一个区间的值为 这个区间的和*这个区间的最小值,注意数组值有负数有正数,求所有区间中最大的值 题解:如果全是正数,那就是原题 POJ2796 单调栈做一下就ok 我们现在有负数,考虑这段区间,他的和必须是负数,由于导致和为负数,最小值一定也是负数, 那对于这样一个和为负的区间进行扩展的时候,遇见下一个数,是负数,我们一定会扩展,无论这个负数大小 遇见下一个是正数,如果和没有变正,那就可以继续扩展下去(不更新答案罢了) 所以我们对于那些和为负的区间,单独统计一下答…
A. PERFECT NUMBER PROBLEM 题目链接:https://nanti.jisuanke.com/t/38220 题意: 输出前五个完美数 分析: 签到.直接百度完美数输出即可 #include<bits/stdc++.h> #define ios std::ios::sync_with_stdio(false) , std::cin.tie(0) , std::cout.tie(0) #define sd(n) scanf("%d",&n) #d…
Max answer Alice has a magic array. She suggests that the value of a interval is equal to the sum of the values in the interval, multiplied by the smallest value in the interval. Now she is planning to find the max value of the intervals in her array…
目录 Contest Info Solutions A. Attack B. Polynomial E. Interesting Trip F. Sequence G. Winner H. Another Sequence I. Hamster Sort J. Prefix K. A Good Game Contest Info Practice Link Solved A B C D E F G H I J K 9/11 O O - - Ø O Ø O Ø O O O 在比赛中通过 Ø 赛后通…
比赛链接https://www.jisuanke.com/contest/3098?view=challenges B题 拉格朗日插值 题意  T组输入.一个n次多项式 f(x) ,每项的系数不知道,只知道f(0),f(1)..f(n) 的值,m个询问,L,R.计算$\sum_{i=L}^{R}f(i)\quad mod(9999991)$ $(1\leq T\leq 5) $ $(1\leq n\leq 1000) $ $(1\leq m\leq 2000) $ $(1\leq L\leq R…
题意:给你一个长度为$n$的数组,定义函数$f(l,r)=a_{l} \oplus a_{l+1} \oplus...\oplus a_{r}$,$F(l,r)=f(l,l)\oplus f(l,l+1)\oplus ...\oplus f(l,r)\oplus f(l+1,l+1)\oplus ...f(l+1,r)\oplus ...\oplus f(r,r)$,有两种操作,第一种将数组中某个元素$a[x]$变为$y$,第二种计算$F(l,r)$的值. 思路:打表后发现只有当$l$和$r$同…
题目链接:https://nanti.jisuanke.com/t/38223 题意:有一堆火柴构成了一个加减法式子,你可以把火柴重新组合,要求数字个数和原来一样多,每个数字的位数和对应原数字位数一样多,总火柴数量也一样多,要求你构造新的式子算出来的结果最大. 思路:我们用dp[i][j]表示前i个数 用了j根火柴 所能达到的最大值 为此我们需要先预处理两个数组 mx[i][j] mn[i][j] 分别表示 i位数用了j根火柴的最大值/最小值 于是对于dp方程 我们可以得出 dp[i][j]=m…
题目:https://nanti.jisuanke.com/t/41352 思路:约瑟夫环 由题意得第k张牌即求 k 为 第几个 报数为m+1 的单位 用队列模拟即可 #include<bits/stdc++.h> using namespace std; ]; int main() { int T; scanf("%d",&T); int n,m,c; while(T--) { ; scanf("%d%d%d",&n,&m,&a…
题目:https://nanti.jisuanke.com/t/41349 思路:dijkstra最短路径 先以 fire-fighting hero为起点 跑一遍dijkstra 建立 起点 p 并与各 fire-fighting point 建立 权为0的边 跑完dijkstra  dis[i]为 p到point i的最短路径 即各 fire-fighting point 到 point i 的最短路径中的最小值 最后将两遍dijkstra 的dis[ ]中的最大值进行比较即可 #inclu…
The Preliminary Contest for ICPC Asia Shanghai 2019 C Triple(FFT+暴力) 传送门:https://nanti.jisuanke.com/t/41400 题意: 给你三个数组a,b,c,要你求有多少个三元组(i,j,k),使得 \[ \begin{array}{l}{\left|A_{i}-B_{j}\right| \leq C_{k}, \text { and }} \\ {\left|B_{j}-C_{k}\right| \leq…
(施工中……已更新DF) 比赛传送门:https://www.jisuanke.com/contest/3004 D. Robots(期望dp) 题意 给一个DAG,保证入度为$0$的点只有$1$,出度为$0$的点只有$n$. 现在一个机器人从$1$出发,每天都会以相同的概率前往相邻节点之一或静止不动. 每天机器人消耗的耐久等于经过的天数. 求机器人到点$n$期望消耗的耐久. 划水划的很愉快,唯一一道做出来的题.但是和题解做法不同(感觉我的方法麻烦),因此砸了3h在这题上面(正在试图读懂题解in…
B.super_log (欧拉降幂) •题意 定一个一个运算log*,迭代表达式为 给定一个a,b计算直到迭代结果>=b时,最小的x,输出对m取余后的值 •思路 $log*_{a}(1)=1+log*_{a}(0)=1-1=0$ $log*_{a}(a)=1+log*_{a}(log_{a}(a))=1+log*_{a}(1)=1$ $log*_{a}(a^{a})=1+log*_{a}(a)=2$       .... 以此类推得$log*_{a}(a^{a^{a^{a^{a^{...}}}}…
>传送门< 前言 这题比赛的时候觉得能做,硬是怼了一个半小时,最后还是放弃了.开始想到用二维前缀和,结果$n\leq 10^{6}$时间和空间上都爆了,没有办法.赛后看题解用树状数组,一看不就是二维树状数组么,结果时间是够了,然而$sum[maxn][maxn]$空间上就爆了.于是开始研究别人的代码,终于看懂了,就觉得很神奇,这个思想很妙,后来再看别的博客,原来是二维偏序(就是利用树状数组/$CDQ$分治求$M$个点中每个点横纵坐标均小于这个点的权值和) 题意 有一个$n\ast n(n\le…
F    Greedy Sequence You're given a permutation aa of length nn (1 \le n \le 10^51≤n≤105). For each i \in [1,n]i∈[1,n], construct a sequence s_isi​ by the following rules: s_i[1]=isi​[1]=i; The length of s_isi​ is nn, and for each j \in [2, n]j∈[2,n]…
A:Who is better? 题目链接:https://nanti.jisuanke.com/t/41383 题意: 类似于有N个石子,先手第一次不能拿完,每次后手只能拿 1 到 前一次拿的数量*2之间的数量,不能拿时则输 分析: 最近一直在刷博弈论的题,比赛的前一天晚上打的华东师范校赛第一题也刚好是道博弈题,说起来两者还是有点类似的地方 但是这题显然要难的多,好在我打完华东师范校赛的我又狠狠的把博弈论专题看了一遍,也很巧的看到了这两篇博客 https://blog.csdn.net/dgq…
传送门 A. The beautiful values of the palace 题意: 给出一个\(n*n\)的矩阵,并满足\(n\)为奇数,矩阵中的数从右上角开始往下,类似于蛇形填数那样来填充. 之后会给出\(m\)个有效数字的坐标,坐标左下角为\((1,1)\),右上角为\((n,n)\),其余数字都为\(0\). 之后会有多个询问,每个询问给出一个子矩阵,问子矩阵中元素和为多少. 思路: 矩阵每个位置的数值可以\(O(1)\)计算: 将每个询问拆分成四个询问,接下来处理的问题就是怎么维…
传送门 B. Dudu's maze 题意: 是什么鬼东西???我读题可以读半小时QAQ 给出一张无向图,一个人在里面收集糖果,每个点都有一个糖果,特殊点除外.当他第一次进入特殊点时,会随机往一条边走:之后再进入特殊点时,直接退出. 问最后期望获得的糖果数为多少. 思路: 注意到这个人肯定会贪心走的,即是每次到一个连通块,肯定要把里面的糖果都拿完,然后再选一个随机走. 不管往哪个方向,还是类似地贪心走,将那个连通块走完. 所以就两次\(dfs\)好了,第一次\(dfs\)首先求出第一个连通块,然…
传送门 B. Light bulbs 题意: 起初\(n\)个位置状态为\(0\),\(m\)次操作,每次操作更换区间状态:\(0\)到\(1\),\(1\)到\(0\). 共有\(T,T\leq 1000\)组数据,\(n\leq 10^6,m\leq 1000\). 最后输出状态为\(1\)的个数和. 思路: 一开始冲了一发维护差分,最后求出前缀和,成功\(TLE\). 其实只要发现有用的点只有\(2m\)个,之后从左到右扫一遍,类似于扫描线的思想,累加贡献就行了. Code #includ…
[传送门] FFT第三题! 其实就是要求有多少三元组满足两短边之和大于等于第三边. 考虑容斥,就是枚举最长边,另外两个数组里有多少对边之和比它小,然后就是 $n^3$ 减去这个答案. 当 $n \leq 1000$ 时,直接暴力,因为如果继续 FFT 的话复杂度是 $O(slogs)$,$s$ 表示值域,值域都到 $10^5$,$100$ 组吃不消. 比 $1000$ 大就 FFT 做即可. #include <bits/stdc++.h> struct Complex { double r,…
题目链接:https://nanti.jisuanke.com/t/41406 思路:如果k的天数足够大,那么所有水池一定会趋于两种情况: ① 所有水池都是一样的水位,即平均水位 ② 最高水位的水池和最低水位的水池高度只相差一个高度,且最低水位一定是平均水位 如果k给了个限制: 我们当然需要先算出所有水池高度的平均值. 然后从低到高排序,二分小于平均值的水位,二分高于平均值的水位, 然后判断二分的预期值需要的天数是否小于等于k.然后二分找出最低水位的最大值, 最高水位的最小值,两者相减就是答案了…
题目链接:https://nanti.jisuanke.com/t/41408 题目意思很简单,就是个模拟过程. #include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <map> #define rep(i,j,k) for(int i = (j); i <= (k); ++i) #define per(i,j,k) fo…
题目链接:https://nanti.jisuanke.com/t/41387 思路:我们需要从后往前维护一个递增的序列. 因为:我们要的是wi + m <= wj,j要取最大,即离i最远的那个j,每次索引一个wi都需要判断下是不是大于w(i+1),完成递增序列的维护. 代码里面能更好的理解为什么要维护一个递增的序列 #include <iostream> #include <cstdio> #include <cstring> #include <algo…
题目链接:https://nanti.jisuanke.com/t/41305 题目说的很明白...只需要反向跑spfa然后输入-dis,然后添-dis的一条边就好了... #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <queue> #include <map> #include <cmath>…