挑战程序设计竞赛
挑战程序设计竞赛
River_____________
这个作者很懒,什么都没留下…
展开
-
dijkstra的两种实现方式
1。 O(V^2)int cost [maxn_v][maxn_v]int d[max_v];bool used[max_v]int v;void dijkstra(int s){ fill(d,d+v,INF); fill(used,used+v,false); d[s]=0;}while(true){ int v=-1; fo原创 2017-03-23 15:56:40 · 364 阅读 · 0 评论 -
F - Dropping tests POJ - 2976(二分)
F - Dropping tests POJ - 2976(二分)In a certain course, you take n tests. If you get ai out ofbi questions correct on test i, your cumulative average is defined to be.Given your test scores原创 2017-03-13 21:23:58 · 255 阅读 · 0 评论 -
从有序数组中查找某个值(二分)
#include #include using namespace std;const int maxn = 10000;int a[maxn];int n,k;void solve(){ int lb=-1,ub=n; while(ub-lb>1) { int mid=(lb+ub)/2; if(a[mid]>=k)原创 2017-03-13 18:47:06 · 403 阅读 · 0 评论 -
Longest Ordered Subsequence POJ - 2533 (最长上升子序列)
Longest Ordered SubsequencePOJ - 2533A numeric sequence of ai is ordered ifa1 a2 aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN) be any sequence (ai1, ai2, ..., a原创 2017-03-13 14:11:28 · 216 阅读 · 0 评论 -
Stacking Boxes UVA - 103(矩形嵌套)
大意是有一些n维的物体,他的边也是n条,如果将一个物体的边按任意顺序排列,只要有一种排列满足一一对应小于另一物体的边,就可以将这个物体嵌套进去另一个物体中,文最多能连续嵌套几个物体。和最长递增子序列差不多,只不过这里需要重新写一下比较函数 Some concepts转载 2017-03-13 14:08:50 · 251 阅读 · 0 评论 -
食物链 POJ - 1182
食物链POJ - 1182动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种。 有人用两种说法对这N个动物所构成的食物链关系进行描述: 第一种说法是"1 X Y",表示X和Y是同类。 第二种说法是"2 X Y",表示X吃Y。原创 2017-03-13 13:51:19 · 178 阅读 · 0 评论 -
Ubiquitous Religions POJ - 2524(并查集)
Ubiquitous ReligionsPOJ - 2524There are so many different religions in the world today that it is difficult to keep track of them all. You are interested in finding out how many different religi原创 2017-03-13 13:46:24 · 210 阅读 · 0 评论 -
寒冰王座 HDU - 1248
完全背包问题,n元的钞票看做背包,小费是背包的最小剩余空间,也是最大的价值,两者看做相同。int max(int a, int b){ return a > b ? a : b;}int main(){ int t; int n; int arr[3] = {150, 200, 350}; int i, j; int dp[1000原创 2017-03-13 13:37:30 · 212 阅读 · 0 评论 -
Charm Bracelet POJ - 3624
Charm BraceletPOJ - 3624Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fill it with the best charms possible from theN (1 ≤ N ≤ 3,402) ava原创 2017-03-13 13:14:04 · 185 阅读 · 0 评论 -
学习贝尔曼算法(poj2240,1860,3259)
利用这三个题目学习理解了一下bellman——ford 算法poj2240:给出不同货币之间的汇率,求是否可以通过货币的多次兑换使得最终得到的货币比开始时多。其实就是求是否存在无限增大的环。#include #include #include #include using namespace std;const int maxn=10000;int V,E;int n,m原创 2017-03-23 15:16:46 · 415 阅读 · 0 评论 -
Stall Reservations POJ - 3190
Stall ReservationsPOJ - 3190Oh those picky N (1 <= N <= 50,000) cows! They are so picky that each one will only be milked over some precise time interval A..B (1 <= A <= B <= 1,000原创 2017-03-14 23:29:25 · 206 阅读 · 0 评论 -
Saruman's Army POJ - 3069
Saruman's ArmyPOJ - 3069Saruman the White must lead his army along a straight path from Isengard to Helm’s Deep. To keep track of his forces, Saruman distributes seeing stones, known as原创 2017-03-15 00:04:05 · 195 阅读 · 0 评论 -
[POJ-3684](物理题)
和poj上的那个蚂蚁下落的题目差不多,都是利用碰撞相互抵消的关系来解决问题的。两个小球碰撞之后相当于运动状态交换了一次。#include #include #include #include #define maxn 105const double g = 10.0;int N, H, R, T;double Y[maxn];double cal(int k){原创 2017-04-20 19:49:52 · 310 阅读 · 0 评论 -
POJ3255(次短路大法好,dij大法好)
Bessie has moved to a small farm and sometimes enjoys returning to visit one of her best friends. She does not want to get to her old home too quickly, because she likes the scenery along the way. She原创 2017-03-27 11:53:27 · 389 阅读 · 0 评论 -
POJ - 2431(优先队列)
题意:从起点到终点距离为n,走1单位路程消耗1单位油,路上会有m个加油站分别出现在Si的位置,路过加油站时可以选择是否加油。问到达加油站最少需要加几次油,不能到输出-1.分析:整体上来看,汽车每经过一个加油站就拥有了在这个加油站加油的能力,可以将加油站加入优先队列,没油时优先选取大的。收获:路过即获得的思想,不直接判断,而是等到需要再判断。代码:#include #inc原创 2017-03-15 23:59:59 · 277 阅读 · 0 评论 -
Aizu - 0009(素数表)
Aizu - 0009(素数表)要求很简单,求1-n有多少个素数,打表就行了#include #include #include #define maxn 1000000using namespace std;int prime[maxn],number[maxn];void getprime(){ int m=sqrt(maxn+0.5); for(in原创 2017-03-15 23:54:46 · 312 阅读 · 0 评论 -
Six Degrees of Cowvin Bacon POJ - 2139(floyd)
The cows have been making movies lately, so they are ready to play a variant of the famous game "Six Degrees of Kevin Bacon".The game works like this: each cow is considered to be zero degrees o原创 2017-03-15 23:33:14 · 241 阅读 · 0 评论 -
Silver Cow Party POJ - 3268 (dijkstra变形)
开始用的folyd显然1000的三次方超时了。那么只有使用dijkstra来优化,但是题目中要求的是到达vis并且返回原来的位置,所以这里可以使用一个二维的数组来代表所有顶点到其他点的最小距离。本题将dijkstra的使用范围和floyd一样,但是复杂度是o(e*logv),比floyd更快// 求解从顶点s出发到所有点的最短距离void dijkstra(int s){原创 2017-03-24 15:56:17 · 233 阅读 · 0 评论 -
Bad Cowtractors POJ - 2377(最大生成树)
最大生成树的思路很简单就是把排序的方向变一下优先选择cost大的路径建树就可以了Bessie has been hired to build a cheap internet network among Farmer John's N (2 <= N <= 1,000) barns that are conveniently numbered 1..N. FJ has already do原创 2017-03-31 15:16:52 · 291 阅读 · 0 评论 -
Semi-prime H-numbers POJ - 3292(筛法变种)
Semi-prime H-numbersPOJ - 3292This problem is based on an exercise of David Hilbert, who pedagogically suggested that one study the theory of4n+1 numbers. Here, we do only a bit原创 2017-03-15 00:18:23 · 204 阅读 · 0 评论 -
Common Subsequence POJ - 1458(dp)
Common SubsequencePOJ - 1458A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = another sequence Z = is a subsequenc原创 2017-03-13 12:57:12 · 186 阅读 · 0 评论 -
poj3190(区间贪心)
贪心,优先队列,先对开始时间排序,队列中结束时间在前的优先。如果出队元素结束时间比另一元素早则该元素入队,否则牛棚数加一再入队最早开始的。用一个数组记录顺序这个贪心思路比较简单,难点就是按照开始时间拍完序之后再怎么输出的问题,本来想的是再结构体里再加一个数据代表选用哪个兽栏,但是一直出错。。。看了大神的思路后,还是用一个数组单独保存思路更清晰。。。#include#inc转载 2017-03-11 11:04:00 · 297 阅读 · 0 评论 -
Find them, Catch them POJ - 1703(并查集,模板)
题意:给一些木棍(两个端点)判断两个木棍是否连接(间接连接也可以,间接连结就是并查集好用)分析:判断线段相交的模板,和并查集基本应用。收获:模板+1;并查集的rank+1;从卢神的代码中学到了处理并查集find函数的正确操作以前都是int find_father(int x){ return x==father[x]?x:fin原创 2017-03-09 00:30:25 · 259 阅读 · 0 评论 -
Smallest Difference POJ - 2718
题意:给几个数,用这些数字组成两个数,求这差值的绝对值最小为多少。分析:暴力 (next_permutation)直接计算, 这时要注意剪纸不然会超时(两个数开头为零的情况剪掉)。或者原创 2017-03-04 09:07:53 · 287 阅读 · 0 评论 -
Agri-Net POJ - 1258
题意: john当上了镇长,打算给每个农场都连接网络,需要用最小的成本连接其他所有农场,所以要找最少的纤维连在一起,任何两个农场之间的距离不超过十万。输入n,下面有n行n列,代表着每两个农场的距离,对角线为0,因为自己到自己是为0;分析:直接暴力连接,任选一个起点,每次搜索与起点相距最小的点,然后把上一次的终点再作为起点,直到全部连接。收获: 这样的连接方式肯定要是链状的原创 2017-03-04 08:56:59 · 195 阅读 · 0 评论 -
Seven Puzzle Aizu - 0121
题意:7数码问题。在2×4的棋盘上,摆有7个棋子,每个棋子上标有1至7的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格(用0表示),与空格相邻(上下左右)的棋子可以移到空格中,该棋子原先位置成为空格。给出一个初始状态(保证可以转移到最终状态),找出一种从初始状态转变成给定最终状态的移动棋子步数最少的移动步骤。输入:多组输入,每组8个数,表示初始状态前四个数为第一行从左到右,后四个数为第原创 2017-03-04 08:27:29 · 414 阅读 · 0 评论 -
Wireless Network POJ - 2236
题意:给出一些已经损坏的电脑的坐标,电脑修复后可以与k范围以内的正常工作的电脑连接,给出一些操作,判断能不能成功。分析:并查集的问题,每修复一台电脑就遍历所有,进行连接。(连接的规则是尽量往先修复的连接)收获:刚开始学习并查集,并查集的建立是基于向上查找父亲,同一父亲就是属于同一个集合。AC:#include #include #incl原创 2017-03-03 18:31:59 · 216 阅读 · 0 评论 -
POJ3069(贪心)
#include #include #include #include #include #define FOR(i,n) for(int i=0;i<n;i++)using namespace std;int s[100115],x[101105];int main (){ int l,n; while(cin >> l >> n&&l!=-1&&n!=-1)原创 2017-02-23 14:51:52 · 323 阅读 · 0 评论 -
POJ3669(BFS,障碍关联时间)
题意:有个小文青去看流星雨,不料流星掉下来会砸毁上下左右中五个点。每个流星掉下的位置和时间都不同,求小文青能否活命,如果能活命,最短的逃跑时间是多少?分析:时间关联障碍,终点存在多个,终点不关联时间很关键。输入时就将最终可能的终点保存,搜索时判断每个点的否应该出现障碍(根据前一个点的时间)。收获:最近在学BFS,这个题典型的障碍和终点都不确定,对重点和障碍的不确定的理解原创 2017-03-01 21:59:11 · 417 阅读 · 0 评论 -
Sumsets POJ - 2229
题意:给一个数,将其进行分解,只能分解为2的幂次,最多能分解多少种。分析:对于奇数n,F(n)与F(n-1)只有一个1的差别,所以n的最大分解种一定和n-1相同。 对于偶数m,F(m)由两种类型的组合组成,一部分是不包含1的组合(不包含1时的种类就等于F(m/2)的种类数,因为此时的队列的所有元素都除以2的话就是F(m/2)的组合)收获:向前寻找相关原创 2017-03-01 19:29:09 · 391 阅读 · 0 评论 -
((((((((BFS))))Aoj0558
在H * W的地图上有N个奶酪工厂,分别生产硬度为1-N的奶酪。有一只吃货老鼠准备从老鼠洞出发吃遍每一个工厂的奶酪。老鼠有一个体力值,初始时为1,每吃一个工厂的奶酪体力值增加1(每个工厂只能吃一次),且老鼠只能吃硬度不大于当前体力值的奶酪。 老鼠从当前格走到相邻的无障碍物的格(上下左右)需要时间1单位,有障碍物的格不能走。走到工厂上时即可吃到该工厂的奶酪,吃奶酪时间不计。问吃遍所有奶酪最少用时原创 2017-02-28 13:24:07 · 196 阅读 · 0 评论 -
GCD and LCM Aizu - 0005
题意:求最大公约数和最小公倍数分析:数字不是超大,ull可以实现,运算时先除后乘防止溢出。收获:。。。#include #include using namespace std;unsigned long long int gcd(unsigned long long int a,unsigned long long int b){ return原创 2017-03-04 09:10:51 · 246 阅读 · 0 评论 -
Backward Digit Sums POJ - 3187
题意:给一个数m,按照杨辉三角的求和次数向上分解n层,求第n层可能出现的所有情况中字典序最小的。分析:向上分解的情况符合杨辉三角的规律,即s[n][0]=s[n-1][0]+s[n-1][1]这样,所以从上向下进行求和,直到某一行的第一个数是m时,就得到了最小的解。收获:杨辉三角的操作方式,一层一层操作。AC:#include #include usin原创 2017-03-04 09:30:04 · 274 阅读 · 0 评论 -
Hopscotch POJ - 3050
题目大致意思:1.5*5的方阵中,先随意挑一格,记住这个格子的数字2.可以上下左右走,走5次,每走一次记录下所走格子的数字3.经过以上步奏,把总共6个数字连起来,形成一串数字。求总共可以形成多少种不同的数字串分析:总状态数较少,把每个位置都当做起点遍历一遍,用map记录是否重复。收获:这种能回头的BFS第一次做,用限制步数来保证搜索范围AC: #原创 2017-03-04 10:45:19 · 226 阅读 · 0 评论 -
4 Values whose Sum is 0 POJ - 2785(二分查找)
题意:给出四列数,要求从每一列中选择一个使得最终四个数的和为0,求有多少种情况。分析:直接枚举的复杂度是O(n^4) 明显TL ,用二分进行简化的话是O(n^2) 。首先枚举前两列的和,然后再从后两列中查找和为前两列和的结果就可以了,因为在后两列中可能会在相同列中会出现相同的数,排完序后用upper_bound和lower_bound可以轻松求出(这样又简化了时间)。收获:原创 2017-03-08 23:50:48 · 273 阅读 · 0 评论 -
A - Radar Installation POJ - 1328 (区间贪心)
题目:给出一个坐标系,将x轴看作海岸,在x轴的上方会出现一些质点(代表小岛),现在要在岸上建造一些灯塔,要求所有的小岛都要被至少一个灯塔照到,求最少要建造多少个灯塔。分析:贪心的思路,每个小岛对应在海岸上对应一段区间,将这些区间按照左端排序,查找最少需要的个数,注意每次判断的右端会不断更新,按照每次判断的小岛的区间收获:第一次做区间贪心的问题,没想到把小岛的对应的灯原创 2017-03-08 23:15:39 · 304 阅读 · 0 评论 -
正向01背包和数组保存简化背包
#include #include #include using namespace std;int dp[20][20];int m,n;int w[20],v[20];int rec(int i,int j){ if(dp[i][j]>=0) { return dp[i][j]; } int res; if(i==n)原创 2017-03-08 21:07:54 · 206 阅读 · 0 评论 -
AOJ0033 (DFS)
题意:十个球按给定顺序从图中所示容器中下落,然后挡板可以让球落在左边或者右边,问给定球的顺序,是否存在两边从低到高都是递增的情况。分析:可以直接提取一个最大递增字串然后判断剩下的是否递增,也可以DFS对每次小球下落的方向进行判断。收获:正向不回溯的DFSAC:1.提取#include#include#includeusing nam原创 2017-02-26 11:19:58 · 652 阅读 · 0 评论 -
AOJ0118(DFS)
题意:求连通块的个数分析:dfs标记连续的相同块就可以了收获:dfsAC:#include#include#includeusing namespace std;char s[105][105];//int dx[4]={ -1, 1,0, 0 };//int dy[4]={ 0, 0, -1, 1 };int ma[4][2] ={原创 2017-02-26 10:49:27 · 486 阅读 · 0 评论 -
poj 1979(DFS)
题意:求给定起点的最小连接块的组成个数分析:简单的DFS收获:加强了DFS的理解(以后要看清题意,这个竟然先输入列数,因为这个卡了好长时间。。。。。)AC代码:#include #include #include using namespace std;char s[1000][1000];int m,n;int c,d;int sum原创 2017-02-26 09:33:11 · 204 阅读 · 0 评论