上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 31 下一页
摘要: n,m<=200,n*m的方阵,有ULRD表示在这个格子时下一步要走到哪里,有一些待决策的格子用.表示,可以填ULRD任意一个,问有多少种填法使得从每个格子出发都能走出这个方阵,答案取模。保证未确定的格子<=300。 。。。一脸懵逼地写了原本30实际20的暴力然后跪着啃了下论文 然而什么都没啃懂不如 阅读全文
posted @ 2017-12-27 18:23 Blue233333 阅读(322) 评论(0) 推荐(0) 编辑
摘要: n<=300000,m<=300000的图,图上只有奇环,q<=300000个询问每次问:一个区间内有多少个子区间,满足只保留编号在该区间的点以及他们之间的边,可以构成一个二分图。 终于走出了第一步。。Pi--从点i开始往前延伸最早到哪里就不是二分图了。由于这个数组是单调的,只要这个数组求出来就可以 阅读全文
posted @ 2017-12-27 07:37 Blue233333 阅读(368) 评论(0) 推荐(0) 编辑
摘要: n<=100000种食物,给每个食物煮熟时间,有q<=500000个操作:在某时刻插入某个食物;查询熟食中编号最小的并删除之;查询是否有编号为id的食物,如果有查询是否有编号为id的熟食,如果有熟食删除之,否则输出其离煮熟的最小时间;查询编号在[L,R]的熟食有多少。保证操作时间递增。 可以发现:针 阅读全文
posted @ 2017-12-25 07:14 Blue233333 阅读(203) 评论(0) 推荐(0) 编辑
摘要: t<=10000个问,每次问n<=1000的全排列中逆序数对为k<=10000个的有多少,mod 1e9+7。 直接dp,$f(i,j)$--i的全排列中逆序数对为j的有多少,$f(i,j)=\sum_{k=max(0,j-i+1)}^{j} f(i-1,k)$,这东西记个前缀和即可n^2。 然后就 阅读全文
posted @ 2017-12-22 21:59 Blue233333 阅读(133) 评论(0) 推荐(0) 编辑
摘要: n<=1000 * m<=1000的网格图(见下)问最小割。 emmm上论文 好东西 然而建边建错WA*3,调试忘删WA*1。 非常好。 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 #include<stdlib. 阅读全文
posted @ 2017-12-22 21:54 Blue233333 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 日常刷水。。 n<=50000个数,把一段连续的数隔在一起的代价为$(x-L)^2$,其中$x=i-j+\sum_{k=j}^{i} A_k,j<=i$。问最小代价。 一开始看成除法然后浪费了20min(逃 瞎yy一下dp,$f(i)$--前i个数的最小分隔代价,$f(i)=min(f(j)+(s_ 阅读全文
posted @ 2017-12-22 21:46 Blue233333 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 给定n<=200000个操作:单点插入,查最后若干个数的Max,强制在线。 在线个鬼啊至少我空间还是可以先分配的,把序列倒过来,分配好空间,每个查询就是一个前缀Max了。 1 #include<stdio.h> 2 #include<string.h> 3 #include<algorithm> 4 阅读全文
posted @ 2017-12-21 21:55 Blue233333 阅读(130) 评论(0) 推荐(0) 编辑
摘要: n<=100000个<=100000的正数,其中有一些0表示这个位置的数字可以是L~R中的一个,L,R是给定常数且1<=L<=R<=100000,问最长上升子序列。 先暴力啊!$f(i,j)$表示前i个数中以j结尾的答案。$f(i,j)=f(i-1,j)$,$f(i,a_i)=max(f(i-1,j 阅读全文
posted @ 2017-12-21 16:45 Blue233333 阅读(217) 评论(0) 推荐(0) 编辑
摘要: n<=500,n*n的01矩阵,可以选择一个k*k的矩阵全变1,求最大1联通区域。 敢敢n^3。。模拟k*k的矩阵的位置,从左到右扫的时候,每变一个位置只会引起边界的信息变化,就记含边界的k*k矩形内的各联通块的大小以及不含边界的k*k的矩形内的0的个数,然后边移动边开个桶更新。 1 #includ 阅读全文
posted @ 2017-12-20 21:22 Blue233333 阅读(356) 评论(0) 推荐(0) 编辑
摘要: n<=200000个<=200000的数问所有的f(i,j)的和,表示去掉区间i到j后的剩余的数字中任选两个数的最大gcd。 数论日常不会。。 先试着计算一个数组:Hi表示f(l,r)<=i的(l,r)的数量。这样答案就是i*(H_i - H_i-1)的和。要求删掉某个区间后剩余的区间的最大gcd, 阅读全文
posted @ 2017-12-20 19:21 Blue233333 阅读(457) 评论(0) 推荐(0) 编辑
摘要: 给一个字符串支持以下操作:区间删除某个特定字符。最后输出字符串。n,m<=200000。 这题我居然不会可以回家了。。 首先,单点删除,选个平衡树比如set。 然后,他给的下标是会随删除操作变化的,需要查“存在于字符串中的第K个是谁”来找左右端点,一个树状数组搞定。 树状数组找出题目给的x,y在初始 阅读全文
posted @ 2017-12-18 21:42 Blue233333 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 维护一个序列支持以下操作:区间加,区间求最大子段和。n<=50000,m<=50000。 我TM再也不写分块了。。。 先分块,对于块整体加的操作,假设块里面有若干二元组(x,y),表示一个大小x的区间的和为y,那实际就是求kx+y=z的最大值,而y=-kx+z,所以即求经过这些点、斜率不定的直线的最 阅读全文
posted @ 2017-12-18 21:04 Blue233333 阅读(437) 评论(0) 推荐(0) 编辑
摘要: n<=1e5个数,m<=1e5个操作:区间加,查区间最大的1~i号点的和。 第一次见到nsqrt(n)logn能过1e5的。。然而跑得很慢 普通数据结构感觉难下手,那就分块。先处理前缀和数组。一次修改,实际上把一段前缀和加上了一个等差数列,然后把这区间后面的前缀和加上某个固定数字,也可以看成另一个等 阅读全文
posted @ 2017-12-15 13:40 Blue233333 阅读(288) 评论(0) 推荐(0) 编辑
摘要: n<=10000个数m<=10000次操作:1、L~R中有多少种数字,2、单点修改,修改次数<=1000。 一种通法是记pre[i]表示i前最近的和a[i]相等的数字,然后问题变成:[L,R]中有多少个pre[i]<L。 方法一:pre数组的动态维护可以用set。对每个数开一个set存所有出现位置, 阅读全文
posted @ 2017-12-14 13:25 Blue233333 阅读(303) 评论(0) 推荐(0) 编辑
摘要: n<=40000个数,在线问m<=50000次区间众数,数字Ai<=1e9。 重要结论:$mode(a \cup b)\epsilon mode(a) \cup b$,显然。 用分块做,对区间[L,R]取众数,就先对他们跨过的块O(1)取答案--预处理A(i,j)表示块i到块j的众数即可,然后对两边 阅读全文
posted @ 2017-12-13 21:50 Blue233333 阅读(163) 评论(0) 推荐(0) 编辑
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 31 下一页