【思维】Luogu P3941 入阵曲】的更多相关文章

[luogu]P3941 入阵曲 题目描述 小 F 很喜欢数学,但是到了高中以后数学总是考不好. 有一天,他在数学课上发起了呆:他想起了过去的一年.一年前,当他初识算法竞赛的 时候,觉得整个世界都焕然一新.这世界上怎么会有这么多奇妙的东西?曾经自己觉得难以 解决的问题,被一个又一个算法轻松解决. 小 F 当时暗自觉得,与自己的幼稚相比起来,还有好多要学习的呢. 一年过去了,想想都还有点恍惚. 他至今还能记得,某天晚上听着入阵曲,激动地睡不着觉,写题写到鸡鸣时分都兴奋不 已.也许,这就是热血吧.…
题目大意 洛谷链接 给出一个矩阵和 \(K\) ,问有多少子矩阵中的元素和能整除 \(K\). 数据范围 \(2\leq n,m\leq 400\),\(0\leq K\leq 10^6\). 思路 暴力枚举 \(O(n^6)\),二维前缀和优化 \(O(n^4)\). 根据数据范围我们需要想出至少 \(O(n^3)\) 的方法.而枚举左上角或右下角的方法显然是不可取的,所以我们想怎么优化枚举矩阵的方法. 我们可以通过枚举上界和下界,从而规定矩阵的高度,从而得到许多等高矩阵.从而可以把其抽象为一…
题目传送门 题目大意:给你一个\(n\)*\(m\)的矩阵,每个位置都有一个数,求有多少不同的子矩阵使得矩阵内所有数的和是\(k\)的倍数. 数据范围给的非常友好233,期望得到的暴力分:75分.前12个点可以用\(O(n^4)\)算法水过,对于\(<=400\)的有特殊性质2的数据,我们还可以尝试苟一下,开始用了一个什么鬼方法(?),其实我们只要枚举所有可能的矩形面积判断一下是否满足条件再加上这种矩形面积的所有可能数就行啦. #include<cstdio> #include<a…
嘟嘟嘟 这道题我觉得跟最大子矩阵那道题非常像,都是O(n4)二维前缀和暴力很好想,O(n3)正解需要点转化. O(n4)暴力就不说啦,二维前缀和,枚举所有矩形,应该能得55分. O(n3)需要用到降维的思想.先考虑这么个问题:对于一个序列,求区间和是k的倍数的区间个数.有点想法的暴力就是前缀和预处理,然后O(n2)枚举.那么能不能不枚举呢?观察会发现,任意两个 mod k余数相同的前缀和相减得到的区间,都能被k整除.有了这一点,这道题就变成求余数相同的前缀有多少对了.那么开一个数组dp[i]记录…
题目传送门 这道题也是今年湖南集训队Day8的第一题,昨天洛谷的公开赛上又考了一遍,来发个记录(其实是因为五月天,另外两道题分别是将军令和星空,出这次题目的人肯定同为五迷(✪㉨✪)) 话不多说.先理解下题意,给定一个n*m的矩阵,要求出能被k整除的子矩阵个数. 题意很简单,但是矩阵这方面的题目一直是我最大的软肋,所以昨天做的时候就直接交了个O( n^2 m^2 )的暴力,然后运气还可以,水了60分(据说暴力只有55?)然后在网上看到某集训队大犇的解题报告,搞懂了这题的正解做法. 那位大犇的做法是…
\(\color{#0066ff}{ 题目描述 }\) 小 F 很喜欢数学,但是到了高中以后数学总是考不好. 有一天,他在数学课上发起了呆:他想起了过去的一年.一年前,当他初识算法竞赛的 时候,觉得整个世界都焕然一新.这世界上怎么会有这么多奇妙的东西?曾经自己觉得难以 解决的问题,被一个又一个算法轻松解决. 小 F 当时暗自觉得,与自己的幼稚相比起来,还有好多要学习的呢. 一年过去了,想想都还有点恍惚. 他至今还能记得,某天晚上听着入阵曲,激动地睡不着觉,写题写到鸡鸣时分都兴奋不 已.也许,这就…
题目背景 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 入阵曲 题解在代码里. #include<iostream> #include<cstdio> #include<cstring> using namespace std; long long a[1000][1000],sum[1000][1000],ans=0,tot,n,m,k,flag[1100000],b[1110000]; int main() { cin>>n>>m>…
题目背景 pdf题面和大样例链接:http://pan.baidu.com/s/1cawM7c 密码:xgxv 丹青千秋酿,一醉解愁肠. 无悔少年枉,只愿壮志狂. 题目描述 小 F 很喜欢数学,但是到了高中以后数学总是考不好. 有一天,他在数学课上发起了呆:他想起了过去的一年.一年前,当他初识算法竞赛的 时候,觉得整个世界都焕然一新.这世界上怎么会有这么多奇妙的东西?曾经自己觉得难以 解决的问题,被一个又一个算法轻松解决. 小 F 当时暗自觉得,与自己的幼稚相比起来,还有好多要学习的呢. 一年过…
题目传送门 题目背景 丹青千秋酿,一醉解愁肠.无悔少年枉,只愿壮志狂. 题目描述 小$F$很喜欢数学,但是到了高中以后数学总是考不好.有一天,他在数学课上发起了呆:他想起了过去的一年.一年前,当他初识算法竞赛的时候,觉得整个世界都焕然一新.这世界上怎么会有这么多奇妙的东西?曾经自己觉得难以解决的问题,被一个又一个算法轻松解决.小$F$当时暗自觉得,与自己的幼稚相比起来,还有好多要学习的呢.一年过去了,想想都还有点恍惚.他至今还能记得,某天晚上听着入阵曲,激动地睡不着觉,写题写到鸡鸣时分都兴奋不已…
题解 观察数据范围,可以 \(\mathcal O(n^2m^2)\) 暴力计算,而加上特殊性质,则可以骗到 \(75pts\) 正解: 我们发现,在一维情况下,\(\mod k\) 相同的前缀和相减,一定是 \(k\) 的倍数.那么我们就可以统计一个不同 \(\mod k\) 的值出现了几次,\(\mathcal O(n)\) 求解. 扩展到二维,做法是将一段连续的行合并成一行,ppt 上叫压行.再按一行的做法做,复杂度 \(\mathcal O(n^2m)\) 注意:记得开 long lon…
题目:P4930「FJ2014集训」采药人的路径 思路: 这篇不算题解,是让自己复习的,什么都没说清楚. 很久没有写点分治了,以前为了赶课件学的太急,板子都没打对就照着题解写题,导致学得很不扎实. 这道题差不多是在郭老师的指导下一点点凑出来的,还是没能自己完整写出一道题,惭愧. 这道题大意是:给出一棵边权为0/1的树,求满足以下条件的路径总数:0的个数等于1的个数,且路径上存在一点到路径两端也满足该条件. 这种求路径总数的题,可以想到用点分治. 把0看作-1,就可以转化为路径边权和为0. 如果没…
对于这次考试来说,总体考得还是不错的 就是有一个小问题,特判一定要判对,要不然和不判一样,甚至错了还会挂掉30分 还有一个就是时间分配问题,总是在前几个题上浪费太多时间,导致最后一个题完全没有时间思考 所以最后一个题我又成功的爆零了 下次冲第一,把分拿满 当然最重要的还是 关于这个考场上是想正解还是暴力的问题 我现在有了一个大概的思路,就是 不要浪费太多时间去想,一般保持在一个小时以内是可以的 当然这是在前10分钟已经把暴力思路弄出来的情况下(暴力程序可以先不着急打) 那下面就是正解时刻了 T1…
题目链接:https://www.luogu.org/problemnew/show/P1031 题目描述有 $N$ 堆纸牌,编号分别为 $1,2,…,N$.每堆上有若干张,但纸牌总数必为 $N$ 的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为 $1$ 堆上取的纸牌,只能移到编号为 $2$ 的堆上:在编号为 $N$ 的堆上取的纸牌,只能移到编号为 $N-1$ 的堆上:其他堆上取的纸牌,可以移到相邻左边或右边的堆上. 现在要求找出一种移动方法,用最少的移动次数使每堆上纸牌数都…
原题传送门:P2787 语文1(chin1)- 理理思维 前置芝士:珂朵莉树 窝博客里对珂朵莉树的介绍 没什么好说的自己看看吧 珂朵莉树跑的飞快,但还是没有memset0小姐姐跑得快 操作1:暴力统计出奇迹 操作2:推平区间,珂朵莉树基本操作 操作3:排序区间,我就写了一个桶排 窝一开始头文件直接用bits出玄学ce toupper是把小写转大写,以防数据出锅 #pragma GCC optimize("O3") #include<cstdio> #include<c…
P2787 语文1(chin1)- 理理思维 题目背景 蒟蒻HansBug在语文考场上,挠了无数次的头,可脑子里还是一片空白. 题目描述 考试开始了,可是蒟蒻HansBug脑中还是一片空白.哦不!准确的说是乱七八糟的.现在首要任务就是帮蒟蒻HansBug理理思维.假设HansBug的思维是一长串字符串(字符串中包含且仅包含26个字母),现在的你,有一张神奇的药方,上面依次包含了三种操作: 获取第x到第y个字符中字母k出现了多少次 将第x到第y个字符全部赋值为字母k 将第x到第y个字符按照A-Z的…
Solution 我又双叒叕去看题解啦$QAQ$, 真的想不到鸭 输入 $a$ 和 $n$ 互质, 所以满足 $a \times i \ mod \ n$ $(0<=i<n)$ 肯定是不重复的 根据这一个性质 , 设 满足条件的子串的开头位置为 $s$ 先不考虑$01$, 仅考虑开头位置上的值 $a*s+b$, 设它为$x$, 则它接下来第 $i$ 位的值为 $x+(i-1)*a$ 若那个位置上的字符为 $0$, 则 $0<=x+(i-1)*a<p$, 反之 $p<=x+(i…
当时一直在想前缀和...多亏张队提醒... 从1到n背次包,保存每一个状态下的价值,就是不要把第一维压掉:再从n到1背一次,同样记住每种状态: 然后询问时相当于是max(前缀+后缀),当然前缀后缀中间去掉了一个应去掉的商品. #include<cstdio> #include<iostream> #define R register int using namespace std; inline int g() { R ret=,fix=; register :fix; +(ch^…
题目传送门 这题真的一点也不难qwq.只要想出来就没有什么代码难度的qwq. 每个竹竿只可能向左倒或向右倒,把这两种情况都存在数组中,将数组排序,就可以知道最后落在同一位置的有多少竹竿.就可以知道落在这个位置的竹竿对数,注意,比如有k个竹竿落在同一位置,那么是有k+k-1+k-2+...+1对的. 开longlong,没了. Code #include<cstdio> #include<algorithm> using namespace std; typedef long lon…
Code: #include<bits/stdc++.h> #define maxn 200001 using namespace std; void setIO(string s) { string in=s+".in"; freopen(in.c_str(),"r",stdin); } namespace tr { #define mid ((l+r)>>1) #define lson t[x].l #define rson t[x].r…
一眼望去不会. 考虑问题中的\(f(i,j)=|\sum_{p=i}^{j}​a_p​ |\)的实际意义. 其实就是前缀和相减的绝对值. \(f(i,j)=|\ sum[j]-sum[i-1]\ |\) \(f(i,j)=max(sum[j]-sum[i-1],sum[i-1]-sum[j])\) 那加上x呢. \(f(i,j)=max[(sum[j]+xj)-(sum[i-1]+x(i-1)),(sum[i-1]+x(i-1))-(sum[j]+xj)]\) \(sum[i]+xi\)联想到直…
Description 给出一棵N个结点的树,选择L条路径,覆盖这些路径上的结点,使得被覆盖到的结点数最多. Input 第一行两个正整数N.L(2 <= N <= 1,000,000, 0 <= L <= N).下面有N-1行,每行两个正整数A和B(1 <= A, B <= N),表示一条边(A,B). 首先有一个贪心:每一次选择的路径的两个端点都是两个叶子节点. 证明也很简单:如果端点不是叶子,那就在向下延申一点也一定不会更差. 先将所有叶子都列出来,假设有 $x$…
这个题思路十分巧妙,感觉很多题都有类似的套路. 我们发现异或操作其实就是将一个数的二进制的若干个 $0$ 变成 $1$,或者一些 $1$ 变成 $0$. 而每次按照某种顺序一位一位地异或也可以起到同时异或多位的结果. 所以我们每次只要把每个节点连到只该变一位的节点就可以了. 然后就直接跑一个最短路~ #include <cstdio> #include <algorithm> #include <cstring> #include <queue> #defi…
Code: #include <bits/stdc++.h> #define setIO(s) freopen(s".in","r",stdin), freopen(s".out","w",stdout) #define maxn 1000000 #define ll long long #define lson (now<<1) #define rson ((now<<1)|1) usin…
这是QZEZ的Luogu团队中的一道难得的水题,题面和数据都是CJJ dalao出的,然后我就没有太看懂题意. 也是一道经典的割点好题,但需要一定的思维. 首先对于题意,它只需要得到切断的作用就可以了(将\(1\)的联通快分成几部分即可) 然后我们就可以对周围的点都进行建边,然后跑一下看看有没有割点. 有的话很明显,随便找一个割点一道切掉即可.但如果没有呢? 据CJJ dalao和我的一阵讨论发现这时候就只需要割掉两个点即可. 例如类似这样的一个图: 1 1 1 1 0 1 1 1 1 我们在割…
题目链接:https://www.luogu.org/problemnew/show/P2146 变量名真毒瘤 我真的再也不把l,left,r,right弄反了 反向思维更好做一些 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define ll long long #define lson left, mid, rt<<1 #defi…
题目链接:https://www.luogu.org/problemnew/show/P2024 摘吊打集训队的九日dalao一句话 关于带有多个相对集合的全集,我们可以多开几倍的空间.每一倍的元素表示这个当前里的相对元素 那么这道题,既然只有三种关系,我们就可以搞三个并查集来记录不同的关系. 我们令fa[i]表示自己本身,fa[i+n]表示猎物,fa[i+n+n]表示天敌. 接着就是对这道题的处理: 首先,吐槽一句,这nm什么xjb食物链..明明是个环.. 其次,吐槽两句,这nm为什么无脑相信…
挺有意思的题. 优质题解: https://www.luogu.org/blog/user55639/solution-p2467 题意为求长度为n,取值为$[1, n]$的波动序列的个数. 首先需要三个性质: 性质1:在一个波动序列中,如果数字$i$与数字$i - 1$不相邻,那么把$i$与$i - 1$交换之后也会构成一个波动序列 性质2:如果已经构造好了一个波动序列,那么把这个序列中的每一个数$a_{i}$全部变成$(n + 1 - a_{i})$也是一个波动序列,且山谷和山峰的位置相反…
题目链接:https://www.luogu.org/problemnew/show/P1983 符合了NOIP命题的特点,知识点不难,思维量是有的. step1:把题读进去,理解.得到 非停靠点的等级 < 停靠点的等级 step2:把上述不等关系转化为有向图.即由非停靠点向停靠点连一条边 step3:对于每个入度为零的点dfs找最长路.取其max step4:输出max+1 code: #include <queue> #include <cstdio> #include…
连NOI Day1T1都不会做...看了题解都写不出来还要抄Claris的代码.. 题目链接: (luogu)https://www.luogu.org/problemnew/show/P1117 (bzoj)https://www.lydsy.com/JudgeOnline/problem.php?id=4650 (uoj)http://uoj.ac/problem/219 题解: \(f[i]\)表示以\(i\)结束的\(AA\)型子串个数,\(g[i]\)表示以\(i\)开始的\(AA\)…
题目链接 这次不咕了 https://www.luogu.org/problemnew/show/AT2389 闲扯 考场20分爆搜走人 \cy 话说这几天T3都很考验思维啊 分析 我们先钦定一只鸡(虽然考试时是苹果但是我觉得杀鸡更亲切(因为我们某位同学))先必须活着,所以呢我们需要逆着倒推每一组关系,然后把为了保证我们钦定的鸡活着必须杀的鸡放进一个集合,为了方便表示用\(f[now][i]=1/0\)表示钦定第now只鸡活着第\(i\)只鸡最终有没有加入集合; 对于一对关系\((a,b)\),…