题目大意 有一个\(n\times m\)的网格,\((x,y)\)权值为\(a_{x,y}\),要求从中选取三个不相交的\(k\times k\)的正方形使得它们权值最大.\(n,m,k\leqslant1500\) 题解 其实,只有如下六种方法分割网格: 对于每一种情况,我们在每个小方格中找最大的\(k\times k\)的正方形相加即可.可以令\(a[i][j],b[i][j],c[i][j],d[i][j]\)分别表示\((i,j)\)的左上.右上.左下.右下的区域中最大的\(k\tim…
Portal Description 给出一个\(n\times m(n,m\leq1500)\)的矩阵,从中选出\(3\)个互不相交的\(k\times k\)方阵,使得被选出的数的和最大. Solution 奇怪做法... 三个矩形分别在三个部分中,把矩形划分成三部分只有这六种.首先搞出\(s[i][j]\)表示以\((i,j)\)为右下角的\(k\times k\)方阵的和,然后搞出\(f_1[i][j]\)表示\((1,1)-(i,j)\)中\(s\)的最大值,\(f_2[i][j]\)…
参考:https://blog.csdn.net/FAreStorm/article/details/49200383 没有技术含量但是难想难写,枚举情况图详见参考blog懒得画了 bzoj蜜汁TTTTTTTTTTTTTTTLE upd:bzoj数据有问题,快读GG #include<iostream> #include<cstdio> #include<algorithm> using namespace std; const int N=1505; int n,m,…
BZOJ原题链接 洛谷原题链接 第一个问题是经典的最多不相交区间问题,用贪心即可解决. 主要问题是第二个,求最小字典序的方案. 我们可以尝试从\(1\to n\)扫一遍所有区间,按顺序对每一个不会使答案变差的区间都尝试着去填,这样就可以保证方案的字典序最小. 考虑如果快速判断该区间是否能成为最优解,开头先按右端点从小到大排序,左端点从大到小排序,再去除有包含关系的区间,这样使得讨论更为简单. 设待插入的区间为\([r,l]\),该区间左边的第一个已插入的区间的右端点为\(L\),右边的第一个已插…
BZOJ原题链接 洛谷原题链接 在一个强连通分量里的\(ATM\)机显然都可被抢,所以先用\(tarjan\)找强连通分量并缩点,在缩点的后的\(DAG\)上跑最长路,然后扫一遍酒吧记录答案即可. #include<cstdio> using namespace std; const int N = 5e5 + 10; struct eg{ int x, y; }; eg a[N]; int fi[N], di[N], ne[N], cfi[N], cdi[N], cne[N], va[N],…
洛谷P3627:https://www.luogu.org/problemnew/show/P3627 思路 由于有强连通分量 所以我们可以想到先把整个图缩点 缩点完之后再建一次图 把点权改为边权 并把边权转为负数 即可用SPFA求最短路间接求最长路了 最后我们查询所有的酒吧 跳出最大的ans即可 思路简单 但是代码有些冗长 代码 #include<iostream> #include<cstring> using namespace std; #define maxn 50001…
题目地址:https://www.luogu.com.cn/problem/P3627 第一次寒假训练的结测题,思路本身不难,但对于我这个码力蒟蒻来说实现难度不小-考试时肛了将近两个半小时才刚肛出来.我也是吐了 题面 Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruseri 银行的 ATM 取款机.令人奇怪的是,Siruseri 的酒吧也都设在路口,虽然并不是每个路口都设有酒吧. Banditji 计划实施 Siruseri 有史以…
这题一看就是缩点,但是缩完点怎么办呢?首先我们把所有的包含酒吧的缩点找出来,打上标记,然后建立一张新图, 每个缩点上的点权就是他所包含的所有点的点权和.但是建图的时候要注意,每一对缩点之间可能有多条边,所以我们可以先把重边去除一下,在建立新图,具体操作如下: ;i<=n;i++) { ) continue; for(int j=last[i];j;j=g[j].next) { int v=g[j].to; ) { e[++cnt].a=g[i].co; e[cnt].b=g[v].co; } }…
题目描述 Siruseri 城中的道路都是单向的.不同的道路由路口连接.按照法律的规定, 在每个路口都设立了一个 Siruseri 银行的 ATM 取款机.令人奇怪的是,Siruseri 的酒吧也都设在路口,虽然并不是每个路口都设有酒吧. Banditji 计划实施 Siruseri 有史以来最惊天动地的 ATM 抢劫.他将从市中心 出发,沿着单向道路行驶,抢劫所有他途径的 ATM 机,最终他将在一个酒吧庆 祝他的胜利. 使用高超的黑客技术,他获知了每个 ATM 机中可以掠取的现金数额.他希 望…
题目大意:给你一张$n(n\leqslant5\times10^5)$个点$m(m\leqslant5\times10^5)$条边的有向图,有点权,给你起点和一些可能的终点.问从起点开始,到任意一个终点经过的点权和的最大值是多少. 题解:先把有向图缩点,然后从起点跑最长路,对每个终点取个最大值即可 卡点:求最长路写了$dijkstra$,然后死活调不出. C++ Code: #include <algorithm> #include <cstdio> #include <cc…
题目描述 输入格式: 第一行包含两个整数 N.M.N 表示路口的个数,M 表示道路条数.接下来 M 行,每行两个整数,这两个整数都在 1 到 N 之间,第 i+1 行的两个整数表示第 i 条道路的起点和终点的路口编号.接下来 N 行,每行一个整数,按顺序表示每 个路口处的 ATM 机中的钱数.接下来一行包含两个整数 S.P,S 表示市中心的 编号,也就是出发的路口.P 表示酒吧数目.接下来的一行中有 P 个整数,表示 P 个有酒吧的路口的编号. 输出格式: 输出一个整数,表示 Banditji…
Analysis 建图+强连通分量+SPFA求最长路 但要保证最后到达的点中包含酒馆 虽然思路并不难想,但要求的代码能力很高. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<queue> #define maxn 500010 using namespace std; inline int read() { ; ; char c…
传送门 题目可能排版有问题,导致出现一些乱码,具体请参考洛谷原题 题目描述 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行,推出了一种地铁换乘公交车的优惠方案: 在搭乘一次地铁后可以获得一张优惠票,有效期为 45 分钟,在有效期内可以消耗这张优惠票,免费搭乘一次票价不超过地铁票价的公交车.在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于 45 分钟,即: t_{bus} - t_{subway} \leq 45tbus​−tsubway​≤45 搭乘地铁获得的优惠票可以累积,即…
洛谷模拟NOIP考试反思 想法 考了这么简单的试qwq然而依然emmmmmm成绩不好 虽然本次难度应该是大于正常PJ难度的但还是很不理想,离预估分数差很多qwq 于是就有了本反思嘤嘤嘤 比赛链接 原比赛链接(已结束但仍然可提交) 题目解析反思 第一题 超简单(虽然仍然没做对) 第二题 代码扔上来qwq(虽然还是不会) 第三题 代码 第四题 毒瘤极了wodema 据说原来数据是50%那里的,但是出题人z某灵机一动加到了1000orz 于是很多人自然而然地想到了状压DP 普及组是到不了这个难度的,主…
[CodePlus 2017 11月赛&洛谷P4058]木材 Description 有 n棵树,初始时每棵树的高度为 Hi ,第 i棵树每月都会长高 Ai.现在有个木料长度总量为 S的订单,客户要求每块木料的长度不能小于 L ,而且木料必须是整棵树(即不能为树的一部分).现在问你最少需要等多少个月才能满足订单. 输入格式: 第一行 3个用空格隔开的非负整数 n,S,L,表示树的数量.订单总量和单块木料长度限制. 第二行 n 个用空格隔开的非负整数,依次为 H1,H2,...,Hn . 第三行…
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠: 补月赛题的锅. 小 F 虽然经常咕咕咕,但他完成任务也是很厉害的,他一次性可以完成剩余任务的任一非空子集.比如,他现在可以选择以下几种中的一种: 看 iG 夺冠: 补月赛题的锅: 一边看 iG 夺冠的直播,一边补锅. 当然,比赛实在是太精彩了,所以小 F 就去看比赛了. 不过,当金雨从天而降.I…
题目背景 终于结束的起点终于写下句点终于我们告别终于我们又回到原点…… 一个个 OIer 的竞赛生涯总是从一场 NOIp 开始,大多也在一场 NOIp 中结束,好似一次次轮回在不断上演.如果这次 NOIp 是你的起点,那么祝你的 OI 生涯如同夏花般绚烂.如果这次 NOIp 是你的终点,那么祝你的 OI 回忆宛若繁星般璀璨.也许这是你最后一次在洛谷上打比赛,也许不是.不过,无论如何,祝你在一周后的比赛里,好运. 当然,这道题也和轮回有关系. 题目描述 广为人知的斐波拉契数列 \mathrm{fi…
题目描述 你是一只小跳蛙,你特别擅长在各种地方跳来跳去. 这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 ii 块的石头高度为 h_ihi​,地面的高度是 h_0 = 0h0​=0.你估计着,从第 ii 块石头跳到第 jj 块石头上耗费的体力值为 (h_i - h_j) ^ 2(hi​−hj​)2,从地面跳到第 ii 块石头耗费的体力值是 (h_i) ^ 2(hi​)2. 为了给小 F 展现你超级跳的本领,你决定跳到每个石头上各一次,并最终停在任意一块石头上,并且小…
https://www.luogu.org/contestnew/show/12006 我是比赛完后在去写的 这是我第一次打洛谷月赛,之前一次是比赛完才去看而且写了第一题就没写后面的了 284分,太水了,rank85左右 第一题第二题AC了,第三题写了3^n的算法,知道会超时,也知道满分做法应该是只考虑有价值的状态 但是还是没想出正解,拿了70分 第四题想到了讲评中说的错误的做法,然后细节比较多,怒刚1.5h,然而写挂了,交上去14分…… 还不如写暴力有30~40分 考场策略出错了,如果最后一道…
传送门 题意: 统计\(k\)元组个数\((a_1,a_2,\cdots,a_n),1\leq a_i\leq n\)使得\(gcd(a_1,a_2,\cdots,a_k,n)=1\). 定义\(f(n,k)\)为满足要求的\(k\)元组个数,现在要求出\(\sum_{i=1}^n f(i,k),1\leq n\leq 10^9,1\leq k\leq 1000\). 思路: 首先来化简一下式子,题目要求的就是: \[ \begin{aligned} &\sum_{i=1}^n\sum_{j=1…
更新于2019.12.22 本蒟蒻在博客园安家啦!!! 本蒟蒻的博客园主页 为更好管理博客,本蒟蒻从今天开始,正式转入博客园. 因为一些原因,我的CSDN博客将彻底不会使用!!!(带来不便,敬请谅解) 我之前的文章,全部都已经搬到了博客园 如在其他网站看到我的博文,均为转载. 转载请标出处 ,链接留我的博客园地址啦,谢谢小伙伴们!!! CSDN,彻底不会使用,留链接就当个回忆吧 争取每周更一篇文章吧 博主还是一个小蒟蒻, 还要加油学习呢! 目前在学习C++,搞信息学奥赛. 因为算法也没学几个,所…
P1310 表达式的值 题目描述 给你一个带括号的布尔表达式,其中+表示或操作|,*表示与操作&,先算*再算+.但是待操作的数字(布尔值)不输入. 求能使最终整个式子的值为0的方案数. 题外话 不久之前我在codewars上做过一道类似的题目. 以及把它搬运到了洛谷上. 布尔表达式计数问题 考虑这样一个问题: 有两个布尔变量\(x\)和\(y\). 我们知道使\(x\)等于1的方案有\(x_1\)种,等于0的方案有\(x_0\)种:使\(y\)等于1的方案有\(y_1\)种,等于0的方案有\(y…
LOJ#3030. 「JOISC 2019 Day1」考试 看起来求一个奇怪图形(两条和坐标轴平行的线被切掉了一个角)内包括的点个数 too naive! 首先熟练的转化求不被这个图形包含的个数 -- 也不好求 我们把c转化成max(c,a + b) 就会发现这条斜线把不合法的刚好分成了三个部分,也就是第一门小于a的,总分大于c的,和第二门小于b的总分大于c的,和总分小于c的 你可以发现前两个部分是不相交的,于是开个树状数组把询问按c排序做一遍就好了,然后点集按s + t排序,小于c的就从所在的…
2019.11.9 csp-s 考前模拟 是自闭少女lz /lb(泪奔 T1 我可能(呸,一定是唯一一个把这个题写炸了的人 题外话: 我可能是一个面向数据编程选手 作为一个唯一一个写炸T1的人,成功通过多组数据将自己的代码改对/(苦笑 SOLUTION: 对于某个排列的下一个排列,通过我也不知道是感性还是"李"性李姐,我们可以知道,它一定将当前排列最靠后的一个顺序对变成逆序对 倒着看就是找最小的一组逆序对 可以这样理解,从后往前看这个序列,当出现\(a_i<a_{i+1}\)时(…
纪中2159. max 洛谷P1249 最大乘积 说明:这两题基本完全相同,故放在一起写题解 纪中2159. max (File IO): input:max.in output:max.out 时间限制: 1000 ms  空间限制: 262144 KB  具体限制 Goto ProblemSet 题目描述 一个正整数一般可以分为几个互不相同的自然数的和,如3=1+2,4=1+3,5=1+4=2+3,6=1+5=2+4,….现在你的任务是将指定的正整数n分解成m个(m>=1)互不相同的自然数的…
LOJ BZOJ 洛谷 对这题无话可说,确实比较...裸... 像dls说的拿拓扑和parent树一套就能出出来了... 另外表示BZOJ Rank1 tql... 暴力的话,由每个\(A_i\)向它能支配的\(B_j\)连边,再由\(B_j\)向它能匹配的\(A_k\)(是\(A_k\)的前缀)连边,拓扑DP就可以了. 正解就是优化建图方式. 把串反过来,\(B_j\)能匹配\(A_k\)就是\(B_j\)是\(A_k\)的后缀,换句话说\(B_j\)能匹配\(parent\)树中它子树的所有…
LOJ 洛谷 考场上都拍上了,8:50才发现我读错了题=-= 两天都读错题...醉惹... \(Solution1\) 先求一遍前缀异或和. 假设左端点是\(i\),那么我们要在\([i,n]\)中找一个\(sum_j\)使得它和\(sum_{i-1}\)异或最大.可以可持久化Trie. 对\(i\in[1,n]\)都求一遍它能得到的最大的异或值,扔到堆里. 每次从堆里找出值最大的,假设是\(x\),与\(sum_{x-1}\)异或得到最大值的数是\(sum_y\),那么之后就不能选\(sum_…
题目链接 [洛谷传送门] [LOJ传送门] 题目大意 给定一棵树,每次选取树上的一个点集,要求点集中的每个点不能是另一个点的祖先,选出点集的代价为点集中权值最大点的权值,问将所有点都选一遍的最小代价为多少. (题目大意来自洛谷题解某一篇) 题解 分析一下这一道题目. 首先,因为不能存在祖先关系,那么在一条链上的所有点一定是要分开来取的. 那么很显然,根必须一个点一个集合,那么在递归子树,同样的操作,把子树独立的递归,然后合并子树内的最大值. 代码 #include <bits/stdc++.h>…
题目链接 [洛谷传送门] [LOJ传送门] 题目大意 让你求区间异或和前\(k\)大的异或和的和. 正解 这道题目是Blue sky大佬教我做的(祝贺bluesky大佬进HA省A队) 我们做过某一些题目,非常的相似.[超级钢琴]还有[最小函数值]还有[最大异或和] 感觉这一些题目拼在一起就变成了这一道水题. 首先我们需要预处理出,所有区间的异或最大值. 这个东西可以用可持久化\(01trie\)实现,那么我们思考一下如何实现查询第\(k\)大的值的操作. 以下是关于01字典树中查询第k大的操作的…
https://www.luogu.org/problemnew/show/P5283 https://loj.ac/problem/3048 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 n 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 1 到 n.第 ii 种馅儿具有一个非负整数的属性值 a_i.每种馅儿的数量都足够多,即小粽不会因为缺少原料而做不出想要的粽子.小粽准备用这些馅儿来做出 k 个粽子. 小粽的做法是:选两个整数数 l, r,满足 1⩽…