【BZOJ1047 || HAOI2007】理想的正方形 【Description】有一个AXB的数字矩阵,从中找出一个NXN的正方形区域使得该区域中最大值与最小值的差值最小【Data Range】矩阵中所有数字 20% 2 100% 2 【Analysis】因为需要知道每N个格子最大值与最小值所以第一想法是建1000颗线段树,然后分析下复杂度发现竟然可以过!
【BZOJ1090 || SCOI2003】字符串折叠 【Description】我们有如下几个定义:• 只包含单个大写英文字母的序列 A 是压缩序列。A 解压缩后的序列 A′为自己。• 如果序列 A 和 B 都是压缩序列,那么序列 AB 是压缩序列,解压缩后为 A′B′。• 如果 S 是压缩序列,那么 X(S) 也是压缩序列,其中 X 是一个比 1 大的十进制数,该序列解压缩后为 S′重复 X 遍。给定一个序列 A′,求一
【BZOJ2396 || POJ3318】神奇的矩阵 || Matrix Multiplication 【Description】给出三个行数和列数均为N的矩阵A、B、C,判断A*B=C是否成立。【Data Range】N 【Analysis】直接AXB 再判与C是否相等是 O(N3) 的一个基于概率的算法是随机生成一个 N乘1 的矩阵R然后判断 A * B * R 是否等于 C * R ,而前者相当于 A * ( B * R )与后者一样都可以在
【BZOJ1084 || SCOI2005】最大子矩阵 【Description】一个n*m的矩阵,请你选出其中k个子矩阵,使得这个k个子矩阵分值之和最大。注意:选出的k个子矩阵不能相互重叠。【Data Range】1≤n≤100,1≤m≤2,1≤k≤10【Analysis】以前做过有印象,所以做之前没看数据范围卡了很久没想出来,最后发现 m============================
【BZOJ3000】Big Number 【题目描述】T组数据,求N!的K进制数的位数T 31 , K 【简要分析】十进制下N!的位数很容易搞的或者用(利用Stirling公式)在K进制意义下考虑到N的范围如此的大,以至于我需要去找到一个O(常数)的方法来解决它(= =)有了前面的基础,答案就很显然了转换下得到至此完美解决当然答案还要加个1
崭新的2013 bool find(int u)//Hungary{ for (int i = edge[u]; i; i = next[i]) { if (vp[point[i]] == t) continue; vp[point[i]] = t; if (!g[point[i]] || find(g[point[i]])) return g[poi
【BZOJ1087 || SCOI2005】互不侵犯King 【题目描述】在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。 1 【简要分析】水题,大神请【Ctrl + W】裸搜……咳咳,显然过不了暴力dp也是可以过的也容易想到用状态压缩去优化转移然后最后再打个表,恭喜你,BZOJrank1非你莫属有几个
【BZOJ1013 || JSOI2008】球形空间产生器sphere 【题目描述】有一个球形空间产生器能够在n维空间中产生一个坚硬的球体。现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁这个球形空间产生器。省选还真是有裸题!【简要分析】一开始本沙茶2B地认为选少数点即可以解出球心实际上(文艺一下)二维三个点确定一个圆三维四个点确定一个球四维五个点确定一
【BZOJ1011 || HNOI2008】遥远的行星 【题目描述】直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当ij=Mi*Mj/(j-i) 其中A为很小的常量,故直观上说每颗行星都只受到距离遥远的行星的作用。请计算每颗行星的受力,只要结果的相对误差不超过5%即可.搞笑题 O(∩_∩)O【简要分析】看数据范围我就萎了,然后乱搞也只得10分事实证明就是根据可以有5%的误差乱搞= =这位仁兄推出了
【BZOJ2730 || HNOI2012】矿场搭建 其实现在做得挺心酸的,4月份参加省选的时候什么都不会特别是对关于联通分量什么题目的表示不明觉厉现在意识到其实这和学OI的时间没有什么关系完全是自己没有用心、没有花时间罢了,然后得花现在的时间去弥补【题目描述】煤矿工地可以看成是由隧道连接挖煤点组成的无向图。为安全起见,希望在工地发生事故时所有挖煤点的工人都能有一条出路逃到救援出口处。于是矿主决定在某些挖煤点设立救援出
【BZOJ1098 || POI-XIV-BIU】链表 【题目描述】http://main.edu.pl/en/archive/oi/14/biuhttp://61.187.179.132/JudgeOnline/problem.php?id=1098给出一个图(N个点,M条边),让你把此图分成尽可能多的集合,满足任意不在同一集合的点之间都有边相连。(N 【简要分析】可以想到答案为原图的补图的联通块个数,证明如下:
【BZOJ2753 || SCOI2012】滑雪与时间胶囊 【题目描述】BZOJ2753给一个有向图,根限制为1,求最多经过节点数,求有向图最小生成树。【简要分析】初看此题觉得是裸的最小树形图但数据范围着实吓翻我对于所有的数据,保证 1保证 1“此题应该是有特殊性质的吧”,然后就往高度方向想高度相等的点若有边相连则此边一定是无向边然后我nc的想都不想清楚就tarjan缩了次点虽然缩点没用但是也顺便求了第一问=
C++果然还是有一个模版写起来要舒服点 我的模版肯定不适合所有人(废话)写起来自己真正舒服最重要cmath库的函数我能手写的一般手写所以就写成了函数模版typedef了一些东西省时间vector的动态申请空间这点想好好利用于是define了stack对于给图论题做栈非常方便然后就是平常常用的一些库,比如万恶的STL哈哈当然,模版会不断更新的#include #include #include #
【图论算法及模版】割点,割边,强联通分量,点双联通分量,边双联通分量 将学的基础知识总结下 Orz LRJ因为都是街货,为了防止大牛D,所以仅结合资料作简单总结联通分量:u -> v, v -> u,相互可达的节点称为连通分量求联通分量个数只需要DFS一遍即可,也可用并查集去判联通块割点无向图G中,删除某点u后,若联通分量数目增加,则u为此图G中的一个割点。这意味着若在连通图中删除割点,则图变得不连通。DFS整个图,利
【最小树形图】 给定一个有向带权图G与其中的一个节点u,找出一个以u为根节点,权和最小的有向生成树,有向生成树即为树形图。求固定根的最小树形图,由于边都是有向边所以不可以用kruskal,prim,而应该用传说中的朱刘算法!(又是中国人的算法)首先研究下最小树形图的性质1. 根节点必须能到达所有其他节点,否则肯定无最小树形图(dfs直接判断即可)2. 根节点入度为0,其余节点入度都为13.
【链表启发式合并】HNOI2009 梦幻布丁 WC2011mt特意强调了链表其中就有这样一道题Task pudding 【题目描述】 现在有 n 个布丁排成一排,每个布丁都有一个正整数颜色。 有 m 个操作: 第一种操作 1 x y 将所有颜色为 x 改为颜色 y。 第二种操作 2 询问当前有多少段颜色。 【输入数据】 第一行两个正整数 n,m。 下面一行,n 个正整数,表示一排的布丁。
【排列组合】HNOI 我这方面比较水就只提供两道题吧1. HNOI2008 prison监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱此题略水,属于HNOI送分题系列,用补集的思想可以轻松过。可能越狱的 = 总 - 不可能越狱的code#include #incl
【次小生成树】环切性质 次小生成树 求法 求出最小生成树后,建立最优顺序生成树 枚举每条不在最小生成树上的边,找出左右端点之间的最大边(即 Kruskal 生成顺序森林上的 lca 或用倍增),求出删去最大边加入此边后的权值(环切性质)。 或者排序后加并查集,求出每条边的替代边。 取最小。 时间复杂度 o(mlogn) 蒯自hyc学长pptpoj1679判断最小生成树是否唯一注意,
【左偏树】应用 最近见到有人再度提起“左偏树”这个词我就重新写了一遍,不过是用与以前不同的动态结构写的,同时也决定以后写这个用动态结构!而且也学习了内存池免去new节点这个很酷的方法!//插一下,讲下内存池node re[maxn], *tot = re;利用一个已经分配了地址的re数组节省new的时间之后要新建节点则*(++tot) = (node) {中间填初始值};//不