04 2016 档案
摘要:然而还不是很懂=_= 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 #include <cstdio> 5 #include <queue> 6 using namespace std; 7 const int
阅读全文
摘要:题目链接 题意:给出一个树形结构,求P个节点的子树最少要去掉几条边 分析:DP[root][j] 表示 以第 root 个为根节点, 包含j 个节点需要去掉几条边。那么对于 root 这个根节点来说, 要么选择 他的一个 儿子 k, 要么不选择, 如果选择 dp[root][j] = min( dp
阅读全文
摘要:Edward, the emperor of the Marjar Empire, wants to build some bidirectional highways so that he can reach other cities from the capital as fast as pos
阅读全文
摘要:问题描述 输入描述 输出描述 输入样例 输出样例 有一个明显的性质:如果子串(i,j)包含了至少k个不同的字符,那么子串(i,k),(j < k < length)也包含了至少k个不同字符。 因此对于每一个左边界,只要找到最小的满足条件的右边界,就能在O(1)时间内统计完所有以这个左边界开始的符合条
阅读全文
摘要:输入描述 输出描述 输入样例 输出样例 1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 using namespace std; 6 const int Max = 100
阅读全文
摘要:输入描述 输出描述 输入样例 输出样例 红、绿、蓝分别表示0、1、2,每次操作就相当于+1,原问题就转化为求n的三进制 表示的最低的m位,即求 n mod 3^m3的三进制表示。 复杂度 O(m)O(m) 1 #include <iostream> 2 #include <cstdio> 3
阅读全文
摘要:题意: n岛m条路,然后是 n个岛的坐标,然后是m条双向路,包括 岛和 岛 之间 最大客流量,让求 最左边的岛 到右边的岛 最大客流量 分析: 建图 以 左边的岛为原点,最右边的为终点求最大客流量。 刘汝佳STL会超时,因为vector牵扯到 复制操作 然后看大神的将stl全换了 http://ww
阅读全文
摘要:题目链接 题意:求一个字符串中 前缀 和 后缀 相同的长度 分析: 对于一个字符串他自己的长度肯定是可以的。然后如果满足 前缀 和 后缀相等,那个前缀 最后一个字符 一定 和 该字符串最后一个字符相等,不然不会满足条件。 所以 找 str[len - 1] 的next数组, 对于 next[len
阅读全文
摘要:E. New Reform time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output E. New Reform time limit pe
阅读全文
摘要:题目链接 题意:一个矩形被分成了n + 1块,然后给出m个点,求每个点会落在哪一块中,输出每块的点的个数 就是判断 点与直线的位置,点在直线的逆时针方向叉积 < 0,点在直线的顺时针方向叉积 > 0 1 // 可以选择二分查找 2 #include <iostream> 3 #include <al
阅读全文
摘要:题目链接 题意:给出A,B, C点坐标求D,E,F坐标,其中每个角都被均等分成三份 求出 ABC的角a, 由 BC 逆时针旋转 a/3 得到BD,然后 求出 ACB 的角a2, 然后 由 BC顺时针 旋转 a2 / 3得到 DC,然后就交点 1 #include <iostream> 2 #incl
阅读全文
摘要:题目链接 题意:有F种食物,D种饮料N头奶牛,只能吃某种食物和饮料(而且只能吃特定的一份) 一种食物被一头牛吃了之后,其余牛就不能吃了第一行有N,F,D三个整数接着2-N+1行代表第i头牛,前面两个整数是Fi与Di(食物与饮料的种类数量),接着是食物的种类与饮料的种类要求输出最多分配能够满足的牛的数
阅读全文
摘要:vecotr是动态数组,顾名思义他可以动态的增加自己的长度。 内存机制: 但是怎样的增加自己的长度? vector有两个函数一个是capacity()返回内存空间即缓冲区的大小,另一个是size()返回当前数组中数的数量。vector增加元素来说,当容量已经不能放进数据了,那么他会重新申请一块内存,
阅读全文
摘要:题目链接 题意:看一个图片需要1单位时间,如果是 w 需要翻转 b 时间,切换到相邻位置(往左或者往右)需要 a 时间,求T时间最多能看几张图片 从第一个开始向右走看若干个图片然后往如果往左走就不会再往右走了,也就是只能一次改变方向,多次改变方向就得不偿失了,浪费时间。所以一次枚举能看图片的数量n,
阅读全文
摘要:题目链接 题意: 给定长度为n的字符串s,求他的每个前缀的最短循环节 分析: kmp预处理 next[]数组,然后对于 前 i 个字符,如果 next[i] > 0 && i % (i - next[i] ),前 i 个字符的循环节就是(i -1, ... i - next[i]) 从 0 到 n
阅读全文
摘要:题意: 一个r*c的矩形,求一个子矩形通过平移复制能覆盖整个矩形 关于一个字符串的最小覆盖子串可以看这里http://blog.csdn.net/fjsd155/article/details/6866991 把他分成对行和对列,对行覆盖最小就是n - next[n] ,然后求最小公倍数 对列的也是
阅读全文
摘要:题意: 求最小生成树中,最大的边减去最小的边 最小值。 看了题解发现真简单=_= 将每条边进行从小到大排序,然后从最小到大一次枚举最小生成树,当构成生成树的时候,更新最小值 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring>
阅读全文
摘要:题目链接 分析: 一个n * n的图,每个点是一个奶酪的体积,从0,0开始每次最多可以走k步,下一步体积必须大于上一步,求最大体积和 1 #include <iostream> 2 #include <cstdio> 3 #include <queue> 4 #include <cstring> 5
阅读全文
摘要:题目链接 N节课,每节课在一个星期中的某一节,求最多能选几节课 好吧,想了半天没想出来,最后看了题解是二分图最大匹配,好弱 建图: 每节课 与 时间有一条边 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 #include
阅读全文
摘要:参考博客:如何找取 最小覆盖点集合 题意:R*C大小的网格,网格上面放了一些目标。可以再网格外发射子弹,子弹会沿着垂直或者水平方向飞行,并且打掉飞行路径上的所有目标,计算最小多少子弹,各从哪些位置发射,才能将所有的目标全部打掉 分析:就是求最小覆盖点 以及 输出所有的覆盖点 最小覆盖点 == 最大匹
阅读全文
摘要:题目链接 题意:给出a, b, c 和操作类型 (与或异或),问是否满足所有的式子 主要是建图: 对于 and , c == 1: 说明 a 和 b都是1,那么 0 就不能取, a' -> a , b' - > b ,因为 a 和 a'是对立事件,对于 a' - >a说明,a'如果成立,那么a也一定
阅读全文
摘要:题目链接 题意:平面上,一个圆,圆的边上按顺时针放着n个点。现在要连m条边,比如a,b,那么a到b可以从圆的内部连接,也可以从圆的外部连接。给你的信息中,每个点最多只会连接的一条边。问能不能连接这m条边,使这些边都不相交。 分析:将每一条边缩成一个点,对于每条边要么在圆内要么在园外只有满足一种情况,
阅读全文
摘要:题目链接Network of Schools 参考斌神博客 强连通分量缩点求入度为0的个数和出度为0的分量个数 题目大意:N(2<N<100)各学校之间有单向的网络,每个学校得到一套软件后,可以通过单向网络向周边的学校传输,问题1:初始至少需要向多少个学校发放软件,使得网络内所有的学校最终都能得到软
阅读全文
摘要:题目链接 题目:给出两个串,每匹配一种有一种权值,求权值最大的匹配串 就是 最长公共子序列的 的思想: 首先对于 i 和 j 来比较, 一种情况是i和j匹配,此时 dp[i][j] = dp[i - 1][j - 1] + g[ str1[i] ][ str2[j] ],另一种情况是i和j不匹配,那
阅读全文
摘要:题目链接 题意:求最小环 第一反应时floyd判断,但是涉及到最少3个点,然后就不会了,又想的是 双联通分量,这个不知道为什么不对。 Floyd 判断 最小环 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 #in
阅读全文
摘要:题目链接 题意:给出一些单词,问全部单词能否首尾相连 直接 将每一个单词第一个和最后一个字母建立一条有向边,保证除了首尾两个出入度不相等,其他的要保证相等。还有一个条件就是 首尾两个出入度差为1 同时并查集判连通 1 #include <iostream> 2 #include <cstdio> 3
阅读全文
摘要:题目链接 题意是说在几个邮局之间传送一份信件,如果出发点和终止点在同一个国家传递,则时间为0,否则让你求花费最少时间,如果不能传到,则输出Nao e possivel entregar a carta。判断邮局是否在同一个国家的依据是发出的信件可以相互到达。 如果直接求最短路则无法判断两个邮局是否在
阅读全文
摘要:LCA问题的tarjan解法模板 LCA问题 详细 1、二叉搜索树上找两个节点LCA 1 public int query(Node t, Node u, Node v) { 2 int left = u.value; 3 int right = v.value; 4 5 //二叉查找树内,如果左结
阅读全文
摘要:题目链接 题意:n条隧道由一些点连接而成,其中每条隧道链接两个连接点。任意两个连接点之间最多只有一条隧道。任务就是在这些连接点中,安装尽量少的太平井和逃生装置,使得不管哪个连接点倒塌,工人都能从其他太平井逃脱,求最少安装数量和方案。 分析:本题相当于在一张无向图上选择尽量少的点涂黑(对应太平井),使
阅读全文
摘要:题目链接 题意:一些骑士,他们有些人之间有矛盾,现在要求选出一些骑士围成一圈,圈要满足如下条件:1.人数大于1。2.总人数为奇数。3.有仇恨的骑士不能挨着坐。问有几个骑士不能和任何人形成任何的圆圈。 分析:以骑士为借点建立无向图G,如果两个骑士可以相邻(即不相互憎恶)建立一条有向边,题目转化成求不在
阅读全文