调了一个下午只有八十分QAQ md弃了不管了 对拍也没拍出来 鬼知道是什么数据把我卡了QAQ 没事我只是个SB而已 这题其实还是蛮正常的 做法其实很简单 根据链剖的构造方法 你每次修改都是一段又一段的线段 那么你只要求一下线段并起来后哪些地方被覆盖了>=t次 不过要基数排序一波不然会T #include<cstdio> #include<cstring> #include<algorithm> #define LL long long using std::swa…
这道题就是道状压dp...比赛的时候太贪心 然后状压又不好 所以T2 T3一起挂了QAQ 吸取教训QAQ f[i][j][k]表示前i个数选了j个 最后a个的状态为k的答案 #include<cstdio> #include<cstring> #include<algorithm> #define LL long long using std::swap; ; int read(){ ,f=,c=getchar(); ; c=getchar();} +(c-'); c=…
洛谷题面传送门 zszz,lxl 出的 DS 都是卡常题( 首先由于此题强制在线,因此考虑分块,我们那么待查询区间 \([l,r]\) 可以很自然地被分为三个部分: 左散块 中间的整块 右散块 那么这样一来区间逆序对的来源可以有以下几种: 左散块内部的区间逆序对 右散块内部的区间逆序对 每个整块内部的区间逆序对 左散块与中间整块之间的逆序对 右散块与中间整块之间的逆序对 中间整块两两之间的逆序对 左散块与右散块之间的逆序对 对于前三种情况,我们可以记录这样两个数组: \(pre_j\):\(j\…
A T2-power of 2 题目描述 是一个十分特殊的式子. 例如: n=0时 =2 然而,太大了 所以,我们让对10007 取模 输入输出格式 输入格式: n 输出格式:  % 10007 输入输出样例 输入样例#1: 2 输出样例#1: 16 说明 n<=1000000 2^(2^n) 快速幂的方式log幂....就是n次平方 #include <iostream> #include <cstdio> #include <algorithm> #inclu…
题目大意:有$n(n\leqslant5\times10^5)$个数,$m(m\leqslant5\times10^5)$个询问,每个询问问区间$[l,r]$中众数的出现次数 题解:分块,设块大小为$S$,先可以预处理出两两块之间的众数出现次数,复杂度$O(\Big(\dfrac n S\Big)n)$.询问时先把答案设成整块内的答案,然后对两边剩下的最多$2S$个元素进行讨论. 难点在如何快速求出一个元素在区间内出现次数,先想到的是主席树,但是多了一个$\log_2$,并过不去.可以把每种数出…
前言 大家期待已久并没有的题解终于来啦~ 这次的T1和HAOI2016撞题了...深表歉意...表示自己真的不知情... 天下的水题总是水得相似,神题各有各的神法.--<安娜·卡列妮娜> 出题的过程:@PhoenixEclipse @xht13127提供了一些想法,我负责写标程,对拍,造数据...然后 @SakuraDance帮我验了题.感谢上述,以及其他几位dalao的资辞. 题解 T1 和HAOI2016撞车 http://www.lydsy.com/JudgeOnline/problem…
传送门 众所周知lxl是个毒瘤,Ynoi道道都是神仙题 用蒲公英那个分块的方法做结果两天没卡过去→_→ 首先我们分块,预处理块与块之间的答案,然后每次询问的时候拆成整块和两边剩下的元素 整块的答案很简单,那么只有两边剩下的元素有可能更新答案 我们对于每一个元素用\(vector\)记录所有的出现位置,设\(dep_i\)为位置为\(i\)的元素在\(vector\)中的位置,那么如果\(a_i\)在这段区间中的出现次数超过\(res\),那么\(vector\)中第\(i+res\)个元素就要小…
 P3395 路障 题目背景 此题约为NOIP提高组Day1T1难度. 题目描述 B君站在一个n*n的棋盘上.最开始,B君站在(1,1)这个点,他要走到(n,n)这个点. B君每秒可以向上下左右的某个方向移动一格,但是很不妙,C君打算阻止B君的计划. 每秒结束的时刻,C君会在(x,y)上摆一个路障.B君不能走在路障上. B君拿到了C君准备在哪些点放置路障.所以现在你需要判断,B君能否成功走到(n,n). 保证不会走到某处,然后被一个路障砸死. 输入输出格式 输入格式: 首先是一个正整数T,表示数…
题面传送门 qwq 感觉跟很多年前做过的一道题思路差不多罢,结果我竟然没想起那道题?!!所以说我 wtcl/wq 首先将 \(a_i\) 离散化. 如果允许离线那显然一遍莫队就能解决,复杂度 \(n\sqrt{n}\). 那如果强制在线怎么办呢? 既然离线都只能做到 \(n\sqrt{n}\),那在线肯定至少 \(n\sqrt{n}\) 咯 考虑将原序列分块,我们预处理处 \(mx_{i,j}\) 表示第 \(i\) 块开头到第 \(j\) 块结尾的区间中出现次数最多的值的出现次数.这个显然可以…
NOI.AC NOIP模拟赛 第五场 游记 count 题目大意: 长度为\(n+1(n\le10^5)\)的序列\(A\),其中的每个数都是不大于\(n\)的正整数,且\(n\)以内每个正整数至少出现一次. 对于每一个正整数\(k=1,..,n+1\),求出的本质不同的长度为\(k\)的子序列的数量.对\(10^9+7\)取模. 思路: 由于只会有一个数会重复,因此考虑重复的这个数取\(0\)个.\(1\)个和\(2\)个的情况,用组合数直接算即可. 源代码: #include<cstdio>…
NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下.左.右.左上.左下.右上.右下这\(8\)个方向移动.其中每一个皇后可以攻击这八个方向上离它最近的皇后. 求有多少皇后被攻击到\(0,1,\ldots,8\)次. 保证\(m\)个皇后中任意两个不在同一个位置. 思路: 考虑左右方向的攻击,对每一行开一个set,按列编号插入,看一下是否存在前驱/后…
NOI.AC NOIP模拟赛 第四场 补记 子图 题目大意: 一张\(n(n\le5\times10^5)\)个点,\(m(m\le5\times10^5)\)条边的无向图.删去第\(i\)条边需要\(w_i\)的代价.现在要通过删去一些边,使得剩下的满足对于这个图的任意一些点,这些点之间互联的边数小于这些点的总点数.求总代价最小值 思路: 不难发现答案为整张图代价和-最大生成森林代价和. 时间复杂度\(\mathcal O(m\alpha(n))\). 源代码: #include<cstdio…
NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不相同.\(q(q\le5\times10^5)\)次询问,每次给出\(x,y\),询问有多少数满足在本行是第\(x\)大,在本列是第\(y\)大. 思路: 对每行.每列分别排序,求出每个数是本行.本列第几大.然后即可预处理答案. 时间复杂度\(\mathcal O(n^2\log n)\). 源代码…
「NOWCODER」CSP模拟赛第3场 T1 货物收集 题目 考场思路即正解 T2 货物分组 题目 考场思路 题解 60pts 算法:一维 DP 100pts 算法:一维 DP ?线段树 + 单调栈 优化 ! T3 地形计算 题目 考场思路 正解 感觉是比较好的一套题 因为几乎都有思路 可惜只打了一个小时 附一下出题人的玄学题解 T1 货物收集 题目 点这里 考场思路即正解 一道比较简单的题,结果 PPLPPLPPL 因为编译器原因爆 000 了 咕咕咕 我的时间复杂度 O(N⋅log2N)O(…
传送门 又炸了-- \(A\) 唐时月夜 不知道改了什么东西之后就\(A\)掉了\(.jpg\) 首先,题目保证"如果一片子水域曾经被操作过,那么在之后的施法中,这片子水域也一定会被操作" 这个意思就是说,如果一个点\((x,y)\)被操作过,那么它被进行的操作一定是所有操作的一个后缀和 这样的话我们只要对于每个点维护一下它有几个操作,并把操作的后缀和维护起来,就能知道它到底被怎么操作了 维护有几个操作的话二维前缀和就行了 然后关键是后缀和我们应该怎么处理 因为这是一个矩阵,那么我们考…
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹. 输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数),计算这套系统最多能拦截多少导弹,如果要拦截所有导弹最少要配备多少套这种导弹拦截系统. 输入输出格式 输入格式: 一行,若干个正整数最多100个. 输…
题目描述 R 国和 S 国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动.历尽艰险后,潜伏于 S 国的 R 国间谍小 C 终于摸清了 S 国军用密码的编码规则: 1. S 国军方内部欲发送的原信息经过加密后在网络上发送,原信息的内容与加密后所得的内容均由大写字母‘A’-‘Z’构成(无空格等其他字符). 2. S 国对于每个字母规定了对应的“密字”.加密的过程就是将原信息中的所有字母替换为其对应的“密字”. 3. 每个字母只对应一个唯一的“密字”,不同的字母对应不同的“密字”.“密字”可以…
题意 题目链接 Sol 咕了一年的题解..就是个模拟吧 考场上写的递归也是醉了... 感觉一年自己进步了不少啊..面向数据编程的能力提高了不少 #include<bits/stdc++.h> #define fi first #define se second #define MP make_pair using namespace std; const int MAXN = 101; int T, top = 0, now, mx, flag; pair<char, int> s…
https://www.luogu.org/problemnew/show/P3952 这个模拟,注意每次进入循环的时候把新状态全部入栈,退出循环的时候就退栈. 第一次就错在发现ERR退出太及时,把剩余的信息留在流里面. 所以下次还是全部保存在字符串里面就好.一次下载一整段程序. #include<bits/stdc++.h> using namespace std; typedef long long ll; void solve() { int l; scanf("%d"…
题目:https://www.luogu.org/problemnew/show/P1071 按题意模拟即可. 代码如下: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; ],p[]; char a[xn],b[xn],c[xn],ans[xn]; int main() { scanf(,b+,c+); ),ll=…
题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的D对同学上课时会交头接耳. 同学们在教室中坐成了M行N列,坐在第i行第j列的同学的位置是(i,j),为了方便同学们进出,在教室中设置了K条横向的通道,L条纵向的通道. 于是,聪明的小雪想到了一个办法,或许可以减少上课时学生交头接耳的问题:她打算重新摆放桌椅,改变同学们桌椅间通道的位置,因为如果一条通道隔开了2个会交头接耳的同学,…
[题目传送门:] [戳] (https://www.luogu.org/problemnew/show/P4711) [算法分析:] 关于一个分子拆分后的产物,一共有三种情况: 原子 原子团 水合物 关于原子的获取可以使用get_ele()函数,由于不是一位的元素就是两位的元素,只要看看这个大写字母的下一位是不是小写字母就行 返回获取的元素的string 关于系数的获取--使用函数get_num()--与快读的写法很接近,当没有系数的时候(处理后系数还是初始值没有被更新),系数是1 如何获取原子…
https://www.luogu.org/problemnew/show/P2278 题目没有说同时到达的优先级最大的应该处理谁. 讲道理就是处理优先级最大的. #include<bits/stdc++.h> using namespace std; typedef long long ll; struct Process { int id; int itime; int dtime; int pri; inline bool operator<(const Process&…
T1 动态点分治 就是模拟..... 但是没有过!! 看了题解之后发现.... 坑点:有可能 \(x<=r\),但是…
[题目描述] 小明正在学习一种新的编程语言 A++,刚学会循环语句的他激动地写了好多程序并 给出了他自己算出的时间复杂度,可他的编程老师实在不想一个一个检查小明的程序, 于是你的机会来啦!下面请你编写程序来判断小明对他的每个程序给出的时间复杂度是否正确. A++语言的循环结构如下: F i x y 循环体 E 其中F i x y表示新建变量 i(变量 i 不可与未被销毁的变量重名)并初始化为 x, 然后判断 i 和 y 的大小关系,若 i 小于等于 y 则进入循环,否则不进入.每次循环结束后 i…
终于400了.这套题很鬼畜.两道贪心. GRACE sort过后,不能直接统计,本人毫无多想,相同的直接放在一起.结果太多人AC. SUM sigma+异或和(可使用前缀和处理),本人毫无考虑乱MOD,居然对了50分.(注意处理2^63-1) #define PN "sum" #include <cstdio> #include <cstring> #include <algorithm> template<class T>inline…
传送门 明明没参加过却因为点进去结果狂掉\(rating\)-- \(A\) 集合 如果我们记 \[f_k=\sum_{i=1}^nT^i{n-i\choose k}\] 那么答案显然就是\(f_{k-1}\) 然后就可以开始推倒了 \[ \begin{aligned} f_k &=\sum_{i=1}^nT^i{n-i\choose k}\\ &=\sum_{i=1}^nT^i{n-i-1\choose k}+\sum_{i=1}^nT^i{n-i-1\choose k-1}\\ &am…
爆炸了QAQ 传送门 \(A\) \(Mas\)的童年 这题我怎么感觉好像做过--我记得那个时候还因为没有取\(min\)结果\(100\to 0\)-- 因为是个异或我们肯定得按位考虑贡献了 把\(a\)做个前缀异或和,记为\(s_i\),那么就是要找到 \[\max_{j<i}\{s_j+(s_j\oplus s_i)\}\] 我们假设\(s_i\)第\(k\)位为\(a\),\(s_j\)第\(k\)位为\(b\),\(s_j+(s_j\oplus s_i)\)第\(k\)位为\(c\)…
先树链剖分,一棵子树的编号在数组上连续,一条链用树链剖分,把这些线段全部取出来,做差分,找到有多少点被>=t条线段覆盖即可. #include<iostream> #include<cstdlib> #include<cstring> #include<cstdio> #include<algorithm> #define ll long long using namespace std; ; ]; int n,m,x,y,z,tot,cn…
就是DP. 我们可以很简单的想到要枚举中间点,进行边数的转移. 但是因为边长数据范围很大,所以我们考虑log的倍增. 状态设计为\(dp[i][j][k]\),为从节点\(i\)走\(2^k\)步能否走到节点\(j\).但是我们发现这样不好转移状态(其实是我不太会啊) 正解是状态压缩,但是因为\(n\)有点大,所以这里介绍一个黑科技:\(bitset\) bitset只能存储0或1,但是较bool来说空间更优,一个元素只占一个bit,而且其中的每个元素都可以被单独访问或者修改--比如说访问s的第…