OJ
DTree123
努力会让你更快乐
欢迎访问我的个人网站http://www.dtree.club
展开
-
吝啬的国度--深度优先搜索
题目大意: Tom要去一个城市,求出他要去的这个城市的前一个城市是几号城市。我的理解:可以把此题抽象为图。此处有一点需要注意:共有n座城市,且城市之间有n-1条路,可知图中没有环。 且此题应该用深度优先搜索去实现。代码:#include#include#include#include#includeusing namespace std;int f[10010原创 2017-06-15 22:29:48 · 262 阅读 · 0 评论 -
NYOJ207 POJ1182 食物链(并查集)
我的理解:并查集解决。我的代码:#include #include #define MAX_N 50005#define MAX_K 100005using namespace std;int N,K;int T[MAX_K],X[MAX_K],Y[MAX_K];int par[MAX_N],rank[MAX_N];void init(int n){ for(原创 2017-07-21 20:07:16 · 293 阅读 · 0 评论 -
POJ2431 优先队列+贪心
题目大意:见《挑战程序设计竞赛》P74。我的理解:优先队列+贪心注意把输入的距离(加油站到终点)改为起点到加油站。在到达加油站 i 时,就获得了一次在之后的任何时候都可以在加 stop[i].second 单位汽油的权利。我的代码:#include #include #include #include #define MAX_N 10010using n原创 2017-08-01 12:49:20 · 376 阅读 · 0 评论 -
NYOJ35
题目大意:传送门:点我传送我的理解:逆波兰表达式求解本题;我的代码:#include #include #include using namespace std;//判断运算符优先级 int judge(char ch){ switch(ch){ case '+': case '-': return 1;原创 2017-08-09 12:55:09 · 357 阅读 · 0 评论 -
POJ 3614
题目大意:共有C头牛,为了使其更好的工作,需要给它涂上防晒霜。牛所能承受的阳光强度各不相同,处于一个区间。而防晒霜是能固定一个温度,如果这个温度处于牛的承受区间内,则适合此牛使用,否则不适合。其中,防晒霜共有L中,每种有 i 瓶。我的理解:此处我借鉴了此人 的思想;贪心+优先队列;我的代码:#include #include #include #inclu原创 2017-07-27 09:40:31 · 376 阅读 · 0 评论 -
NYOJ236 贪心算法
题目大意:传送门我的理解:首先进行对木棒数组进行排序,从小到大,长度更小的排在前面,长度相同的质量更小的排在前面。采用贪心算法。具体在代码注释;我的代码:#include #include #include #include #define MAX_N 5005using namespace std;typedef pair P;P wood[MAX_原创 2017-07-27 20:44:21 · 350 阅读 · 0 评论 -
NYOJ116 士兵杀敌
题目大意:传送门:点我传送我的理解:使用树状数组求解;我的代码:#include#include#include#define MAX_N 1000005using namespace std;int a[MAX_N];int n;int lowbit(int x){ return x&(-x);}void begin(){ in原创 2017-08-05 20:11:58 · 245 阅读 · 0 评论 -
POJ 2240 Floyd的变式
题目大意: 传送门:点我传送我的理解: 利用Floyd-Warshall算法。注意在使用时要注意DP部分,不是简单的加法而应该是乘法!之所以会是这样,原因是汇率之间都是相乘的,根据题意而来。 此外,这里还用到了map,是为了使每种货币对应着一个数字编号,是为了在处理时更加方便。 还有一点,要记得每种货币对自己的汇率都初始化为1,如果最后其值大于1,则说明可以从中获取利润。原创 2017-09-06 22:53:39 · 314 阅读 · 0 评论 -
有关素数的基础算法--总结
本文总结自《挑战程序设计竞赛》关于素数的算法有许多,其中在程序设计竞赛中常用到的是艾氏筛法,简单的素数测试和整数分解这类算法。1. 素数测试 所谓素数,是指恰好有2个约数的整数。因为n的约数都不超过n,所以只要检查 2~n-1的所有整数是否整除n就能判定n是不是素数。因此,如果d是n的约数,那么n/d也是n的约数,由n=d*n/d可知min(d,n/d)√n,所以只要检查2~√n的所有原创 2017-08-30 20:16:47 · 816 阅读 · 0 评论 -
POJ-1723 中位数
题目大意:让一些分散的士兵站成一横排,问所需的最少步数。我的理解:这道题主要考察对中位数的理解,这也是第一次接触到这中类型的题,不太理解,借鉴了别人的思路。传送门:点我传送我的代码:#include#include#include#define MAX_N 10005using namespace std;int x[MAX_N],y[MAX_N];int原创 2017-07-20 19:08:21 · 380 阅读 · 0 评论 -
贪心算法 POJ3253 Fence Repair
题目大意:将一很长的木板切割成N块。每块长度分别为L1、L2、... 、LN,每次切断木板时需要的开销为这块木板的长度。我的理解:这道题属于贪心算法类型,在做的时候要用到哈夫曼编码。代码:#include #include #include #define MAX_N 20000using namespace std;/** 哈夫曼树--贪心算法 思想:对于原创 2017-07-07 20:49:23 · 545 阅读 · 0 评论 -
POJ-2385
题目大意:有两棵苹果树(编号1和2),每分钟其中一棵树将会落下一个苹果,而牛要在两棵树下来回跑去接掉下的苹果(因为它不吃掉在地下的苹果)。而这只牛很懒,它不会为了吃而不停地来回跑。这里假设在t分钟内,牛只愿意跑w次,问牛最多能吃几个苹果。默认牛最初在1号树下。我的理解:这是一个DP问题。首先应根据第一分钟的苹果落下情况,对tree数组赋初值。DP状态方程 dp[i][j] = ma原创 2017-07-16 11:54:27 · 286 阅读 · 0 评论 -
蛇形填数(二)--求值法
题目:巧摆螺旋阵~我的理解:这是一个比较经典的求值法问题了,曾经作为类似于此题的一道题,和南阳OJ系统中蛇形填数(一)差不多。这两道题时一种思想。重点是解决下标的转换问题。具体理解可参考代码中的注释。其中有一点要注意一下,在定义数组时一定要比题目要求的大一些,不然会莫名奇妙的报出一些超时错误,我就栽在这上面了。。我的代码:#include #include #include原创 2017-06-20 17:00:39 · 478 阅读 · 0 评论 -
大数阶乘
题目大意:就是阶乘嘛,只不过后来到了数太大要特殊处理下。我的理解:这道题在C++里是个难题,可在java里就是个水题。我的代码:package poj;import java.util.Scanner;import java.math.BigInteger;public class Main{ public static void main(String[] ar原创 2017-06-20 22:44:55 · 200 阅读 · 0 评论 -
POJ-3669广度优先搜索
这是一道典型的广度优先搜索BFS题目。首先声明一下,我在这里借鉴了别人的想法:这是原文答案,请点击题目大意:流星雨即将攻击地球,当然数目是有限的,共n个,攻击到某个点时将会使该点及其上下左右四个点都被摧毁。一个女的,不想被击中啊,就跑啊。她要在地球上找到一个地方让她能够度过灾难。把整个地图看作一张二维表,设该女孩在原点。其中输入第一行为流星个数n。接下来n行,每行3个值,x,y,t。代原创 2017-06-09 20:57:50 · 1103 阅读 · 0 评论 -
POJ1598
题目大意:我的理解:暴力。我的code:#include #include #include using namespace std;int n,m; //n个关键词,m个句子int num[40]; //用于存储一个句子中关键词的个数 char str[30][80]; //用于存储关键词 char s[30][100]; //用于存储句子 int c原创 2017-07-13 20:21:13 · 354 阅读 · 0 评论 -
合工大OJ--PID1345--数7
题目大意:本题大意是一堆小朋友玩酒桌游戏:所有人围一圈,编号1~n,从其中某个编号为a的小朋友开始说出一个合数b(非质数但不包括1,最小的合数为4),其中编号为m的小明比较聪明。他想着,从b开始数,每次说完都加1,如果加1后为质数则此人敲桌子一下(duang),并且循环方向发生改变。直至轮到他自己,并输出小明应该Duang还是说出这个合数。我的思路:在我看来,这道题有两点应该注意,原创 2017-06-13 20:57:43 · 679 阅读 · 0 评论 -
POJ-1979 深度优先搜索DFS
POJ-1979这道题用到的是深度优先搜索(DFS),题目本身很好理解,但是里面有个陷阱啊。。个人理解:这道题首先应该在输入时找出(@)所在位置并且从此处开始进行深度优先搜索遍历,在运用DFS时,要注意将已经遍历的点更新为“#”。遍历时从上下左右四个方向进行遍历,直到遇到下一个“.”。具体看代码中的注释。C++代码:#include #include #defi原创 2017-06-08 16:27:46 · 552 阅读 · 0 评论 -
POJ-3009 深度优先搜索
关于这道题,考的依旧是深度优先搜索。。我没有写出来,但参考了网上的一些答案。总共两个版本。其中一个版本我怎么写都不对,实在看不出哪里有错,恳请牛人指出。第一个版本:(求纠错!!)这是我写的:#include #include #define MAX_N 30#define MAX 99999999using namespace std;int field[MAX_N][MA原创 2017-06-08 20:59:09 · 477 阅读 · 0 评论 -
NYOJ-90整数划分
题目大意:求一个数的划分数我的理解:动态规划(等有时间再好好总结吧)我的代码:#include #include #define MAX_N 1000using namespace std;int dp[MAX_N][MAX_N];int n,m;void solve(){ dp[0][0] = 1; for(int i = 1;i<=m;i++){原创 2017-07-14 23:03:18 · 276 阅读 · 0 评论 -
POJ_1054_enum_讨厌的青蛙
讨厌的青蛙 From Coursera 北京大学 算法设计课程 题目类型:枚举 本题POJ链接:传送门#include <stdio.h>#include <stdlib.h>#include <algorithm>using namespace std;int r,c,n;struct PLANT{ int x,y;};PLANT plants[5001];P原创 2017-12-13 23:05:57 · 458 阅读 · 0 评论