![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
其他各种乱搞
inklutcuah
这个作者很懒,什么都没留下…
展开
-
【jzoj4827】【钻石游戏】
题目大意一个M行N列的棋盘,里面放了M*N个各种颜色的钻石。每一次你可以选择任意两个相邻的颜色不同的钻石,进行交换。两个格子相邻的定义是两个格子有一条公共边。每次交换的分值为通过这次交换后能够形成的最大矩形的面积,具体请见样例。跟传统的钻石游戏不太一样的是,交换后钻石不会消除。现在告诉你每一次操作,请输出每一次所能得到的分值。解题思路首先我们可以预处理出一个点往上下左右最远扩展到哪里(同色),每个询原创 2016-12-10 13:15:40 · 447 阅读 · 0 评论 -
【jzoj4922】【环】
题目大意有一个环,环上有一些数,求分成i份,每份要连续,对于每个分成i份的情况求每一份的数的和gcd起来最大是多少。解题思路我们发现答案一定是所有数和的约数,这不会很大,找出约数后求模约数的前缀和,有多少个相同就可以分成多少份。code#include<cmath>#include<cstdio>#include<algorithm>#define LF double#define LL l原创 2016-12-17 20:39:14 · 412 阅读 · 0 评论 -
【jzoj3101】【NOIP2012提高组】【开车旅行】
题目大意小 A 和小 B 决定利用假期外出旅行,他们将想去的城市从 1 到 N 编号,且编号较小的 城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市 i 的海拔高度为 Hi,城市 i 和城市 j 之间的距离 d[i,j]恰好是这两个城市海拔高度之差的绝对值,即 d[i,j] = |���� −����|。 旅行过程中,小 A 和小 B 轮流开车,第一天小 A 开车,之后每天轮换原创 2016-12-24 19:30:01 · 1038 阅读 · 0 评论 -
【jzoj3099】【NOIP2012提高组】【Vigenère密码】
题目大意16世纪法国外交家Blaise de Vigenère设计了一种多表密码加密算法——Vigenère密码。Vigenère密码的加密解密算法简单易用,且破译难度比较高,曾在美国南北战争中为南军所广泛使用。 在密码学中,我们称需要加密的信息为明文,用M表示;称加密后的信息为密文,用C表示;而密钥是一种参数,是将明文转换为密文或将密文转换为明文的算法中输入的数据,记为k。 在Vigenère密码原创 2016-12-24 19:40:26 · 478 阅读 · 0 评论 -
【jzoj4936】
题目大意解题思路如果所有询问长度都一样的话,o(n)就能解决,开个桶随便记录一下就可以了。那么我们按长度排序,发现长度不同的数量不会超过根号n个,等差数列求和,这样我们就可以解决了。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LL long long#define min(a,原创 2017-01-12 12:37:00 · 315 阅读 · 0 评论 -
【spoj】【QTREE2 - Query on a tree II】
题目大意给出一棵树,每条边有边权,询问两点之间的距离,以及从起点到终点第k个点是那个点。解题思路观察可知,整个询问是静态的,可以使用倍增算法解决。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define Min(a,原创 2017-02-18 18:48:18 · 323 阅读 · 0 评论 -
【jzoj3598】【CQOI2014】【数三角形 】
题目大意解题思路考虑正难则反,求出所有点组合情况减去三点共线情况,考虑枚举一个矩形,两个端点在对角,第三个在对角线,选取情况是长宽gcd-1,统计答案即可。code#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define M原创 2017-03-04 12:11:49 · 374 阅读 · 0 评论 -
【jzoj5285】【NOIP提高组模拟赛A组8.16】【排序】
题目大意解题思路用栈模拟,如果后面没有比栈顶大的数就弹出栈即可。code#include<set>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i++)#define fd(i,j,k) f原创 2017-08-16 11:45:14 · 253 阅读 · 0 评论 -
【jzoj5306】【NOIP2017提高A组模拟8.18】【棋盘游戏】
description这个游戏上在一个无限大的棋盘上, 棋盘上只有一颗棋子在位置(x,y)(x,y>=0)棋盘的左下角是(0,0)Amphetamine每次都是第一个移动棋子,然后Amphetamine与Alphago轮流移动。每一轮可以做以下三种中的一种操作:1)在同一行,将棋子从当前位置向左移动任意格;2)在同一列,将棋子从当前位置向下移动任意格;3)将棋子从当前位置向下移动k格再向左移动k格(原创 2017-08-18 20:25:51 · 500 阅读 · 0 评论 -
【jzoj3769】【NOI2015模拟8.14】【A+B】
题目大意对于每个数字x,我们总可以把它表示成一些斐波拉切数字之和,比如8 = 5 + 3, 而22 = 21 + 1,因此我们可以写成 x = a1 * Fib1 + a2 * Fib2 + a3 * Fib3 + … + an * Fibn, 其中,Fib1 = 1, Fib2 = 2…. Fib[i] = Fib[i – 1] + Fib[I - 2], 且a[n] > 0.那么我们称ai原创 2017-08-06 15:53:34 · 258 阅读 · 0 评论 -
【jzoj5238】【GDOI2018模拟8.7】【的士碰撞】
题目大意n辆车在一条数轴上,车的编号为1到n。编号为i的车坐标为a[i],初始方向为dir[i](左或右),初始位置两两不同。每辆车每个时刻行走距离为1。两辆车相碰时,会调转方向,继续行走,掉头不消耗时间。现在车子开始朝其方向行驶,同一个坐标允许有多辆车。现在有q个询问,给出 t,i,询问过了t时刻后,编号为i的车的坐标的绝对值。解题思路发现两车相撞只会交换编号,而他们的编号对当前车是没有影响的,只原创 2017-08-07 11:58:18 · 421 阅读 · 0 评论 -
【jzoj5281】【NOIP提高组模拟A组8.15】【钦点】
题目大意解题思路用链表维护每个格子往右往下到那个格子,交换时更改边界连接即可,在原本的行和列之间加入空白列可以简化操作。code#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LL long long#define fo(i,j,k) for(int i=j;i<=k;i++)#defi原创 2017-08-15 21:29:00 · 311 阅读 · 0 评论 -
【jzoj5360】【NOIP2017提高A组模拟9.12】【Shorten Diameter】
description给定一棵有n 个点的树,现要求不断删点直到树的直径<=K,求最少需要删除的点数。一个点可以被删掉当且仅当该点的度数为1。保证树的形态为随机生成(请勿过度解读)。solution由于树的形态是随机的,可以考虑当k为偶数时,枚举一个点往外扩展k/2层,当k为奇数时,枚举一条边从两个点往外扩展k/2层,统计最大值即可。code#include<cstdio>#include<cma原创 2017-09-13 22:19:22 · 494 阅读 · 0 评论 -
【jzoj5359】【NOIP2017提高A组模拟9.12】【Arrays and Palindrome】
descriptionsolution发现A只会有两个奇数或者没有奇数,发现a一定将两个奇数放在头尾(如果有的话),剩下的第一个数加一,最后一个数建议,中间不变即为b(注意1的情况)。code#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LF double#define LL long原创 2017-09-13 22:22:52 · 474 阅读 · 0 评论 -
【jzoj5340】【NOIP2017模拟9.2A组】【春思】
descriptionsolution分解质因数然后等比数列求和。code#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#define LF double#define LL long long#define ULL unsigned int#define fo(i,j,k) for(LL i=j;原创 2017-09-02 11:49:20 · 539 阅读 · 0 评论 -
【jzoj5341】【NOIP2017模拟9.2A组】【密州盛宴】
descriptionsolution可以发现如果把1看做1,把0看做-1,做后缀和如果小于-1表示东坡不能吃够n天,否则就一定合法。可以发现如果要移动就一定将后面的0移到最前面,移动x个就是前面的数往后移x位,往后移一位相当于把后缀和+1,可以发现最小后缀和是-x,那至少要往前移x-1个0。code#include<cstdio>#include<cmath>#include<cstring>原创 2017-09-02 16:28:25 · 486 阅读 · 0 评论 -
【jzoj5343】【NOIP2017模拟9.3A组】【健美猫】
descriptionsolution可以把点投射到以i坐标为x坐标,以a[i]为y坐标的二维平面,考虑维护两条斜率为1直线,点到直线竖直距离和即为答案,分别为维护多少个点在直线上,用两个桶维护即可,坐标分别为到y=x竖直距离和到(n,0)曼哈顿距离。code#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>原创 2017-09-03 16:30:43 · 675 阅读 · 0 评论 -
【jzoj4622】【亚瑟王之宫】
题目大意在一个矩阵中有一些点,要分成两半到两个点集合,求走的路的和最少的两个集合点。题解可以用bfs求出两点之间的花费,枚举两个集合点,先让他们都到一个点集合,按改变集合点花费排序,安排一般的点转移即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define fo原创 2016-07-14 19:04:50 · 325 阅读 · 0 评论 -
【POI 12】【Double-row】
题目大意有两个序列,可以调换两个序列相应的位置的元素,求最少步骤使得每个序列所含元素互不相同。解题思路可以发现一个元素最多出现两次,必须在不同序列,所以我们可以枚举一个元素的状态,便可以确定一个连通块的状态。注意有多个连通块,它们相互独立。code//#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<a原创 2016-08-01 15:08:05 · 352 阅读 · 0 评论 -
【jzoj4823】【小W学物理】【模拟】
题目大意为了测试小W的物理水平,Mr.X在二维坐标系中放了N面镜子(镜子坐标绝对值不超过M),镜子均与坐标轴成45°角,所以一共有两种类型“/”和“\”。原点不会有镜子,任意一点最多只有一面镜子。镜子两个面都能反光,而中间不透光,例如,对于一个“/”型镜子,下方向射入的光线会被反射到右方向,左方向射入的光线会被反射到上方向。现在有一条光线从原点沿X轴正方向射出,求走过T路程后所在位置。解题思路排序后原创 2016-12-10 14:40:53 · 361 阅读 · 0 评论 -
【jzoj4921】【幻魔皇】
题目大意幻魔皇拉比艾尔很喜欢斐波那契树,他想找到神奇的节点对。所谓斐波那契树,根是一个白色节点,每个白色节点都有一个黑色节点儿子,而每个黑色节点则有一个白色和一个黑色节点儿子。神奇的节点对则是指白色节点对。请问对于深度为n的斐波那契树,其中距离为i的神奇节点对有多少个?拉比艾尔需要你对于1<=i<=2n的所有i都求出答案。解题思路首先我们发现对于白点只有子树中的白点才可能与它配对(只有一个子节点),原创 2016-12-12 14:30:33 · 574 阅读 · 0 评论 -
【jzoj4882】【多段线性函数】
题目大意解题思路考虑一个数在区间左边和右边才贡献,先把标记打在边界,然后像前缀和那样传递,然后离散化选的点一定在边界上,枚举选的点利用预处理的信息即可求出答案。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL lo原创 2016-11-15 12:19:58 · 374 阅读 · 0 评论 -
【jzoj4884】【图的半径】
题目大意给出一副带权无向图,求图的半径,中点可以在边上。解题思路先求出两两最短路,枚举一条边,考虑最短路从哪一端走的临界点,把所有边的临界点排序,发现走左端的点逐渐减少,右端的点逐渐增多,可以排序后o(n)维护左端最大和右端最大,从而算出经过当前边的直径,取最大值即答案。code#include<set>#include<cmath>#include<cstdio>#include<cstri原创 2016-11-15 08:05:39 · 726 阅读 · 0 评论 -
【jzoj4840】【小W砍大树】【模拟】
题目大意解题思路开一个栈模拟即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL long long#define LD double#define max(a,b) ((a>b)?a:b)#define原创 2016-11-09 11:51:26 · 378 阅读 · 1 评论 -
【jzoj4764】【Brothers】【模拟】
题目大意在遥远的西方有一个古老的王国,国王将他的王国分成了网格状,每一块称之为一个城市。在国王临死前,他将这些城市分给了自己的N个儿子(编号为0到N-1)。然而这N个王子的关系不是很好,0讨厌1,1讨厌2,2讨厌3……N-1讨厌0。在国王死后,这种不好的关系使得王子之间爆发了战争。战斗只会在相邻的两个城市之间爆发(共有一条边称之为相邻),并且只有当A讨厌B时,A才会对B发起战斗,结果必定是A获得这次原创 2016-09-27 16:41:28 · 279 阅读 · 0 评论 -
【jzoj4776】【排序】
题目大意解题思路不用多说直接暴力。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#define max(a,b) ((a>b)?a:b)#define min(a,b) ((a>b)?b:a原创 2016-09-23 21:42:18 · 321 阅读 · 0 评论 -
【jzoj4788】【序列】
题目大意解题思路显然没有模的时候,后一个减前一个差分,正值加起来即为答案。考虑将一个区间加4,左端点的差分值加4,后端点的后一个的差分值减4,而只有正值对答案有贡献。将前面的差分值用桶存起来,枚举右端点,如果是正值则查找前面的差分值,看是否能通过操作使答案减少。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#原创 2016-09-23 21:07:26 · 423 阅读 · 0 评论 -
【jzoj4778】【数列编辑器】
题目大意解题思路如果不要询问的话显然双向链表,但是我们发现询问在光标的前面,可以用两个栈分别保存前后,开个数组存答案,移动光标时更新答案即可。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL long long#d原创 2016-09-23 20:19:52 · 387 阅读 · 0 评论 -
【jzoj4791】【矩阵】
题目大意一个有n*m个格子的矩阵,每个格子用“.”或“#”表示,“.”表示这个格子可以放东西,“#”则表示这个格子不能放东西。现在他拿着一条1*2大小的木棒,好奇的他想知道对于一些子矩阵,有多少种放木棒的方案。解题思路分别考虑横着的贡献和竖着的贡献,一排的n“.”分成了k块显然贡献为n-k。所以预处理一下点的个数和分成的块的个数即可得解。code#include<set>#include<cmat原创 2016-09-22 17:22:46 · 446 阅读 · 0 评论 -
【jzoj4742】【单峰】
题目大意解题思路枚举一个最高点,把其它数分成两组排好序放好就可以了。ans=∑ni=1Cin=2n−1ans=\sum_{i=1}^nC_n^i=2^{n-1}。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#define LF double#define LL lo原创 2016-09-06 15:19:51 · 363 阅读 · 0 评论 -
【jzoj4745】【看电影】
题目大意N个人排成一圈,按顺时针顺序标号为1 - N,每次随机一个1 - N的编号,假设随机到的编号是X,如果编号为X人还未踢出,则将这个人踢出,否则看编号为X % N + 1(即顺时针顺序下一个编号)的人是否存活,如果还未踢出则将他踢出,否则继续看编号(X + 1)% N +1的人,如果已被踢出看顺时针的下一个…………,以此类推,直到踢出一个人为止。重复上述操作,直到剩下K个人。已知小S的编号是I原创 2016-09-05 20:45:34 · 466 阅读 · 0 评论 -
【jzoj4757】【树上摩托】
题目大意把这棵树砍去任意条边,拆成若干棵新树,让每棵新树的节点数相同。有多少种方法分割这棵树。解题思路首先可以变成有根树,枚举每棵树的节点数k,则size为k的倍数的个数有大于等于n/k。我们可以开一个桶存size,枚举size统计个数判断即可。暴力code#include<set>#include<cmath>#include<cstdio>#include<cstring>#includ原创 2016-09-05 20:28:58 · 531 阅读 · 0 评论 -
【bzoj1192】【HNOI2006】【鬼谷子的钱袋】
题目大意你有一些钱,你要分最少的组使你可以通过选取其中的一些组来支付所有小于等于你拥有钱的金额。解题思路假设你有n元钱,你可以将⌈n/2⌉\lceil n/2 \rceil 的钱分一组,这样就变成里一个n/2的子问题,它能满足就一定可以与⌈n/2⌉\lceil n/2 \rceil 配合满足原问题。code#include<set>#include<cmath>#include<cstdio>原创 2016-08-18 08:18:33 · 312 阅读 · 0 评论 -
【bzoj1293】【SCOI2009】【生日礼物】
题目大意在坐标轴上有不同种类的一些点,求最短的区间包含所有种类的点。解题思路可以考虑找到第一个合法区间,当左指针右移时有可能是某一些种类没被包含,这时我们可以加入下一个当前种类的点,每个点只会被加入一次,因此O(n)。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algorithm>#de原创 2016-08-17 22:28:07 · 406 阅读 · 0 评论 -
【jzoj4637】【大鱼海棠】
题目大意给出一棵树,可以选择一个未被染色的节点,将它到根的路径染色,两个人轮流操作,最后染色的输,求先手是否必胜。解题思路这是一题结论题,除非只有一个节点,不然先手必胜。考虑先手选根,如果后首选某个节点必胜,那先手可以不选跟选那个点。code#include<set>#include<cmath>#include<cstdio>#include<cstring>#include<algori原创 2016-08-01 16:12:49 · 412 阅读 · 0 评论 -
【jzoj5389】【NOIP2017提高A组模拟9.26】【解梦】
descriptionDYY 很善于解梦,昨晚,他梦见自己来到了一个高度发达的国度。众所周知,我们现在有极为常用的三级运算,+、、^。其中,a*b=a+a+a+…+a(b 个a),a^b=a*a*a…*a(b 个a)。但是,在这个国家,还有第四级运算——♂,a♂b=a^a^a^…^a(b 个a,从左往右计算)。同时,由于这个国家的历史背景,他们非常反感高精度,所以a♂b 的结果是经过1e9+7 取模原创 2017-09-28 19:11:19 · 586 阅读 · 0 评论