
POJ
文章平均质量分 73
ccDLlyy
不忘初心,方得始终
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
中国剩余定理 poj1006
poj1006 问题描述 人自出生起就有体力,情感和智力三个生理周期,分别为23,28和33天。一个周期内有一天为峰值,在这一天,人在对应的方面(体力,情感或智力)表现最好。通常这三个周期的峰值不会是同一天。现在给出三个日期,分别对应于体力,情感,智力出现峰值的日期。然后再给出一个起始日期,要求从这一天开始,算出最少再过多少天后三个峰值同时出现。 问题分析原创 2016-09-18 15:24:16 · 766 阅读 · 0 评论 -
POJ1022 四维魔方(转载他人)
Packing Unit 4D Cubes Description We usually think that there are three geometric dimensions; the fourth dimension is usually time. However, the Association for Customizing Machine转载 2016-10-29 23:08:10 · 1594 阅读 · 0 评论 -
POJ 3278
给出a和b点的横坐标,求到a,b的最小行动次数,其中每次行动只能是下面两种情况之一: 一,向左或向右移动一步,即横坐标加1或者减1 二,横坐标变成原来的两倍 //比较经典的一道广搜 //走到的每一点,搜索它所能到达的点(点的范围是0到100000) #include #include #include #define MAX 200010 struct node{ int原创 2016-10-24 19:21:44 · 370 阅读 · 0 评论 -
POJ 1562
这个题就是说以@代表油田,它周边8个方向若有@则表示同一个油田。给你一个图,问你图中有多少个油田。 //此题求独立子图的个数 #include #include #include struct node{ int x; int y; }; struct node queue[10005]; int head; int tail; int book[101][101];原创 2016-10-24 19:14:48 · 464 阅读 · 0 评论 -
POJ 3254 Corn Fields(状压DP)
题目链接:点击打开链接 题意:给出一个n行m列的草地,1表示肥沃,0表示贫瘠,现在要把一些牛放在肥沃的草地上,但是要求所有牛不能相邻,问你有多少种放法。 对于0-1状态矩阵,自然而然会想到用状态压缩来做,把一行的状态压缩成一个十进制数。 根据题目所说不能挨着种植,即这一行的某个位置种植了,下一行的同一位置就不能种植,可以知道两行的种植状态相位与要为0。 另外一行中相邻的格子是不能同时种植的原创 2017-08-03 13:29:45 · 366 阅读 · 0 评论 -
POJ 1185 炮兵阵地(状压DP)
题目链接:点击打开链接 思路: 很容易想到把地图转化为0 1矩阵,从而对每行再用到状态压缩,山用1表示,空地用0表示,即把地图也用状态压缩的方式存起来,便于以后处理。 开始先根据一行中每个炮的影响范围为左右各两个距离,枚举出对于行来说,满足要求的排放状态。 然后枚举每行的状态时,先判断此状态和原始地图的二进制表示冲不冲突,因为用1代表的H(山地),加上只能空地放炮,所以把状态和本行二进原创 2017-08-03 22:56:36 · 368 阅读 · 0 评论 -
POJ 2955 Brackets(区间DP)
题目链接:点击打开链接 题意:最大括号匹配,区间DP经典入门题目 dp[i][j]表示从i到j的最大匹配数,遍历i,j的合法组合,若s[i] == s[j],先令dp[i][j] = dp[i + 1][j - 1],再去枚举i,j之间的位置t,利用dp[i][j] = max(dp[i][j], dp[i][t] + dp[t + 1][j])更新dp[i][j]。 // POJ 2955原创 2017-08-04 20:08:56 · 367 阅读 · 0 评论 -
POJ 3279 Fliptile(普通搜索)
题目链接:点击打开链接 题意: 给出m行、n列的棋盘,每一个格子只有两种状态0或1,每次可以选择一个格子执行翻转操作,并且与该格子相邻的4个格子都会被翻转,求将所有格子都翻转成0所需要的最小操作数,若有多种翻转方法,输出字典序最小的方案。思路:看到题目首先想到的为搜索,这题和之前做的求棋盘翻转到目标状态需要的最小次数的题很类似,可是这题让给出具体的翻转序列,这样就不能根据广搜只考虑状态变化了,原创 2017-08-04 23:52:37 · 383 阅读 · 0 评论 -
POJ 1579 Function Run Fun(记忆化搜索)
题目链接:点击打开链接 题意很简单,记忆化搜索的水题...... // POJ 1579 Function Run Fun.cpp #include #include #include #include using namespace std; int dp[25][25][25]; int dfs(int a, int b, int c) { if (a <= 0 || b <=原创 2017-08-05 11:34:07 · 372 阅读 · 0 评论 -
POJ 3264 Balanced Lineup(ST表)
题目链接:点击打开链接 裸的ST表,水题 // POJ 3264 Balanced Lineup.cpp 运行/限制:3375ms/5000ms #include #include #include #include using namespace std; int n; int a[50005], minValue[50005][20], maxValue[50005][20], u原创 2017-08-22 21:29:19 · 390 阅读 · 0 评论 -
POJ 2823 Sliding Window(单调队列)
题目链接: 思路:单调队列入门题目原创 2017-09-16 13:54:32 · 467 阅读 · 0 评论 -
POJ 3311 Hie with the Pie(状压DP)
题目链接:点击打开链接 题意:从起点出发访问所有的点最后回到出发点,每个点可以多次经过,问最小时间花费。 思路:由于每个点可以多次经过,所以可以考虑先用floyd算法求出最短路,然后进行状压DP,当前访问过的点压缩成二进制状态,每个位代表一个点,1表示访问过,0表示未访问过,dp[state][v],表示在state状态下,且最后一个访问到的点为v时的最小时间花费。由于起点编号为0,其他点从1原创 2017-08-30 21:20:47 · 454 阅读 · 0 评论 -
POJ 1160 Post Office(经典DP)
题目链接:点击打开链接 题意:一条高速公路,有N个村庄,每个村庄均有一个唯一的坐标,选择P个村庄建邮局,问怎么选择,才能使每个村庄到其最近邮局的距离和最小?最后打印这个最小值。 思路:典型的DP问题。 当我们在v个村庄中只建一个邮局,可以推导出,只有邮局位于中间位置,距离和才最小;有一个特殊情况是,当村庄数为偶数,中间位置有两个村庄,经过计算,两个村庄的距离和相等,所以俩位置均可。 可以联原创 2017-09-25 17:55:10 · 3119 阅读 · 1 评论 -
POJ 2559 Largest Rectangle in a Histogram(单调栈)
题目链接:点击打开链接 题意:从左到右排列有多个矩形,这些矩形的宽度都为1,长度不等。选择连续的一至多个矩形,使得到的面积最大,但不能超出原有矩形的范围。 思路:单调栈入门题目,维护一个由栈顶到栈底单调递减(指矩阵高度)的矩阵序列。新矩阵入栈时,若高度大于栈顶矩阵的高度,直接入栈;否则,先更新栈内矩阵,再入栈,具体更新过程为:先取栈顶元素,然后每次从栈顶取一个矩阵,与之前的矩阵进行合并,更新合原创 2017-09-19 09:37:53 · 546 阅读 · 0 评论 -
POJ 3252 Round Numbers(数位DP)
题目链接:点击打开链接 题意:求一个区间内满足化为二进制后0多于1的数的数量。 思路:很明显的数位DP,dp[pos][num]表示当前数位及以后,0减去1的数量为num的方案数。需要注意的是0的数量可能小于1的数量,所以会出现负数,因此要对数进行哈希,int为32位,那么num的取值为[-32,32],可以把0映射为32,即[-32,32]映射到[0,64]。这题还要注意前导0,前导0是不能原创 2017-09-02 17:22:50 · 383 阅读 · 0 评论 -
Poj3126 prime
Description The ministers of the cabinet were quite upset by the message from the Chief of Security stating that they would all have to change the four-digit room numbers on their offices. — It is原创 2016-11-05 19:22:30 · 430 阅读 · 0 评论 -
POJ 1753(用到了状态压缩)
#include #include #include #include using namespace std; int step; int bfs(int start){ queue Queue; int book[65536],last=start; memset(book,0,sizeof(book)); Queue.push(start); book[start]=1;原创 2017-02-18 21:37:54 · 545 阅读 · 0 评论 -
POJ 1321
Description 在一个给定形状的棋盘(形状可能是不规则的)上面摆放棋子,棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列,请编程求解对于给定形状和大小的棋盘,摆放k个棋子的所有可行的摆放方案C。 Input 输入含有多组测试数据。 每组数据的第一行是两个正整数,n k,用一个空格隔开,表示了将在一个n*n的矩阵内描述棋盘,以及摆放棋子的数目。 n 当为-原创 2016-10-07 22:38:46 · 499 阅读 · 0 评论 -
POJ 3070 (矩阵快速幂,矩阵快速幂求斐波那契)
HOMEPROBLEMSTATUSCONTESTAdd ContestStatisticRANKLOGOUTccDLlyyUPDATEHappyDumplings S00677:00:00OverviewProblemStatusRankDiscussA B C D E F G H I J KH - 矩阵快速幂Time Limit:1000MS Memory Limit:65536KB原创 2016-11-12 16:24:00 · 693 阅读 · 0 评论 -
POJ1852_Ants(考察想象力)
题目链接:点击打开链接 此题考察想象力...... 一个简单的想法是:利用暴搜,枚举每只蚂蚁的起始方向,不过这种方法麻烦 开动脑筋,去想两只蚂蚁相遇时做了什么,即各自反向。这等价为原来蚂蚁仍然在原来方向走,直到走到尽头。那么最长时间等价为去求蚂蚁到竿子端点的最长距离,最短时间也类似 #include #include #include using namespace std; int原创 2017-01-30 17:55:07 · 529 阅读 · 0 评论 -
POJ(2387) Til the Cows Come Home
Bessie is out in the field and wants to get back to the barn to get as much sleep as possible before Farmer John wakes her for the morning milking. Bessie needs her beauty sleep, so she wants to get b原创 2017-03-19 15:23:17 · 520 阅读 · 0 评论 -
Poj 2253 Frogger(最小生成树的最大边)
Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of tourists' sun原创 2017-03-28 13:58:39 · 675 阅读 · 0 评论 -
POJ 1321 棋盘问题
#include #include #include using namespace std; int n,k,map[10][10]; int count,book[10]; void dfs(int step,int cnt){ if(step==n+1){ if(cnt==k){ count++; } return; } if(cnt>k){ return;原创 2017-03-22 20:03:08 · 470 阅读 · 0 评论 -
POJ_2251 Dungeon Master
You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is composed of unit cubes which may or may not be filled with rock. It takes one minute to move one unit north, south原创 2017-03-22 20:07:40 · 433 阅读 · 0 评论 -
POJ 2676
/* 九宫格问题,也有人叫数独问题 把一个9行9列的网格,再细分为9个3*3的子网格, 要求每行、每列、每个子网格内都只能使用一次1~9中的一个数字, 即每行、每列、每个子网格内都不允许出现相同的数字。 0是待填位置,其他均为已填入的数字。 要求填完九宫格并输出(如果有多种结果,则只需输出其中一种) */ #include #include #include int map[10][10]原创 2016-10-24 19:42:04 · 354 阅读 · 0 评论 -
POJ 1426
给出一个整数n,(1 //题目说100位,实际上unsigned __int64即可 #include #include int flag; void dfs(unsigned __int64 sum,int n,int location)//n为原数,sum为当前加到的数,location为当前位数 { if(flag)//已找到sum return;原创 2016-10-24 19:18:26 · 361 阅读 · 0 评论 -
Poj 2236 Wireless NetWork(并查集)
An earthquake takes place in Southeast Asia. The ACM (Asia Cooperated Medical team) have set up a wireless network with the lap computers, but an unexpected aftershock attacked, all computers in the n原创 2017-03-27 19:51:54 · 606 阅读 · 0 评论 -
POJ 1611 The Suspects(并查集)
题目链接:点击打开链接 简单的并查集,水题 // POJ 1611 The Suspects.cpp #include #include #include #include using namespace std; class DisjointSet { private: int n; vector fa, rank; public: DisjointSet(int n) :n(原创 2017-07-15 15:45:56 · 436 阅读 · 0 评论 -
POJ 2001 Shortest Prefixes(字典树)
题目链接:点击打开链接 题目大意很简单,就是给出一组字符串,给出能唯一确定每个字符串的前缀。首先进行插入操作建树,然后对每个字符串,再去查询,查询的过程中,遇到出现一次的前缀即为所求 // POJ 2001 Shortest Prefixes.cpp #include #include #include #include #include using namespace std; s原创 2017-07-15 18:07:17 · 348 阅读 · 0 评论 -
POJ 2362 Square(搜索+剪枝)
题目链接:点击打开链接 题意:给定一些木棍,是否能拼成正方形(木棍不能折断)? 思路:搜索,由题意,木棍要分别能组成四个边,不多不少。 读取完数据,所有木棍的长度和要能整除4,而且最长的木棍不能超过边的长度,先做这俩处理再搜索,能节省时间。 搜索时,顺序搜索每一条的组成情况,需要注意的是,为了不重复搜索,当前边选择木棍时,下一个处理的木棍的下标要比当前的大,而不能从最小的下标再开始选择,即原创 2017-08-07 21:33:46 · 726 阅读 · 0 评论 -
POJ 3342 Party at Hali-Bula(树形DP)
题目链接:点击打开链接 题意:给定一个树,选择若干节点,使得选择的结点中任一结点不会和它的子结点同时被选择,求能选节点的最大数量,并且统计选择方案是否唯一。之前做过这个题,只不过没加入唯一性判断。 唯一性判断的方法也基于动态规划思想,开个二维数组,flag[v][2],用于标记选择或者不选择当前节点时,最大数量方法的唯一性,唯一性由后继节点决定。 对于flag[fa][1],由于dp[fa]原创 2017-08-03 00:13:03 · 384 阅读 · 0 评论 -
POJ 3187 Backward Digit Sums(next_permutation()+ 组合数)
题目链接:点击打开链接 思路:超级大水题。暴力的方法是,每次生成的排列,模拟出最后的和。稍微加些思维可以想到,当把第一行n个数加的次数求出来(得到最后的和是自顶向下,求次数的过程可以采用逆向思维,自底向上),会发现对应杨辉三角的第n行(从1计数),所以先打表预处理,然后枚举所有的排列,直接用这个表计算结果。 #include #include #include #include usi原创 2017-10-27 15:20:38 · 352 阅读 · 0 评论