原题传送门 我自闭了qaq 这道题非常简单,因为1<=c<=100,所以直接对每个c开二维树状数组,操作就跟模板一样 写码5分钟,调码半小时,这道题的输入顺序是x1,x2,y1,y2,我真的自闭了 #include <bits/stdc++.h> #define getchar nc #define N 305 #define C 105 using namespace std; inline char nc(){ static char buf[100000],*p1=buf,*…
题意 题目链接 Sol 很傻x的题.. c才100, n, m才300,直接开100个二维树状数组就做完了.. #include<bits/stdc++.h> using namespace std; const int MAXN = 301; inline int read() { char c = getchar(); int x = 0, f = 1; while(c < '0' || c > '9') {if(c == '-') f = -1; c = getchar();…
P4054 [JSOI2009]计数问题 题目描述 一个n*m的方格,初始时每个格子有一个整数权值.接下来每次有2种操作: 改变一个格子的权值: 求一个子矩阵中某种特定权值出现的个数. 输入输出格式 输入格式: 第一行有两个数N,M. 接下来N行,每行M个数,第i+1行第j个数表示格子(i,j)的初始权值. 接下来输入一个整数Q. 之后Q行,每行描述一个操作. 操作1:"1 x y c"(不含双引号).表示将格子(x,y)的权值改成c(1<=x<=n,1<=y<…
[题解] Luogu P5446 [THUPC2018]绿绿和串串 ·题目大意 定义一个翻转操作\(f(S_n)\),表示对于一个字符串\(S_n\), 有\(f(S)= \{S_1,S_2,...,S_{n-1},S_n,S_{n-1},...S_2,S_1 \}\). 现在给定一个长度为\(n\)的字符串\(S^{'}\)表示原字符串\(S\)经过若干次(可能为0)旋转之后的一个前缀, 求原来字符串可能的长度\(l\). 显然当\(l > n\)时一定可行,所以只需要输出所有的\(l\leq…
前言: 这题真ex... 强烈谴责在题解里面放毒瘤题链接的屑出题人! 吐 ️ 解析: 这题分成两步走. 首先,既然题目中的修改操作是区间加等差数列,那么就容易想到在差分数组上进行操作. 然后就是相当恶心的查询. 转化到差分数组上,相信会有一部分小朋友会向我一样,傻乎乎的以为就是求一个区间极大相同连续段个数... 其实我是联想到了这个题..虽说线段树维护的思路是相似的,但是显然这道黑题比那个树剖难维护的多... 回到这个题.刚才说到,求区间极大相同连续段个数其实是不行的. 因为可以发现下面的数组:…
关于这道题, 我们可以发现移动顺序不会改变答案, 具体来说, 我们有以下引理成立: 对于一个移动过程中的任意一个移动, 若其到达的位置上有一个棋子, 则该方案要么不能将所有棋子移动到最终位置, 要么可以通过改变顺序使这一次移动合法 证明: 考虑到达位置上的那个棋子, 如果它没有到达最终位置, 则我们考虑将该棋子移至下一步, 如果下一步还有没有到达最终位置的棋子, 则也移动它 否则直接调换这两个棋子的移动顺序即可 好的我们去除了题目中的要求: 「移动过程中不能出现多颗棋子同时在某一格的情况」, 接…
本蒟蒻也来发一次题解第一篇请见谅 这个题有几个要点 1.无向无权图,建图的时候别忘记建来回的有向边[因此WA掉1次 2.无权嘛,那么边长建成1就好了2333333 3.最短路采用迪杰斯特拉(别忘用堆优化)来做,计数操作改装进去,ans[1]=1;迪杰斯特拉更新边长的时候如果大于号(具体见代码)就覆盖,相等的话就加上 4.%楼上SPFA,BFS大佬 具体见代码,其实就是在迪杰斯特拉里面填了几笔(逃 代码巨丑(捂脸) #include<cstdio> #include<cstring>…
题目大意:维护 N*M 个点,每个点有三个权值,支持单点修改,查询矩形区间内权值等于某个值的点的个数. 题解:矩阵可以看成两个维度,权值为第三个维度,为一个三维偏序维护问题.发现第三维仅仅为单点修改和单点询问,直接用数组实现最简单,且空间足够.因此,直接建立 100 个二维树状数组,转变成为单点修改,矩形查询的问题. 代码如下 #include <bits/stdc++.h> using namespace std; const int maxn=301; int n,m,q; int t[1…
---题面--- 题解: 二维树状数组的板子题,,,学了这么久第一次写二维树状数组,惭愧啊. 怎么写就不说了,看代码吧. 跟普通的是一样的写法 #include<bits/stdc++.h> using namespace std; #define R register int #define AC 302 #define lowbit(x) (x & (-x)) int n, m, k; int a[AC][AC], c[AC][AC][AC]; inline int read()…
感谢 @cmy962085349 提供的hack数据,已经改对了. 先声明,我好像是题解里写双$fhq$ $treap$里唯一能过的...(最后两个点啊) 思路:首先看题目,$MIN_GAP_SORT$ 明显是求它的前驱与后继(可能有相同的),所以就用平衡树,但是又要求两个相邻的数的差,就可以有再开一个平衡树存放差值 实现:抛开奇奇怪怪的的题面,主要考虑这三个操作: 1.$INSERT$ $i$ $k$: 这个很简单,用链表就行了(数组模拟的),但是要注意,插入的时候,要接着上一个在这插入的,还…