
-------------其他-------------
CHN_JZ
爆0 forever
展开
-
BZOJ 2523 [Ctsc2001]聪明的学生
2523: [Ctsc2001]聪明的学生题目大意有三个人A,B,C头上分别贴着三个正整数,显然对于任意一个人只能看见其他两个人头上的数字。存在两个数的加和等于另一个,这时候询问A是否知道头上贴着什么数字,在询问B,询问C……直到第n次询问一个人回答出来是m。假设这三个人很聪明,都能以最小的询问次数回答出头上的数字(如果可以)。给定多组n,m求所有可能情况。解题思路题目中有个很关键的提示:总是头上贴原创 2017-05-31 07:40:50 · 863 阅读 · 0 评论 -
[乱搞]「CEOI 2017」One-Way Streets
以DFS序构造出一棵树,非树边与树边形成环,这些边肯定是B.之后按照给出的起点终点用差分进行标记就可以了。#include<cstdio>#include<cstring>#define maxn 100005using namespace std;inline int _read(){ int num=0;char ch=getchar(); while (ch<'0'||原创 2017-09-29 10:06:56 · 957 阅读 · 0 评论 -
[乱搞]51 Nod 1859—Clarke and number
题目梗概给定一个数,可以对这个数做一下两种操作:x=x−kx=x-kx=⌊n√⌋2x=\lfloor \sqrt n \rfloor ^2用最小的步数使n->0。解题思路对于第二种操作,就是将x变为小于等于x的最大的平方数。显然两种操作需要交替操作。方法很简单,注意特殊情况就可以了。#include<cstdio>#define LL long longusing namespace std;原创 2017-10-17 21:39:38 · 525 阅读 · 0 评论 -
[整体二分+树状数组]BZOJ 2527——[Poi2011]Meteors
题目梗概有n个国家,需要pi个陨石。在每个时间在某个区间会落下x个陨石。问每个国家何时收集完陨石。解题思路比较明显的整体二分。二分时间t,表示每个国家何时收集完陨石。把时间t之前的所有陨石砸下(可以用树状数组维护),判断是否收集完然后继续二分。#include<cstdio>#define LL long long#define lowbit(x) ((x)&-(x))using namesp原创 2017-10-06 10:02:27 · 1085 阅读 · 0 评论 -
[STL乱搞]51 Nod——1573 美丽的集合
[STL乱搞]51 Nod——1573 美丽的集合题目梗概在多重集之中,同一个元素可以出现多次。我们现在有n个多重集合,第i个集合最开始都有一个元素ai(1≤i≤n)。定义多重集合的价值为子集中不同的和的个数。现在我们有两种操作:1、合并最开始时多重集合i现在所在的多重集合与多重集合j现在所在的多重集合,成为一个新的多重集合。2、询问最开始多重集合i现在所在多重集合的价值。n<=1000n<=100原创 2017-10-06 16:32:55 · 1571 阅读 · 0 评论 -
[贪心+单调队列+ST算法]51 nod 1288 ——汽油补给
题目梗概有(N+1)个城市,0是起点N是终点,开车从0 -> 1 - > 2…… -> N,车每走1个单位距离消耗1个单位的汽油,油箱的容量是T。给出每个城市到下一个城市的距离D,以及当地的油价P,求走完整个旅途最少的花费。如果无法从起点到达终点输出-1。解题思路ZZK大佬说这是N年前做过的一道题目,但是我并没有看出来。贪心比较明显,对于一个点,我们可以知道它最远能到哪个点,这样形成一个区间。如果存原创 2017-10-20 18:25:50 · 975 阅读 · 0 评论 -
[暴力]#514. 「LibreOJ β Round #2」模拟只会猜题意
题目梗概给定一个长度为 n 的序列 A 。求一个区间的长度不小于x的最大和。1≤x≤n≤104,0≤m≤105,∣Ai∣≤1041≤x≤n≤10^4 ,0≤m≤10^5, ∣Ai∣≤10^4 。解题思路相信我暴力可以过!!!因为这题仅仅只是为了展示LOJ评测机的速度#include<cstdio>#include<cstring>using namespace std;const int ma原创 2017-10-11 21:16:42 · 1048 阅读 · 0 评论 -
[bitset]#515. 「LibreOJ β Round #2」贪心只能过样例
题目梗概一共有nn个数,第ii个数xixi可以取[ai,bi] [ai,bi]中任意值。 设S=∑xi2S=\sum xi^2,求SS 的种类数。解题思路暴力枚举每个数字的取值,用bitset维护F数组表示方案。让我算一下复杂度O(ai3∗n2/32)O(ai^3*n^2/32)O(312500000)O(312500000)1s1s时限会TLE?这题再次展现LOJ评测机的速度#include<c原创 2017-10-11 21:24:36 · 846 阅读 · 1 评论 -
[启发式合并]#516. 「LibreOJ β Round #2」DP 一般看规律
[启发式合并]#516. 「LibreOJ β Round #2」DP 一般看规律题目梗概给定一个长度为 n 的序列 a,一共有 m 个操作。 每次操作的内容为:给定 x,y,序列中所有 x 会变成 y。在每次操作后,求出相同元素的最近距离是多少。解题思路把一个数字变成另一个数字的过程看成两个坐标集合合并的过程。用map离散之后,用set进行启发式合并就可以了。在合并的同时更新答案。#includ原创 2017-10-11 21:31:12 · 772 阅读 · 0 评论 -
[分块]51 Nod——1225 余数之和
题目梗概例如F(6) = 6 % 1 + 6 % 2 + 6 % 3 + 6 % 4 + 6 % 5 + 6 % 6 = 0 + 0 + 0 + 2 + 1 + 0 = 3。给出n,计算F(n), 由于结果很大,输出Mod 1000000007的结果即可。解题思路x%y运算其实可以看成x−x/y∗yx-x/y*y,这里的除是整除。那么对于整除x等于固定值的数我们可以一起统计,这些数显然是一个区间,我原创 2017-10-20 20:36:35 · 846 阅读 · 0 评论 -
[乱搞]51 Nod 1421——最大MOD值
题目描述有一个a数组,里面有n个整数。现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj。解题思路对于每个数字,有n/ain/ai个区间,每个区间是[1+ai∗(k−1),ai∗k][1+ai*(k-1),ai*k]显然对于每个区间只有最接近这个区间末边界的值会更新答案。提前预处理一下就可以了。ps:我预处理有log的,其实不需要log。#inc原创 2017-10-21 11:25:15 · 742 阅读 · 0 评论 -
[思维题]51 Nod 1671——货物运输
题目描述公元2222年,l国发生了一场战争。 小Y负责领导工人运输物资。 其中有m种物资的运输方案,每种运输方案形如li,ri。表示存在一种货物从li运到ri。 这里有n个城市,第i个城市与第i+1个城市相连(这里1号城市和n号城市并不相连),并且从i号城市走到i+1号或者从i+1号走到i号需要耗费1点时间。 由于高科技的存在,小Y想到了一种节省时间的好方案。在X号城市与Y号城市之间设立传送原创 2017-10-23 07:34:42 · 600 阅读 · 0 评论 -
[树hash]BZOJ 4337——BJOI2015 树的同构
题目梗概对于两个树T1和T2,如果能够把树T1的所有点重新标号,使得树T1和树T2完全相同,那么这两个树是同构的。有M个有根树,请你把它们按同构关系分成若干个等价类。解题思路第一次写树hash。对于一棵树,先把所有子树hash一下,然后在合并成当前树的hash值。考虑如何合并。因为我们不能受遍历顺序的影响,所以应该先排序。然后对于每个子树的hash值再分别乘p,显然这个p不能相同,所以提前构造素数表原创 2017-10-15 20:47:36 · 761 阅读 · 0 评论 -
[模拟退火]POJ 2420——A Star not a Tree
题目描述给定n个点,求关于这个n个点的广义费马点。题目梗概必须折服于先人的智慧。初值随便给个位置,每次随机一个角度走温度的距离。概率函数为eΔ/Te^{Δ/T}。过了之后感觉非常神奇。#include<cstdio>#include<cmath>#include<cstdlib>using namespace std;const int maxn=105;const double coe=原创 2017-11-28 21:08:20 · 781 阅读 · 0 评论 -
[树形DP+贪心]BZOJ 1217—— [HNOI2003]消防局的设立 Plus?
题目描述给出一棵树。你可以设置一个特殊节点,距离这个节点小于等于2的节点被覆盖。求覆盖所有节点所需的最小特殊节点数。解题思路这题是51 Nod 夹克老爷的愤怒的弱化版。51Nod上的那题将范围推广至于n同阶的级别。主要就是利用贪心进行树形DP。#include<cstdio>using namespace std;const int maxn=100005,INF=2147483647;int原创 2017-12-03 21:21:52 · 435 阅读 · 0 评论 -
51Nod 1674——区间的价值 V2
题目梗概给出一个n个数。 求所有区间的贡献的加和。 一个区间的贡献:所有数的andand值∗*所有数的oror值。解题思路首先我们要知道对一个数一直andand或者oror操作减少或增加的次数是log级别的,这个看成二进制之后就很好思考。这样我们马上就能想到枚举一个端点,然后维护log段相同的线段(and和or显然需要分开维护)。考虑加入一个新的节点。 只需要把每个线段加入一个节点,合并值相同原创 2017-09-05 21:08:43 · 527 阅读 · 0 评论 -
[分块]BZOJ 4216——Pig
题目梗概给定一个数组。多次询问一个区间的和。解题思路这不是SB题你要想想这是BZOJ的题目,请忽略A+B。你没有足够的空间构造前缀和,但是你能存储下这个数组。那就只能用分块了。#include<cmath>#include<cstdio>#include<algorithm>#define LL long longusing namespace std;inline int _read()原创 2017-08-15 21:28:02 · 633 阅读 · 0 评论 -
[HDU 5618]Jam's problem again——CDQ分治
题目传送门解题思路本题为裸的三维偏序,直接用CDQ分治解。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=100005;struct jz{ int x,y,z,id; bool operator==(const jz&b){return x==b.原创 2017-05-14 21:41:19 · 460 阅读 · 0 评论 -
BZOJ 4443 [Scoi2015]小凸玩矩阵——二分+二分图匹配
4443: [Scoi2015]小凸玩矩阵题目描述 小凸和小方是好朋友,小方给小凸一个N*M(N<=M)的矩阵A,要求小秃从其中选出N个数,其中任意两个数字不能在同一行或同一列,现小凸想知道选出来的N个数中第K大的数字的最小值是多少。 输入 第一行给出三个整数N,M,K 接下来N行,每行M个数字,用来描述这个矩阵 输出 如题 解题思路 看到这样选择方式马上就会想到二分图匹配,但是因原创 2017-05-11 19:33:37 · 730 阅读 · 0 评论 -
BZOJ 1878 [SDOI2009]HH的项链——离线+树状数组||莫队算法
1878: [SDOI2009]HH的项链题目描述HH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。HH不断地收集新的贝壳,因此他的项链变得越来越长。有一天,他突然提出了一个问题:某一段贝壳中,包含了多少种不同的贝壳?这个问题很难回答。。。因为项链实在是太长了。于是,他只好求助睿智的你,来解决这个问题。输入第一行:一原创 2017-04-23 14:56:25 · 815 阅读 · 0 评论 -
BZOJ 1192 [HNOI2006]鬼谷子的钱袋——水题
1192: [HNOI2006]鬼谷子的钱袋题目描述 鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大的拍卖行(聚宝商行)将要举行一场拍卖会,其中有一件宝物引起了他极大的兴趣,那就是无字天书。但是,他的行程安排得很满,他他已经买好了去邯郸的长途马车标,不巧的是出发时间是在拍卖会快要结束的时候。于是,他决定事先做好准备,原创 2017-03-30 19:43:34 · 522 阅读 · 0 评论 -
[bitset]BZOJ 3687——简单题
题目梗概给定nn个数字,求所有区间和的异或值。解题思路我首先想到的就是一个动态规划,f[i]f[i]表示加和为i出现的次数。 我们考虑加入xx,那么可以得到f[i+x]=f[i+x]+f[i]f[i+x]=f[i+x]+f[i](分别表示x取或不取的情况) 因为最后需要我们求异或值,一个数异或两次等于没有异或,所以我们可以把f[i+x]f[i+x]和f[i]f[i]异或起来(因为异或就是不进位的原创 2017-07-11 19:07:16 · 577 阅读 · 0 评论 -
一道值得分享(interesting)的题目
ps:前几天,博主不知道通过什么方式拿到了一个题目。题目梗概给你一个n∗nn*n的矩阵,要求判断其是否满足一下要求: 1对于任何ii满足.a[i][i]=0a[i][i]=0 2.对于任何i,ji,j满足a[i][j]=a[j][i]a[i][j]=a[j][i] 3.对于任何i,j,ki,j,k满足a[i][j]<=max(a[i][k],a[j][k])a[i][j]<=max(a[i][原创 2017-07-06 21:44:37 · 1100 阅读 · 1 评论 -
bitset简介
原blog链接作用stl黑科技之一bitset,是可以自定长度的“二进制数”(当然可以充当bool使用)。可以让时间复杂度除以32或64,比如O(1e9)O(1e9)的程序除以32就变成O(3∗1e7)O(3*1e7),暴力变标程!底层实现底层实现挺简单的吧,就是把unsigned int(unsigned long)或者unsigned long long用来充当32(64)个二进制位,从而让复杂转载 2017-07-07 07:55:11 · 1063 阅读 · 1 评论 -
[bitset] POJ 2443——Set Operation
题目传送门博主又来水blog啦 博主上一篇blog好像有提到这个bitset,其实那是博主并不是很懂,所以向Matchperson学习了这个操作。题目概述给定nn个集合。 在提出QQ个询问,询问x,yx,y在nn个集合中出现的集合有交集。解题思路读入的时候标记一下,然后并起来判断有没有1。 所以就可以bitset乱搞。 bitset大法好啊。#include<cstdio>#include原创 2017-07-07 08:43:15 · 694 阅读 · 1 评论 -
[tarjan+bitset]BZOJ 2208——[Jsoi2010]连通数
2208: [Jsoi2010]连通数题目描述解题报告这题的题目描述非常清晰,看到网上有dalao用bitsetbitset优化FloydFloyd就过了。博主用tarjantarjan缩点然后用bitsetbitset优化传递闭包就可以。但是看到很多人缩点完刷拓扑啊,其实这个操作很鸡肋。学过2−sat2-sat应该有所了解,拓扑序就是tarjantarjan刷出来的sccscc序(画个图就知道了)原创 2017-07-07 16:28:20 · 797 阅读 · 1 评论 -
[暴力]HDU 4473——Exam
题目梗概求正整数a,b,c,a*b*c<=n的方案数。解题思路这题的数据有点水原创 2017-07-31 16:12:57 · 535 阅读 · 0 评论 -
[随机算法+Hash] Codeforces 799F Round #413 F. Beautiful fountains rows
题目梗概有nn个不同的数字,每个数字只出现在[L,R][L,R]中。 求所有满足要求的区间的长度和。 要求:出现在该区间的所有数字的个数必须为奇数,且必须有数字存在。解题思路考虑一个区间如何才能满足要求。 将每个数字赋上一个(263−1,0](2^{63}-1,0]的随机值。 这个区间所有数字的异或值再异或上这个区间出现过的数字,如果等于0,那么这个区间满足要求。对于区间所有数字的异或值构造原创 2017-08-01 23:19:06 · 869 阅读 · 0 评论 -
[水题]BZOJ 1257——[CQOI2007]余数之和sum
题目描述给出正整数n和k,计算kk modmod 1+k1 + k modmod 2+k2 + k modmod 3+…+k3 + … + k modmod nn的值。解题思路先把k mod n看成k−n∗n/kk-n*n/k显然对于n/k相同的n形成了一个区间,区间的范围就是n/(n/k+1)+1n/(n/k+1)+1~n/(n/k)n/(n/k)区间的个数显然不超过n√\sqrt n个。然后乱搞原创 2017-08-20 16:07:41 · 667 阅读 · 0 评论 -
[乱搞]Hdu 6147——Pokémon GO II
题目描述众所周知,度度熊最近沉迷于 Pokémon GO。 由于太过沉迷,现在它只能按照游戏内置的指令行走了:对,简直就像一个现实中的Pokémon! 游戏内置的指令实际上可以抽象成一种:保持现在的朝向前行X米,然后右转。度度熊相信,只要遵循这个指令,它就一定可以抓到最珍奇的精灵球。 但不幸的是,这个指令并不是很有可信度,有时会引导度度熊走回原来的位置。现在它想知道,在第几条指令时它第一次回到已经走原创 2017-08-24 21:37:28 · 548 阅读 · 0 评论 -
[二进制分组维护凸包]BZOJ 4140—— 共点圆加强版
[二进制分组维护凸包]BZOJ 4140—— 共点圆加强版题目描述在平面直角坐标系中,Wayne需要你完成n次操作,操作只有两种:1.0 x y。表示在坐标系中加入一个以(x, y)为圆心且过原点的圆。2.1 x y。表示询问点(x, y)是否在所有已加入的圆的内部(含圆周),且至少在一个圆内部(含圆周)。为了减少你的工作量,题目保证圆心严格在x轴上方(纵坐标为正),且横坐标非零。解题思路如果不强制原创 2017-12-28 18:10:53 · 927 阅读 · 1 评论