首页 > TAG信息列表 > MX

[NOI2015] 品酒大会 题解

[NOI2015] 品酒大会 题解 link 题目大意 给定一个长度为 \(n\) 的字符串 \(s\) ,和第 \(i\) 个位置的权值 \(a_i\) 对于每一个 \(r\in [0,n)\) ,求满足 \(\text{lcp}(i,j)\ge r\) 的 \((i,j)\) 的对数 以及所有的 \((i,j)\) 中, \(a_i\times a_j\) 的最大值 \(n\le 3\times 10^5\) 题

Codeforces Round #798 (Div. 2) D

D. Lena and Matrix 首先我们能想到的就是暴力枚举 但是肯定是不行的 我们可以减少枚举个数 那么哪些是可以砍掉的呢 首先在黑色圈内的黑色块 肯定是可以被砍掉的 我们考虑外圈的 好像还是很多 那我们考虑四个角的 我们可以考虑到切比雪夫距离好像维护的就是四个角(左上左下右上右

CSP-S开小灶2

A. 元素周期表 发现当同一列有多个点,他们所在行可以合并 同一行有多个点,他们所在列可以合并 一个方案可行,当且仅当能够合并成一个格子 用并查集处理,合并行列后得到的矩形,他的每一行每一列至多有一个元素 那么\(ans = n +m - 1 - cnt\) code #include<cstring> #include<cstdio> #

抽屉原理(鸽巢原理)

已知n+ 1个正整数,它们全都小于或等于2n,证明当中一定有两个数是互质的 取n个盒子,在第一个盒子我们放1和2,在第二个盒子我们放3和4,第三个盒子是放5和6,依此类推直到第n个盒子放2n-1和2n这两个数。 如果我们在n个盒子里随意抽出n+1个数。我们马上看到一定有一个盒子是被抽空的。 因此在

LC733

const int dx[4] = {1, 0, 0, -1}; const int dy[4] = {0, 1, -1, 0}; vector<vector<int>> floodFill(vector<vector<int>>& image, int sr, int sc, int color) { int currColor = image[sr][sc]; if (currColor == c

P3501 [POI2010]ANT-Antisymmetry

定义一个01串是反对称子串当将原串取反后和原串一样。求串的反对称子串个数。\(|S|\leq 5\times 10^5\) 。 设 \(s[i],s[j]\) 是反对称子串中对应的字符 1.若子串长度为奇数,则存在 \(i=j\) 的一组情况,又 \(s[i]\) 取反 \(==s[j]\) 所以矛盾 2.子串长度为偶数, \(s[i]\) 取反 \(==s

P1003 [NOIP2011 提高组] 铺地毯 题解

题目传送门 [NOIP2011 提高组] 铺地毯 题目描述 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有 \(n\) 张地毯,编号从 \(1\) 到 \(n\)。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖

2022杭电多校第十场1008 Minimum Diameter(树的直径的一些性质)

解决本题分为两个部分:维护树的直径,合并多个树的直径 树的直径有如下性质: 1,从任一点出发,到达最远的点是直径的其中一端,从这一点出发可以到达最远的点是直径的另一端。或者说一棵树中距离某一点最远的点一定是直径的一端。 2,由1,两个树通过一条边连接形成的新的树的直径是两棵树直径4

洛谷 P6242 【模板】线段树 3 吉司机线段树 区间取最小值 维护历史最大值和区间和

题目背景 本题是线段树维护区间最值操作与区间历史最值的模板。 题目描述 给出一个长度为 nn 的数列 AA,同时定义一个辅助数组 BB,BB 开始与 AA 完全相同。接下来进行了 mm 次操作,操作有五种类型,按以下格式给出: 1 l r k:对于所有的 i\in[l,r]i∈[l,r],将 A_iAi​ 加上

Codeforces Round #813 (Div. 2) (C~D)

C. Sort Zero 最开始写了个n2的 TLE了以后 不知道咋优化 只好观察性质 发现我们要维护一个后缀 很多人说要维护前缀 其实也就少跑了60ms 我们维护一个mp[]记录的是哪个数不合法了 然后后面维护后缀时细节有点多 就没啥了 #include <bits/stdc++.h> using namespace std; const int

【题解】FARIO2019-Nav

交互题,给定一张 \(n\) 个点无向图,进行 \(k\) 局游戏,每局先初始化一个点 \(x\),选手每次询问一个点 \(u\),返回 \(u\) 到 \(x\) 某条最短路上的某条边。需要在 \(9\) 次操作内求出点 \(x\)。\(n\le 300,k\le 750\)。 对于一条链的情况,可以直接二分。一棵树的情况可以直接点分治。

20220728

一道计算几何的模板题 点很多值域很小,考虑对每个横坐标求出最大/最小的纵坐标,只有这些点可能在凸包上 递推 \(O(p)\) 次后会进入循环节,前面的暴力。之后对于固定的 \(x_i\) 而言,只有前 \(py\) 个对应的 \(y\) 有用。把对应的 \(y\) 集合相同的 \(x_i\) 一起计算,相当于求 RMQ(这部分

P6406 [COCI2014-2015#2] Norma & ZLOJ 练习58 D

written on 2022-08-03 也是一道套路题,但是之前遇到得不多,所以这次总结一下。 这类题目要求统计所有区间的分数值之和。显然暴力的思路,即枚举所有的区间是不可行的。 先看一下玄学的暴力优化,这种大步跳的方法可以有效地降低时间,但是很玄学,比赛的时候可以用这种方式骗分,因为性价比

2022“杭电杯”中国大学生算法设计超级联赛(3)

比赛链接: https://vjudge.net/contest/507736 B - Boss Rush 题意: 有 \(n\) 个技能,第 \(i\) 个技能使用完后的 \(t_i\) 时间内不能使用其他技能,该技能会在 \(len_i\) 的时间中,每秒造成 \(d[i][j]\) 点伤害 \((1 <= j <= len_i)\),boss 有 \(H\) 滴血,问最短多少时间能杀死 boss。 思

CF1209E2 Rotate Columns (hard version)

题意 给定一个 \(n \times m\) 的矩阵,你可以对每一列进行若干次循环移位。 求操作完成后每一行的最大值之和最大是多少。 Solution 考虑到 \(n\) 的范围比较小,应该可以用状压。于是令 \(dp_{i,s}\) 表示处理完前 \(i\) 列,使 \(s\) 集合中的行的最大值已经确定的最大值和最大是多少

基于stm32F407ZGT6的三重ADC交替采样+DMA传输数据+定时器TRGO触发

好久没写博客了,最近挺忙的。近来有些好玩的实现,网上的资料并不是非常详细,打算慢慢写下来,希望别人能少走一点弯路。 因为希望提高ADC的采样率,这次我试着实现了一下三重ADC交替采样+DMA搬运至内存+TIM的TRGO触发采样(环境是stm32cubemx 6.5.0和keil 5)  首先打开cubemx进行基础设置

LOJ #2307. 「NOI2017」分身术

题目叙述 一个点集,每次去掉一个集合内部的一些点(不超过 100 个),求剩下节点构成的凸包面积是多少。强制在线。 题解 基本做法是每次求出 100 层凸包(一层一层向内求凸包)。每次去掉一些节点,就找出最内部的没有任何一个节点被去掉的凸包,向外每层相当于添加一个凸包的一个连续部分,去掉原

所有区间问题的套路

改题改题改题!!!做完题一定要好好改真的会继续两次NoNoNo继续n次遇见它!!! C. 完美子图 线段树做法:考虑把一个区间向右拓展,新增加的一个位置对以前所有处理过的区间的影响,当然对自己这一个长度的影响是1,第一层循环枚举R,新加入的数能对过去的区间会造成影响只有两种情况:加入的新数成为了

P4769 [NOI2018] 冒泡排序

题意 定义一个排列是好的,当且仅当对它冒泡排序时交换次数是下界: \[\dfrac{1}{2}\sum_{i=1}^n|p_i-i| \]给定一个长度为 \(n\) 的排列 \(p\),求在所有的长度为 \(n\) 的排列中有多少字典序大于 \(p\) 的好的排列。 Solution 这是上课 \(\texttt{M}\color{red}{\texttt{r_Spade}}\)

AC自动机

oj传送门 本质上是在trie树上套kmp的next数组(fail数组),用bfs按逐层遍历可以保证不重复和遗漏。 \\题目中要求出模式串重复次数,由于模式串自身较短,可以暴力失配找后缀匹配的模式串 #include<bits/stdc++.h> using namespace std; const int maxn=150*70+100; const int maxm=1e6+1

来自学长的馈赠3

A. 学数数 单调栈 + 排序 + 前缀和 + 二分 单调栈应该是左边乘右边,考场脑抽写成长度。 对\(lowe\_bound\),\(upper\_bound\)使用不熟 code #include<cstdio> #include<cstring> #include<algorithm> using namespace std; inline int read(){ int x = 0; char c; c = getchar();

pygame小案例

1.鼠标移动生成彩色圆形 import sys import pygame from random import randint pygame.init() screen = pygame.display.set_mode((1000,500)) pygame.display.set_caption("666") pygame.display.flip() while True: event = pygame.event.wait() if event.type == pygam

[Leetcode Weekly Contest]301

链接:LeetCode [Leetcode]2335. 装满杯子需要的最短总时长 现有一台饮水机,可以制备冷水、温水和热水。每秒钟,可以装满 2 杯 不同 类型的水或者 1 杯任意类型的水。 给你一个下标从 0 开始、长度为 3 的整数数组 amount ,其中 amount[0]、amount[1] 和 amount[2] 分别表示需要装满冷

2022.7.17 模拟赛

2022.7.17 模拟赛 \(\to link \leftarrow\) 订货 简单题,但为什么 \(1\le n\le 2\times 10^6\) 的数据我 \(n\log n\) 做法会 \(T\) ? 我不理解 模糊匹配 模拟题 国境线 \(std\) 貌似锅了,直接把 \(std\) 交上去了 来自某同学的一句话:\(\color{Green}{\Huge{我跟\ std\ 锅都锅的一样}

「JOISC 2020 Day1」建筑装饰 4

题意: \(2n\)个位置,给长度为\(2n\)的序列A,B。问每一位置在\(A\)和\(B\)中任选一个,恰好\(n\)个A和B,得到不降的序列\(C\)的方案(多种任意输出一种)。 思路: 引理 猜了一个结论:能够造出C的A的个数是连续的。 和CF之前打过一道题,一样的技巧。 这里给简略构造证明: 处理出A个数最少(Amin