04 2017 档案
摘要:链接: http://poj.org/problem?id=2945 题解: 给你n个字符串,统计出现1~n次的字符串各有多少个 题解: 这道题最快的做法应该就是字典树了吧,边插入边更新答案就行了 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=3630 题意: 给你n个字符串,判断有没有字符串是其他字符串的前缀 题解: 建一个字典树,在插入的过程中,如果没有新建一个结点,那这个字符串肯定是其他字符串的前缀, 如果新建结点的时候发现,有的字符串以这个字符结尾,那肯定有字符串是这个字
阅读全文
摘要:链接: http://poj.org/problem?id=1961 题意: 给你一个字符串,求这个字符串到第i个字符为止的循环节的次数。 比如aabaabaabaab,长度为12.到第二个a时,a出现2次,输出2.到第二个b时,aab出现了2次,输出2. 到第三个b时,aab出现3次,输出3.到第
阅读全文
摘要:链接: http://poj.org/problem?id=2406 题意: 给你一个字符串,求它的最小循环节,输出循环了多少次 题解: KMP,next表示模式串如果第i位(设str[0]为第0位)与文本串第j位不匹配则要回到第next[i]位继续与文本串第j位匹配。 则模式串第1位到next[n
阅读全文
摘要:链接: http://poj.org/problem?id=3461 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1088 题意: 给你一个矩阵,每个位置表示一个高度,你能从高度高的地方滑到高度低的地方,问你最多能滑多长 题解: “深夜”水一题,很久之前好像扫过一眼这道题,但是不会写,其实就是一个dfs而已 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1511 题意: 给你一个有向图,输出从0到所有点的距离总和+从所有点到0的距离总和的最小值 题解: 先正向建图,求一个最短路,再反向建图,求一个最短路,一定要用spfa,dijkstra会超时 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1797 题意: 给出N个城市M条边,每条边都有个容量,求一条运输路线,使城市1到城市N的运输量最大 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=2761 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=2182 题意: 有N头牛,编号1~N,乱序排成一列,现在已知每头牛前面有多少头牛比它的编号小, 求排队后从前往后数,每头牛的编号 题解: 从后往前扫描,遇到数字a,说明它是剩余序列中的第a+1个数,找到改编号并删除。 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=2259 题意: 排队吃饭,有n个team,每当一个人过来的时候,只要前面有他认识的人,就会直接插到那个team的后面,否则从后面排队 然后就是询问你每次出队的是谁 题解: 用两个队列就可以了,主队列里面是team编号,然后每个team再开
阅读全文
摘要:链接: http://poj.org/problem?id=1854 题意: 给你一个字符串,每次你能交换两个相邻的字符,问你最少交换多少次,使它变成回文串 题解: 从两边向中间进行贪心选择,要么更改左边使和右边相等,要么更改右边使和左边相等,取最小的那个就行了 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=2068 题意: 传统的Nim游戏由两名玩家进行,在一堆石头中,双方轮流取走任意合法数量块石头,取走最后一块石头的玩家落败。 多人Nim游戏将参赛人数拓展至两个队伍,每支队伍有n名队员交错入座,单次分别能最多取走Mi块石头,取走S块石头中的
阅读全文
摘要:链接: http://poj.org/problem?id=3134 题意: 给你一个n,让你从x出发只用乘除法,求最小的次数算出x^n,所有的使用乘方必须已知即曾经计算出来。 题解: 迭代加深搜索。n不超过1000,所以最深出现答案的层数不会太深,可以试用跌代加深搜索。即每次设定搜索层数,判断该层
阅读全文
摘要:链接: http://poj.org/problem?id=3260 题意: 你去买总价为t的东西,每种硬币你有k枚,老板有无数枚,求硬币交换数目最少的数目 题解: 你是多重背包,老板是完全背包,先预处理一下,然后计算取总和最小的就行了 代码:
阅读全文
摘要:链接: http://codeforces.com/contest/798/problem/D 题意: 给你两个长度为n的数列a和b,让你选n/2+1个下标,使得2*∑ai>suma,2*∑bi>sumb 题解1: 用一个叫random_shuffle的东西,每次都乱选,然后暴力前n/2+1个。 这
阅读全文
摘要:链接: http://poj.org/problem?id=1077 题意: 经典8数码问题,直接暴力bfs也能做,但是一定要先hash一下 题解: 这里的估价函数为当前状态下,所有的数字与其位置的之差的绝对值总和 话说我又被c++的string坑惨了 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1067 题意: 威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 题解: 威佐夫博弈(Wythoff Game):有两堆各若干个物品
阅读全文
摘要:99行代码 效果图 按键顺序参照Win10计算器: ps:除了%不知道有啥用,还有CE和C的功能写的一样之外,其他都实现了 暂时还没有发现逻辑错误
阅读全文
摘要:链接: http://poj.org/problem?id=2104 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=2104 题解: 归并树和普通的线段树的区别就是每个结点存的是一个序列,所以把int改成vector<int> 就可以了 然后就可以调用merge来pushup 用lower_bound或者lower_bound查询 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=3071 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1463 题意: 求一棵树的最小点覆盖 题解: dp[i][0]、dp[i][1]分别表示不在i结点上和在i结点上放置士兵时整个以i结点为根的子树被覆盖用到用到目标的最少数量 状态转移: 对叶子结点,有dp[i][0]=0,dp[i][1]
阅读全文
摘要:链接: http://poj.org/problem?id=2479 题意: 求两个不相交的最大字段和 题解: 对于每个i来说,找出0~i-1的最大字段和和i~n-1的最大字段和,在加起来求最大值 代码:
阅读全文
摘要:导语:在上一篇《kd 树算法之思路篇》中,我们介绍了如何用二叉树格式记录空间内的距离,并以其为依据进行高效的索引。在本篇文章中,我们将详细介绍 kd 树的构造以及 kd 树上的 kNN 算法。 阅读本文前请掌握 kNN(level-1)的知识。 kd 树的结构 kd树是一个二叉树结构,它的每一个节点
阅读全文
摘要:导语:kd 树是一种二叉树数据结构,可以用来进行高效的 kNN 计算。kd 树算法偏于复杂,本篇将先介绍以二叉树的形式来记录和索引空间的思路,以便读者更轻松地理解 kd 树。 阅读本文之前请掌握 kNN(level-1)的知识。 前言 kd 树(k-dimensional tree)是一个包含空间信
阅读全文
摘要:导语:商业哲学家 Jim Rohn 说过一句话,“你,就是你最常接触的五个人的平均。”那么,在分析一个人时,我们不妨观察和他最亲密的几个人。同理的,在判定一个未知事物时,可以观察离它最近的几个样本,这就是 kNN(k最近邻)的方法。 简介 kNN(k-Nearest Neighbours)是机器学习
阅读全文
摘要:链接: http://poj.org/problem?id=3301 题意: 给定二维平面的n个点,要求一个面积最小的正方形,使其能覆盖所有的点。 题解: 我们可以让正方形不要动,所有点进行旋转变换,这样结果是不会变的。 变形即: x1=x*cos(a)-y*sin(a); y1=x*sin(a)+
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=3068 题意: 找出一个字符串中的最长回文子串 题解: manacher裸模板 另外以后读取大量的string还是用c风格字符串吧 代码:
阅读全文
摘要:0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。 如果一个字符串正着读和反着读是一样的,那它就是回文串。下面是一些回文串的实例: 1. Brute-force 解法 对于最长回文子串问题,最简单粗暴的办法是:找到字符串的所有子串,遍历每一个子串以验证它们是否为回文串。一个子
阅读全文
摘要:链接: http://poj.org/problem?id=2503 题意: 给定一些字符串以及它在外星语言中的对应翻译,现在有若干外星语言中的串,要把它们翻译成英语 题解: 这道题map,hash,trie都是可以做的 然而我用g++提交发现map和trie都超时了,换成c++就全都过了 map用
阅读全文
摘要:链接: http://poj.org/problem?id=2752 题意: 求一个串所有的前缀等于后缀的子串长度 题解: 求一个next数组,然后递归输出就行了 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=2823 题意: 给定一个长度为n的数列,a0,a1,···,an-1和一个整数k。 求数列bi=min{ai,ai+1,···,ai+k-1}(i=0,1,···,n-k) 和数列ci=max{ai,ai+1,···,ai+k-1}(i=
阅读全文
摘要:链接: http://poj.org/problem?id=3250 题意: 一群牛排成一列,每头牛都往下看,只要他比下面的牛高,就能看到那头牛的头发 问所有的牛一共能看到多少头牛的头发 题解: 用栈模拟,只要当前牛的高度大于栈顶的牛的高度,就pop,否者push 这个时候栈里的高度是单调递减的,a
阅读全文
摘要:31 class Solution { 32 public: 33 string intToRoman(int num) { 34 char* c[4][10] = { 35 { "","I","II","III","IV","V","VI","VII","VIII","IX" }, 36 { "","X","XX","XX..
阅读全文
摘要:链接: http://poj.org/problem?id=1986 代码:
阅读全文
摘要:#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define rep(i,a,n) for (int i=a;i=a;i-...
阅读全文
摘要:链接: http://poj.org/problem?id=1236 代码:
阅读全文
摘要:题目提交地址:http://218.28.220.249:50015/JudgeOnline/problemset.php?page=3 问题 A: 饶学妹的比赛 题意: 给你一场比赛每人提交的记录,计算最后的排名 题解: 模拟+排序 代码: 问题 B: 地狱飞龙 题意: 有一头龙从(0,0)往y轴
阅读全文
摘要:什么是数值积分 数值积分可以用来求定积分的近似值。对于很多函数来说,我们是可以使用初等函数来表示出其积分的,对于这种函数,只需要求出不定积分然后代入值就能得到定积分了。 可是除此之外还有许多难求的函数和没法使用初等函数表示的函数。当我们想要求出它们的定积分的时候,需要使用数值积分来求解。 在ACM中
阅读全文
摘要:链接: http://poj.org/problem?id=3537 题意: 有个2人玩的游戏在一个规模为1*n的棋盘上进行,每次一个人选择一个地方画上’X’,一旦某个人画上X后出现了连续3个X,那么这个人就赢了。 题解: 仔细思考一下我们发现,xxx的上一步只能是oxx,xox,xxo的其中一种,
阅读全文
摘要:博弈论是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。 基础的基础 a) 当前执行者想赢。这个是必要的,有时候题目中判别胜负的条件会与平时练习的恰好相反,此时你就应该按照题目要求思考,即在经典模型中思考当前执行者想输的策略。 b) 定义P-position和N-p
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=3966 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=3713 题意: 给出一个无向图(可能不联通),判断是否每两个点之间都能至少有3条独立不同的路径可达。独立定义为任意两条路径只有起点和 终点相同,其他点均不相同。 思路: 图的三联通判断。枚举删去一个点看是否存在割点,如果存在那么说明不满足
阅读全文
摘要:链接: http://hihocoder.com/problemset/problem/1183 代码:
阅读全文
摘要:连接: http://codeforces.com/contest/797/problem/E 题意: 给你一个a数组,q次询问,每次给你个p,k 每次操作使p=p+a[p]+k,直到p大于n为止 问一共操作了多少次 题解: 先预处理k不超过325时候的答案,当k大于325的时候就暴力算 代码:
阅读全文
摘要:链接: http://uoj.ac/problem/146 题意: 给你一个有向图,求其中的所有强联通分量中点最少的(1不算) 题解: 直接求强联通分量,并在pop的时候算出个数,更新ans 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1265 题意: 给你一个多边形,求它的面积,内部格点数目,边上格点数目 题解: pick公式: 给定顶点坐标均是整数点的简单多边形,有 面积=内部格点数目+边上格点数目/2+1 边界上的格点数: 把每条边当做左开右闭的区间以避免重复,一条
阅读全文
摘要:链接: http://poj.org/problem?id=1385 题意: 给你一个多边形,求它的重心 题解: 模板题,但是不知道为啥我的结果输出的确是-0.00 -0.00 所以我又写了个 if (ans.x == 0) ans.x = 0 感觉好傻逼 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1584 题意: 按照顺时针或逆时针方向输入一个n边形的顶点坐标集,先判断这个n边形是否为凸包。 再给定一个圆形(圆心坐标和半径),判断这个圆是否完全在n变形内部。 题解: 1、判断凸包convex(): 由于点集已经按某个时针方向有序,因
阅读全文
摘要:链接: http://poj.org/userstatus?user_id=Flowersea 题意: 给你n条线段,问你有多少条线段不被后面的线段压着 题解: 数据比较水,直接n² 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=3666 题意: 给你一个序列,求使它变成非递增或者非递减所需的最少花费 把a变成b的花费为|a-b| 题解: 事先知道了测试数据都是非递减的,所以就只写了非递减的,其实求非递增在反一下算一遍取最小值就行了 dp[i][j]表示第i个数以不
阅读全文
摘要:链接: http://poj.org/problem?id=2184 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=2392 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=1930 题意: 给你一个无限循环小数,转换成分数,要求分母最小 题解: 打死我都不信这是小学的奥数题 百度百科有方法: http://baike.baidu.com/link?url=30XLCYc644bWk-VDr3g2wxxvIWG
阅读全文
摘要:链接: http://poj.org/problem?id=3040 题解: 1:大于c的就直接取; 2:如果小于就从大到小拿钱,能拿多少拿多少,但不能超过c; 3:如果2拿的钱小于c,就从小到大拿钱,能拿多少拿多少,但要求是超过c的时候是最小的,也就是说,这些钱的总和是大于c的最小数; 4:将此类
阅读全文
摘要:链接: http://poj.org/problem?id=1201 题意: 给你n个区间,每个区间为[a,b],每个区间取c个数构成一个集合,求集合最小容量 题解: 把区间按b排序,从第一个区间开始取,从后往前取,这样尽可能和后面的区间重复 另外如果我们发现当前区间取得个数已经超过了c,那么只需要
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1828 代码:
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意: 给你n个矩形,问你这个矩形覆盖的面积 题解: 就是线段树+扫描线+坐标离散化,详情在代码里面 代码:
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=3911 题意: 给出01串 1代表黑色 0代表白色 0 a b:询问[a,b]中1的连续最大长度 1 a,b:把[a,b]区间的0->1 1->0 题解: lsum1[],rsum1[],msum1[]分别
阅读全文
摘要:链接: http://poj.org/problem?id=3667 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=3468 题解: 就是普通的线段树区间更新,区间求和 代码:
阅读全文
摘要:链接: http://acm.hdu.edu.cn/showproblem.php?pid=1556 题解: 之前偷懒使用前缀和写的,最近要复习一下线段树,所以又用线段树写了一下 另外是时候修改一下自己的//head了 代码:
阅读全文
摘要:链接: http://poj.org/problem?id=3977 题意: 给你n个数,n最大35,让你从中选几个数,不能选0个,使它们和的绝对值最小 如果有一样的,取个数最小的 题解: np难题,但是因为数据小,所以可以通过折半枚举求解 先枚举前一半的所有情况 用map记录下来, 然后在枚举后一
阅读全文
摘要:Problem A: 聪明的田鼠 题解: dp[k][i]表示走了k步,且在第i行的最大值 最后的结果就是走了n+m-2步,且在第n行的值 代码: Problem B: 软件安装 题解: 线段树区间更新,区间查询 代码: Problem C: V型积木 题解: 最长上升子序列,枚举每个最为最低点,分
阅读全文
摘要:链接: http://poj.org/problem?id=3422 题解: 关键是如何处理“只能获取一次”的问题,为此可以为每个点创建伪点,由两条有向边相连。原始点到伪点连一条容量为1,权值为负分数的边;原始点到伪点连一条容量为无穷,权值为0的边。前者表示分数只能拿一次,后者表示第二次第三次……可
阅读全文
摘要:D. Weird journey 链接: http://codeforces.com/contest/789/problem/D 题意: 给你一个双向路径图(可能不连通且存在自环,同样的边不会出现两次),n个节点,m条边,要求划出一条路径,使得其中(m-2)条边每条边走两次,另外两条边每条边走一次,
阅读全文
摘要:链接: http://poj.org/problem?id=3155 题解: 要最大化下式: 可以用二分求解以下分数规划问题: 也就是最大化: 设子图为G'=(V', E')。如果边(u,v)∈E',那么必有u,v属于V'。把点权设为负值的话,问题可以转换为求最大权闭合图(POJ 2987 Firi
阅读全文
摘要:1 const int MAX_N = 1; 2 int G[MAX_N][MAX_N]; 3 int v[MAX_N]; // v[i]代表节点i合并到的顶点 4 int w[MAX_N]; // 定义w(A,x) = ∑w(v[i],x),v[i]∈A 5 bool visited[MAX_N]; // 用来标记...
阅读全文
摘要:现在有一个有向图,每个点有点权,点权可正可负。对于任意一条有向边i和j,选择了点i就必须选择点j,你需要选择一些点使得得到权值最大。 这个问题可以用网络流解决。 建图方法:对于任意点i,如果i权值为正,s向i连容量为其权值的边,否则i向t连容量为其权值的绝对值的边。原图所有边容量为正无穷。则最大权=
阅读全文

浙公网安备 33010602011771号