自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不来也不去的一只失忆蝴蝶

曾迷途才怕追不上满街赶路人

  • 博客(29)
  • 收藏
  • 关注

原创 [51nod月赛19D]石头剪刀布威力加强版

题目大意小A和小B在玩石头剪刀布,他们每个人写出一个序列。 小A写出了n个数。 小B写出了m个数。 其中0代表石头,1代表剪刀,2代表布 0>1,1>2,2>0。 他们总共进行k轮,第一轮选择第一个数字,后面每一轮两个人都选择序列的下一个数进行比赛(序列结尾的下一个位置在序列开头)。 问小A和小B每人赢了几局。瞎做例如我们现在统计A赢了几局。 假如Ai和Bj打,那么下一次轮到Ai时,B

2016-10-31 17:04:12 962

原创 [51nod月赛19C]集合对

题目大意定义集合xor操作 A xor B=A∪B-A∩B。 问有多少对(P,Q)满足 P∈A Q∈B 使得 (P xor A)xor(Q xor B)=A xor B其中P Q都是集合。 答案对1e9+7取模。例如:A ={1} ,B={1,2},A xor B = {2},枚举所有情况P Q有2种。做法不难猜出结论是2^{交集个数}#include<cstdio>#include<algo

2016-10-31 16:59:30 412

原创 [51nod月赛19B]最小集合

题目大意有这样一个集合,如果a和b在集合内,gcd(a,b)也在。 给出集合内n个已知元素,求集合内至少有多少个互不相同的数。瞎做我们可以枚举k是否在集合内,那么如果集合内存在两个数i和j满足k|(i,j),那么k是不是在集合内呢?因为这是k才可能在集合内。 用b[i]表示i的倍数出现在集合内的个数。 如果k的一个倍数与ib值相同,显然这个倍数会出现在集合内,但是k不会出现在集合内。#incl

2016-10-31 16:57:34 837

原创 [51nod月赛19A]区间的价值2

题目大意求所有区间and值与or值乘积的和瞎搞枚举左端点,我们需要知道and值与or值均相同的区间可以直接做出来。 这样划分最多60个区间,用链表顺序保存可能使得and值和or值改变的右端点即可。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=

2016-10-31 16:49:20 463

原创 [清华集训2015]V

题目大意给出一个序列a,现在有五种操作 1、把[l,r]每个ai加上x 2、把[l,r]每个ai变成x 3、把[l,r]每个ai变成max(ai-x,0) 4、询问目前ai的值 5、询问ai的历史最大值线段树我们考虑三种修改操作,可以发现它们可以用一种标记(a,b)表示 x经过(a,b)后会变成max(a+x,b) 那么三种操作分别对应 (x,-inf) (-inf,x) (-x

2016-10-31 16:36:27 1234

原创 量化交易

题目大意对于一个序列,每个位置可以填左括号/右括号或不填。 必须使括号序列合法,同时价值为右括号处权值和-左括号处权值和贪心假如我们已经得到了前i-1的填写方案,bz[i]=1表示填了左括号,-1表示填了右括号,0表示没填。 我们用一个数据结构例如堆来保存前i-1里bz值为-1和0的。 现在我们考虑在i填右括号,我们找到堆中最小值j。 然后如果a[i]-j>=0则我们就配对,然后bz[i]–

2016-10-31 15:45:08 545

原创 图书列表

题目描述模拟这种题瞎模拟 我是建了个trie,对于图书和目录分开来存储。一个字符串用它在哈希表的位置作为数值。 然后输出的时候,把一个节点的儿子按字典序排序#include<cstdio>#include<cstring>#include<algorithm>#include<map>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace

2016-10-31 15:39:32 448

原创 分组

题目大意给n个数分组,每一组的代价是最大值与最小值的差。 求有多少种分组方案,使得代价和不超过m。DP先想想一个朴素的dp。 将这些数从大到小排序,设Fi,j,k表示做完了第i个数,目前有j个未填入最小值的组,代价和为k。 第一种转移,第i+1个数单独作为一组: *1->Fi+1,j,k 第二种转移,第i+1个数不作为最小值的填入一个组: *j->Fi+1,j,k 第三种转移,新建一个

2016-10-31 15:36:24 423

原创 独木桥

题目大意在数轴上,初始有n个点,每个点有一个初始运动方向。 每个点的速度都是1/s 当两个点相遇时它们会改变自己的运动方向 q个询问每次询问求t秒后初始编号为k的点坐标是什么。经典好题结论1:相对位置永远不变。易证。 有了这个结论,我们相当于要求t秒后排名为rank[k]的点坐标。 结论2:可以不考虑变向。 因为现在与编号无关,两个点相遇转向可以理解为互相穿过。 结论3:初始方向相同的

2016-10-31 15:27:51 423

原创 最大值

题目大意给定一个序列,求ai opt aj(i<ji<j)的最大值。 opt是and/or/xorxor一个数一个数插入进trie中每次查找一发 n log nand和or从高位向低位贪心 尽量使高位位运算后结果为1 我们可以枚举一个数作为必须在位运算中出现的数,然后找到一个数与其位运算结果最大。 假如是and的话,对于某一位,该数此位为1,则另一个数如果该位也能为1就强制该位是1,否则不

2016-10-31 15:19:59 495

原创 ksum

题目描述瞎搞经典题了#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;typedef long long ll;const int maxn=100000+10;int left[maxn],right[maxn];ll heap[maxn],sum[max

2016-10-29 18:52:47 415

原创 label

题目描述DP很容易想到朴素DP 容易观察到DP数组有对称轴,而且中间一大段都是相等的,这个也易证。 于是就可以DP了。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;typedef lo

2016-10-29 18:51:36 654

原创 完美标号

题目描述给定M个二元组(A_i, B_i),求X_1, …, X_N满足:对于任意(A_i, B_i),有|X_{A_i} - X_{B_i}| = 1成立。黑白染色如果不能黑白染色,显然不可能有解。 而能够黑白染色, 发现颜色就是合法解。 因此考虑黑白染色即可。#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b

2016-10-29 18:47:39 409

原创 [51nod1709]复杂度分析

题目描述给出一棵n个点的树(以1号点为根),定义dep[i]为点i到根路径上点的个数。众所周知,树上最近公共祖先问题可以用倍增算法解决。现在我们需要算出这个算法精确的复杂度。我们定义计算点i和点j最近公共组先的精确复杂度为bit[dep[i]-dep[lca(i,j)]]+bitdep[j]-dep[lca(i,j)]。为了计算平均所需的复杂度为多少,请你帮忙计算任意两点计算最近公共组先所需复杂度的

2016-10-29 18:40:53 649

原创 [51nod1668]非010串

题目描述如果一个01字符串满足不存在010这样的子串,那么称它为非010串。 求长度为n的非010串的个数。(对1e9+7取模)DP写个DP式,然后矩阵乘法即可 因为比较懒现在懒得去推那个式子是啥了 看代码吧#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;

2016-10-29 18:37:40 921

原创 [51nod1655]染色问题

题目描述一个n(3<=n<=100)个点的完全图,现在给出n,要求将每条边都染上一种颜色k(1<=k<=n),最终使得所有三个点构成的环(C(n,3)个不同的换)上三条边的颜色和在所有颜色中任选三种颜色的组合(C(n,3)种方案)一一对应,由你来给出染色方案。 本题有多组数据构造易得n是偶数时无解 n为奇数时,i与j之间连(i+j-2)%n的颜色。 不会证,但确实显然#include<cstd

2016-10-29 18:04:49 523

原创 [bzoj3600]没有人的算术

题目大意定义一种数,要么是0,要么是一个二元组,这个二元组两元都是数。 定义小于是: 1、0<(l,r) 2、如果x<ax<a,那么(x,y)<(a,b) 3、如果x=a,y<by<b,那么(x,y)<(a,b) 定义等于是: 1、0=0 2、如果x=a,y=b,那么(x,y)=(a,b) 大于与小于类似 现在有一个序列,初始全部为0。 有两种操作: 1、把a[k]修改为(a[

2016-10-29 17:36:37 1358

原创 小W学物理

题目描述为了测试小W的物理水平,Mr.X在二维坐标系中放了N面镜子(镜子坐标绝对值不超过M),镜子均与坐标轴成45°角,所以一共有两种类型“/”和“\”。原点不会有镜子,任意一点最多只有一面镜子。 镜子两个面都能反光,而中间不透光,例如,对于一个“/”型镜子,下方向射入的光线会被反射到右方向,左方向射入的光线会被反射到上方向。 现在有一条光线从原点沿X轴正方向射出,求走过T路程后所在位置模拟就模

2016-10-29 15:13:47 486

原创 配对游戏

题目描述爆搜该怎么搜就怎么搜 然后我加理论下界减枝,但仍然很慢,所以只能调调参数水过去了QAQ#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxh=20000000;bool bz[30],pd[10][10],vis[10][10]

2016-10-29 15:08:20 500

原创 NOIP模拟赛10.6~10.7总结

10.6104分,不好题目看起来很难,初一看三道题都没有头绪。 但是思考时间是不能过久的,仔细看一下,第一题80分,第二题60分,第三题68分,似乎还是不难的。 打完第一题80分之后打对拍,拍的过程中疑惑为什么极限是10000,而且n^2给到了80分,于是猜想正解也是n^2,卡了大约半小时的常数,本机测还是过不去的样子,最后OJ上过了。 第二题60分和第三题68分,打完后没有检查时间,都得分较

2016-10-09 21:04:18 482

原创 tree

题目描述给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1。每个结点上有一个物品,第i 个结点上的物品价值为vi。 你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的路径上所有的点都被选中,并且选中结点的个数不能超过给定的上限lim。在此前提下,你需要最大化选中结点上物品的价值之和。 求这个最大的价值之和。树形依赖首先把树线性化,就

2016-10-06 07:55:18 536

原创 running

题目描述小胡同学是个热爱运动的好孩子。 每天晚上,小胡都会去操场上跑步,学校的操场可以看成一个由n 个格子排成的一个环形,格子按照顺时针顺序从0 到n �� 1 标号。 小胡观察到有m 个同学在跑步,最开始每个同学都在起点(即0 号格子),每个同学都有个步长ai,每跑一步,每个同学都会往顺时针方向前进ai 个格子。由于跑道是环形的,如果 一个同学站在n �� 1 这个格

2016-10-06 07:53:34 774

原创 string

题目描述给出一个长度为n, 由小写英文字母组成的字符串S, 求在所有由小写英文字母组成且长度为n 且恰好有k 位与S 不同的字符串中,给定字符串T 按照字典序排在第几位。由于答案可能很大,模10^9 + 7 输出。瞎做你尝试枚举比T串小的合法字符串最早在第几位和T不同,然后组合数+幂数算一波以这个为前缀的合法字符串数量。#include<cstdio>#include<algorithm>#de

2016-10-06 07:48:44 507

原创 排队

题目描述做法我们先处理出fix表示在全空情况下不断进人,i这个房间被第几个人最终停留。 用一个堆保留空房间当前fix的最小值,每次进一个人就是选择堆中最小值的房间。 拿走人的话观察一下就是从这个房间往上有人房间的数量-1,这个可以倍增来求,因为这个房间到根路径上有人和没人一定是分离开的。 分析一下势能这样做是n log n的。#include<cstdio>#include<algorith

2016-10-06 07:46:37 425

原创 道路规划

题目大意两排点,每个点只跟一条线相连。 选最多的线,使这些线两两相交。水题相交就是i#include<cstdio>#include<algorithm>#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;const int maxn=100000+10;in

2016-10-06 07:42:29 708

原创 挖金矿

题目大意一个n*m的网格,每列从上往下选取至少一个,求平均值的最大值。 n*m<=100000二分遇到这种平均值都可以二分判定。 二分答案ans,然后所有元素减去ans,每行贪心的选取最大前缀和,然后加起来看是否非负即可。 对于n*m<=100000,如果像我那么SB就开个n根号的数组吧……#include<cstdio>#include<algorithm>#include<cmath>

2016-10-06 07:39:47 729

原创 跟踪

题目描述模拟我们可以枚举在那个点被抓到,然后让石神马不停蹄的跑到那个点,接着乖乖等死。#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(i=a;i<=b;i++)using namespace std;const int maxn=200000+10;int f[maxn][25],d[maxn

2016-10-06 07:37:26 340

原创 成绩调研

题目大意求有多少个区间满足权值为i的数量在[li,ri]内。扫一扫我们枚举区间右端点,左端点的可取范围是一段区间。 尝试用两个堆维护左端点的最大值和最小值。 对于第i种权值,我们可以通过指针跳跳跳获得在位置i时左端点的左界和右界,所以一个堆保存所有权值的左界另一个保存右界。 注意l=0以及r=0的情况。#include<cstdio>#include<algorithm>#include<

2016-10-06 07:34:57 368

原创 探险计划

题目描述这一天,Hnsdfz信息组的众人决定上岳麓山玩.岳麓山上的可以探险的地方非常多,而信息组的Oier们給每一个地方都设定了一个危险值,代表探险这个景点需要承担的危险,而整个岳麓山可以抽象为由n行数字组成的数字梯形.而梯形顶端有m个数字,在每个数字处可以往左上或右上移动 ( (i,j) 可以到 (i-1,j) 或 (i-1,j-1), (i,j)表示输入文件中数字梯形的第i行第j列 ),形成一条

2016-10-06 07:30:25 455

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除