POJ - 题解sol[暂停更新]
初期:
一.基本算法:
(1)枚举. (poj1753,poj2965)
poj1753 话说我用高斯消元过了这题。。。
poj2965 巧了,用高斯消元01矩阵更快(l o l)。
(2)贪心(poj1328,poj2109,poj2586)(completed)
poj1328 题目可以转化为将以每个岛屿为圆心,半径为d的原与x轴的交点构成的共n个区间,分成尽可能少的块,每个块中的区间有个交集(公共区间至少为一个点)。那这就是经典的贪心了。
poj2109 这似乎用二分+高精就过了好吧。。。
poj2586 先讲讲题意:对于每一个月来说,是盈利如果则盈利s,如果亏空则亏d。 每五个月进行一次统计,共统计八次(1-5月一次,2-6月一次.......) 统计的结果是这八次都亏空。要你判断全年是否能盈利,如果能则求出最大盈利,否则输出Deficit。一个贪心的想法,要使总盈利最大,就要使每五个月都亏损的越少,就让这些亏损的月份在越后面越好。
(3)递归和分治法.
(4)递推.
(5)构造法.(poj3295)(completed)
poj2586 题意就是给你一个逻辑表达式,有10种字母,pqrstKANCE,其中pqrst的值为1(T)或0(F)即逻辑变量,KANCE为逻辑运算符,分别有一个运算规则.现在给你一个这样的逻辑表达式,判断是否为永真式(就是在任一情况下值都为真),输入格式保证是合法的。由于只有5种变量,那么可以2^5枚举一下,然后用栈将这个式子的值计算出来。如果发现只要有一种值为0,那就不是永真式。
(6)模拟法.(poj1068,poj2632,poj1573,poj2993,poj2996)(completed)
poj1068 题意就是给你一个合法的括号序列的一种表示方式,让你求出另一种。按照题目意思去模拟就行了,完全可以先求出标准的括号序列,然后在求出第二种表达方式。
poj2632 题目本身并不难,模拟的过程也很清晰,但是由于这个!@¥%#@恶心读入【qwq】,我也是WA+RE了n次了呀。。。
poj1573 直接根据题目模拟,用vis数组记录上一次走到这里是什么时候。题目不难,只是某些细节要注意一下。
poj2993 就是将几个棋子投射到棋盘上,输出整个8*8的棋盘。但是juruo一直没有看懂大小写怎么办,后面才知道white->大写,black->小写。
poj2996 这是2993的翻版,只是input和output换一下。主要恶心的地方就是输出顺序,要非常细心。
二.图算法:
(1)图的深度优先遍历和广度优先遍历.
(2)最短路径算法(dijkstra,bellman-ford,floyd,heap+dijkstra)
(poj1860,poj3259,poj1062,poj2253,poj1125,poj2240)(completed)
poj1860 就是给你不同货币之间兑换的汇率和损失率,然后你原来有一些量的某种货币,问你能否通过一系列操作使钱变多(当然是同种货币相比)。这一题的本质就是求求正权回路,直接跑spfa就好了。
poj3259 就是给你一些正常的双向边与一些单向虫洞,权值相当于-wi,问你是否存在负权回路。同样,刷spfa就好了。
poj1062 问题可以转化为给你几个点,开始每个点都有一个点权,点权可以被修改(即从另一个点+从那一个点到这个点的边的边权(当然边要存在))。同时,参与这整个过程的所有点的等级差最大不超过m,求点1的最小点权。那么,我们枚举一个等级下界,就确定了等级限制的范围,那些不符合限制的点就被排除在外了。剩下就是一个裸的最短路了。
poj2253 其实DFS+二分就可以水过,因为格式问题WA了好几次。同样可以用MST做。
poj1125 刷一遍floyd就过了,并不想说什么。
poj2240 好不容易搞到1A。转化题意后就是找出一个环,权值的乘积大于1。那么用spfa跑一跑就行了。注意字符串的处理。
(3)最小生成树算法(prim,kruskal)
(poj1789,poj2485,poj1258,poj3026)(completed)
poj1789 MST模板题,不解释(当然是用prim刷啦)。
poj2485 求MST中的最大边,水题不解释。
poj1258 发现题目一个比一个水,不知道该说什么。。。
poj3026 终于有个能卡一下的题目了。还是一样,不用区分‘S’和‘A’(因为这并不是最短路而是MST),所以,我们直接将S看成A,然后算出每两个A之间的最短距离,然后跑一遍prim。
(4)拓扑排序 (poj1094)(completed)
poj1094 这题我也不知道怎么回事,就1A了。题目就是给出几个大小关系,让你输出,什么时候开始出现矛盾或可以判断所有数关系,或者到最后还不能判断关系。判断矛盾我就直接用spfa判负环(建图我直接建负边),判断是否能判断关系,那就是topo排序了。主要的还是细节,细节!
(5)二分图的最大匹配 (匈牙利算法) (poj3041,poj3020)(completed)
poj3041 我们可以这样子看问题:将武器看做一个点,行星看做一条边。那么,我们要求的就是最小点覆盖(点覆盖是一个点集,能覆盖所有边),相当于求出最大匹配数。
poj3020 很恼火,一直WA,后面重构才A掉。这一题我们把 一个城市看做一个点,一个无线网看做一条边,那么这题我们要求的就是最小边覆盖(边覆盖是一个边集,能覆盖所有点)。由于这是无向图,所以最小边覆盖数=总点数(单边点数)-最大匹配数/2(无向图最大匹配会被双倍计算)。
(6)最大流的增广路算法(KM算法). (poj1459,poj3436)
poj1459 多源多汇点的最大流应当先建立一个超级源与超级汇,然后,蒟蒻的我跑了跑Dinic,还算可以吧。。。
三.数据结构.
(1)串 (poj1035,poj3080,poj1936)
(2)排序(快排、归并排(与逆序数有关)、堆排) (poj2388,poj2299)
(3)简单并查集的应用.
(4)哈希表和二分查找等高效查找法(数的Hash,串的Hash)
(poj3349,poj3274,POJ2151,poj1840,poj2002,poj2503)
(5)哈夫曼树(poj3253)
(6)堆
(7)trie树(静态建树、动态建树) (poj2513)
poj2513 将一种颜色看成一个点,最后我们,如果能形成一个欧拉路径,就是possible。读入当前的木棒,两端颜色为u,v。记录每种颜色上次出现的位置编号u0,v0,相当于我们可以从u0->u->v->v0,相当于间接连通了u0和v0,这相当于并查集的作用。然后,我们记录最终了形成几个块(有可能只是一条链)。我们必须只有1个块。又由于每个块是一个欧拉路径(一笔画问题),所以统计一下每种颜色出现次数的奇偶性即可。
四.简单搜索
(1)深度优先搜索 (poj2488,poj3083,poj3009,poj1321,poj2251)
(2)广度优先搜索(poj3278,poj1426,poj3126,poj3087.poj3414)
(3)简单搜索技巧和剪枝(poj2531,poj1416,poj2676,1129)
五.动态规划
(1)背包问题. (poj1837,poj1276)(complete)
poj1837 典型的DP。f[i][j]表示前i个挂钩,绝对重量为j的方案数,方程:f[i][j]+=f[i-1][j-l[i]*w[k]]。作为C党,负数是不存在的,所以要重新取一个基准点(用0的话下标会变负),由于绝对重量范围是-20*15*25~20*15*25,即-7500~7500,所以我们取7500作为基准点,下标范围就变成了0~15000。
poj1276 多重背包二进制优化,也挺好写。
(2)型如下表的简单DP(可参考lrj的书 page149)(completed)
1.E[j]=opt{D+w(i,j)} (poj3267,poj1836,poj1260,poj2533)(completed)
poj3267 想了一下(DP弱啊),个人认为这样来做简单点:首先假定字符串以1标号,设f[i]为前i个字符中,最少删掉f[i]个能符合要求。f[i]=min(f[i-1]+1,min(f[i-fir[j][i]+1]+calc(j,i))),其中,fir[u][v]表示第u个单词的最后一位与原串的第v位相同时,原串的fir[u][v]~v位顺序包含了第u个单词,当然也有不存在的情况。calc就表示fir[u][v]~v中,不是第u个单词里面的字符数,最后输出f[len]就好了。
poj1836 简单题,两遍lis。
poj1260 依然很水,f[i]=min(f[i],f[j]+(s[i]-s[j]+10)*p[i]))(s数组是前缀和)。
poj2533 模板题,水。
2.E[i,j]=opt{D[i-1,j]+xi,D[i,j-1]+yj,D[i-1][j-1]+zij} (最长公共子序列)
(poj3176,poj1080,poj1159)(completed)
poj3176 数塔水。
poj1080 LCS变形题,水。
poj1159 LCS+滚动数组。
3.C[i,j]=w[i,j]+opt{C[i,k-1]+C[k,j]}.(最优二分检索树问题)
六.数学
(1)组合数学:
1.加法原理和乘法原理.
2.排列组合.
3.递推关系.
(POJ3252,poj1850,poj1019,poj1942)
(2)数论.
1.素数与整除问题
2.进制位.
3.同余模运算.
(poj2635, poj3292,poj1845,poj2115)(complete)
poj2635 就是先把1e6以内质数先搞出来,然后用秦九韶高精模一下,还要压位,不然要TLE。。。
poj3292 xjb乱搞就是了,类似的方法。
poj1845 和之前一道题目差不多,水过。。。具体就是分解质因数,然后用等比数列+逆元。
poj2115 扩展欧几里得第一A。。。不多说,见写的题解。
(3)计算方法.
1.二分法求解单调函数相关知识.(poj3273,poj3258,poj1905,poj3122)
poj3273 二分裸题。
poj3258 也是二分裸题,只是要注意,坐标为0和len的石头不可搬动。
七.计算几何学.
(1)几何公式.
(2)叉积和点积的运用(如线段相交的判定,点到线段的距离等). (poj2031,poj1039)
(3)多边型的简单算法(求面积)和相关判定(点在多边型内,多边型是否相交)
(poj1408,poj1584)
(4)凸包. (poj2187,poj1113)
中级:
一.基本算法:
(1)C++的标准模版库的应用. (poj3096,poj3007)
(2)较为复杂的模拟题的训练(poj3393,poj1472,poj3371,poj1027,poj2706)
二.图算法:
(1)差分约束系统的建立和求解. (poj1201,poj2983)(completed)
poj1201 查分基础题,可以建立这么几个不等式:对于每个区间:Sy-Sx-1>=z,即Sy>=Sx-1+z。对于每个i和i+1间,也要建两条边。由于Si+1>=Si,Si+1-Si>=0,所以要一条从i到i+1边权为0的边。又由于Si+1-Si<=1,Si-Si+1>=-1,所以要一条从i+1到i边权为-1的边。然后跑一遍spfa就好了。
poj2983 查分题,需要绕一点弯,如果是类型P x y z,即fx=fy+z,那么,我们可以建立两个不等式:fx>=fy+z,fy>=fx-z,这是等效的。对于V x y,即fx>=fy+1,我们只需建这么一条边就行了。由于图不一定连通,所以我们要建立一个超级源,然后与每个点再建一条边权为0的边。由于判断差分约束不等式无解的标志是出现正权或负权回路,所以我们以超级源为源点刷一遍spfa就行了。
(2)最小费用最大流(poj2516,poj2516,poj2195)
poj2195 这道题本蒟蒻其实是用KM来A掉的,因为更容易看出来(换句话说,建模不熟练→_→)。那么,跑费用流的话,就相当于多源多汇点的题目了,每队源点汇点之间的边容量都为1,费用就是曼哈顿距离。
(3)双连通分量(poj2942)
(4)强连通分支及其缩点.(poj2186)
(5)图的割边和割点(poj3352)
(6)最小割模型、网络流规约(poj3308, )
三.数据结构.
(1)线段树. (poj2528,poj2828,poj2777,poj2886,poj2750)
(2)静态二叉检索树. (poj2482,poj2352)
(3)树状树组(poj1195,poj3321)
poj1195 二维树状数组模板题+容斥。
poj3321 题目还不错。。就是将原来的树形结构转为线性结构,然后要有包含的关系。那么,这可以用欧拉序列(DFS序)来实现,不过稍微有些相异。每个树上的节点都有一个开始访问时间和结束访问的时间。开始访问时间就是这个节点的访问时间,而结束访问时间是以这个节点为根的子树访问结束时间。然后映射到序列上,用树状数组维护就好了。
(4)RMQ. (poj3264,poj3368)
poj3264 模板题,不解释。。。
poj3368 稍微复杂一点,却1A了。。。就是如何转换为RMQ问题。先将原来的离散,如何用cnt[i]表示数i出现多少次,然后做个RMQ。这能干什么呢?比如询问L,R的时候,会出现一段被切开的数,然后几段完整的数,然后又出现一段被切开的数,然后中间那部分,我们就可以O1知道出现最多的数出现了几次(很好的利用了原数列单调的性质)。
(5)并查集的高级应用. (poj1703,2492)
(6)KMP算法. (poj1961,poj2406)
四.搜索
(1)最优化剪枝和可行性剪枝
(2)搜索的技巧和优化 (poj3411,poj1724)
(3)记忆化搜索(poj3373,poj1691)
五.动态规划
(1)较为复杂的动态规划(如动态规划解特别的施行商问题等)
(poj1191,poj1054,poj3280,poj2029,poj2948,poj1925,poj3034)
(2)记录状态的动态规划. (POJ3254,poj2411,poj1185)
(3)树型动态规划(poj2057,poj1947,poj2486,poj3140)
六.数学
(1)组合数学:
1.容斥原理.
2.抽屉原理.
3.置换群与Polya定理(poj1286,poj2409,poj3270,poj1026).
4.递推关系和母函数.
(2)数学.
1.高斯消元法(poj2947,poj1487, poj2065,poj1166,poj1222)
poj1222 高斯消元模板题(01矩阵),会具体的写在单独的题解里面。
poj2947 高斯消元的经典问题,也会写在专门的题解里面。
poj2065 同余式+高斯消元,找到了手感,很快就1A了。
poj1487 复杂的操作。。。会写在专门的题解里面。
2.概率问题. (poj3071,poj3440)
3.GCD、扩展的欧几里德(中国剩余定理) (poj3101)
(3)计算方法.
1.0/1分数规划. (poj2976)
2.三分法求解单峰(单谷)的极值.
3.矩阵法(poj3150,poj3422,poj3070)
4.迭代逼近(poj3301)
(4)随机化算法(poj3318,poj2454)
(5)杂题.
(poj1870,poj3296,poj3286,poj1095)
七.计算几何学.
(1)坐标离散化.
(2)扫描线算法(例如求矩形的面积和周长并,常和线段树或堆一起使用).
(poj1765,poj1177,poj1151,poj3277,poj2280,poj3004)
(3)多边形的内核(半平面交)(poj3130,poj3335)
(4)几何工具的综合应用.(poj1819,poj1066,poj2043,poj3227,poj2165,poj3429)
POJ - 题解sol[暂停更新]的更多相关文章
- Attention:本博客暂停更新
Attention:本博客暂停更新 2016年11月17日08:33:09 博主遗产 http://www.cnblogs.com/radiumlrb/p/6033107.html Dans cett ...
- IT男的”幸福”生活"系列暂停更新通知
首先谢谢博客园,这里给了我很多快乐.更给了大家一个学习的好地方. 在这几天更新过程中,看到了很多哥们的关注,在这里我谢谢你们,是你们给了我动力,是你们又一次给了我不一样的幸福. 在续5中我已回复了,博 ...
- 通知:即日起本博客暂停更新,请移步至yanxin8.com获取最新文章
通知:即日起本博客暂停更新,请移步至yanxin8.com与博主交流及获取最新文章
- 暂停更新Blog
今天非常不好意思的是老魏又要一次的暂停文章跟新了,原因是有些有问题老魏需要从新的梳理,加上这几天工作又开始忙碌起来了,所以这一阵子估计很难有有时间更新了. 不过老魏会抽一下时间更新文章的,不可能像2月 ...
- C - A Simple Problem with Integers - poj 3468(区间更新)
题意:有一个比较长的区间可能是100000.长度, 每个点都有一个值(值还比较大),现在有一些操作,C abc, 把区间a-b内全部加上c, Qab,求区间ab的值. 分析:很明显我们不可能对区间的每 ...
- django——面试题(已工作,暂停更新)
谈谈你对HTTP协议的认识. 什么是协议? 协议,是指通信的双方,在通信流程或内容格式上,共同遵守的标准. 什么是http协议? http协议,是互联网中最常见的网络通信标准. http协议的特点 ① ...
- 12,13,14节-51单片机ESP8266学习-AT指令(暂停更新)需要整理
从这一节开始,以视频加源码的形式,后期视频和程序将放在链接中 资料链接 链接: https://pan.baidu.com/s/1jpHZjW_7pQKNfN9G4B6ZjA 密码:nhn3 ...
- POJ题解Sorting It All Out-传递丢包+倍增
题目链接: http://poj.org/problem?id=1094 题目大意(直接从谷歌翻译上复制下来的): 描述 不同值的递增排序顺序是其中使用某种形式的小于运算符来将元素从最小到最大排序的顺 ...
- leetcode题解(持续更新)
leetcode题解 1.两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
随机推荐
- 增强 用文本增强修改SAP标准屏幕中的字段名称 属于元素的文本增强
如果想要改变标准屏幕中的字段名称,如把物料主数据基本数据元素的名字改为我们想要的名字 . 1.首先,事务MM03进入物料主数据的基本数据2视图中,将鼠标光标放在需要更改的字段“页格式”上,然后按F1键 ...
- HDU 3526 Computer Assembling(最小割)
http://acm.hdu.edu.cn/showproblem.php?pid=3526 题意:有个屌丝要配置电脑,现在有n个配件需要购买,有两家公司出售这n个配件,还有m个条件是如果配件x和配件 ...
- Idea中配置Tomcat
配置步骤 在idea项目左上角选择‘Edit Configurations’ 2. 配置server 3. 配置项目 4. 配置成功后就可以在项目下面看到tomcat了 运行Tomcat遇到权限问题: ...
- WaitingFormHelper
using Lba_Ciac; using System; using System.Collections.Generic; using System.Linq; using System.Text ...
- SHU oj 422 风力观测 线段树
风力观测 发布时间: 2017年7月9日 18:17 最后更新: 2017年7月9日 21:04 时间限制: 1000ms 内存限制: 128M 描述 小Y正在观测y地区的风力情况,他在一 ...
- P1031 均分纸牌
题目描述 有N堆纸牌,编号分别为 1,2,…,N1,2,…,N.每堆上有若干张,但纸牌总数必为N的倍数.可以在任一堆上取若干张纸牌,然后移动. 移牌规则为:在编号为1堆上取的纸牌,只能移到编号为2的堆 ...
- C#_方法的重载
方法的重载是一种操作性多态,有的时候,可能需要在多个不同的实现中对不同的数据执行相同的逻辑操作,以writeline方法为例,有时可能想他传递一个整数.两者的具体实现肯定是不同的,但在逻辑上,这个方法 ...
- Cordova插件:InAppBrowser
版权声明:本文为博主原创文章,转载请注明出处 一.应用场景 我们在做cordova app开发的时候,可能会经常遇到这种需求.比如在你的app中,你想打开一个URL,但是又不想跳转到系统的浏览器去打开 ...
- ImageConverter引起的 invalid address or address of corrupt block 0xb7feab58 passed to dlfree
虹软人脸识别,其方法要传NV21格式的byte[], github上有一个虹软的Demo,是不是虹软工作人员写的不清楚,这个Demo里bitmap转NV21格式byte[]用的是一个第三方库https ...
- QT信号槽详解
1 QT信号槽详解 1.1 信号和槽的定义 信号是触发信号,例如按钮的点击触发一个clicked信号,槽是用来接收信号,并处理信号,相当于信号响应函数.一个信号可以关联多个槽函数,信 ...