Begining
艾_Mi杰
算法很苦,坚持很酷!
展开
-
Adventure of Super Mario UVA - 10269(Floyd、Dijkstra)
题目链接:Adventure of Super Mario UVA - 10269题目大意:n个地点,前A个为村庄,后B个为城堡,马里奥要从第B个城堡到第A个村庄。另外马里奥有一双魔法靴,可以不耗费时间的走最多L长度,但是靴子的起始位置都必须是村庄或城堡且中途不能经过城堡。魔法靴最多可以使用K次。先用Floyd求一个多源最短路,但是要保证每条最短路不会中途经过城堡。再用Dijkstra求出从第B个城堡到第A个村庄的最短路。#include <iostream>#include <c原创 2020-09-14 11:52:20 · 192 阅读 · 0 评论 -
Marks Distribution UVA - 10910(组合计数)
题目链接:Marks Distribution UVA - 10910题目大意:n个科目,及格分数为p,一个人总分为t。求该人所有课程及格时各门课得分可能有多少种情况。可以将该问题看作是有n个不同的盒子,允许盒子为空,且每个盒子至少有p个球,则先在每个盒子中放入p个球,剩下t-n*p个球,将剩下的球再放入这n个不同的盒子,有多少种不同的方法?设tem=t-n*p,则将tem个小球分成n组需要...原创 2019-10-15 19:32:02 · 153 阅读 · 0 评论 -
A Graph Problem UVA - 11069(规律)
题目链接:A Graph Problem UVA - 11069题目大意:从按照升序排列的n个节点中取出m个,使得这m个节点间的绝对值为2或3。问有多少种取法?对于第n个元素来说,可以和之前的n-2个元素构成的集合构成新集合,也可以和之前的n-3个元素构成的集合构成集合。故:ans[n]=ans[n-2]+ans[n-3]#include <iostream>#include...原创 2019-10-15 19:23:38 · 187 阅读 · 0 评论 -
Tri Tiling UVA - 10918(规律)
题目链接:Tri Tiling UVA - 10918题目大意:求有多少种方法可以用1x2的骨牌铺满3xN的矩形程序中给出了递推关系,事实上,化简后的公式为ans[n]=4*ans[n-2]-ans[n-4]#include <stdio.h>#define N 30int fib[N+1];void setfib(void){ int i,sum=1;...原创 2019-10-15 19:16:57 · 193 阅读 · 0 评论 -
!! Really Strange !! UVA - 10519(大数、规律)
题目链接:!! Really Strange !! UVA - 10519题目大意:求n个圆最多可以将一个平面分成几块儿注:ans[0]=1#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=1e2+5;struct b...原创 2019-10-14 19:34:04 · 149 阅读 · 0 评论 -
Tiling UVA - 10359(大数、规律)
题目链接:Tiling UVA - 10359题目大意:有1x2和2x2两种瓷砖,问有多少种方法可以将2xN的地面铺满。递推关系:ans[i]=ans[i-1]+2*ans[i-2]#include <stdio.h>#include <string.h>char s[251][101];void setfib(void){ int i,j,len...原创 2019-10-14 19:24:52 · 188 阅读 · 0 评论 -
Throwing cards away II UVA - 10940(规律)
题目链接:Throwing cards away II UVA - 10940题目大意:给出一个1~n的序列表示一堆牌,1在牌顶,n在牌底。每次从牌顶取两张,第一张弃掉,第二张放到牌低,求最后剩下的牌。ans[2n+k]=2*k(1<=k<2n)注:ans[1]=1#include <iostream>#include <cstdio>using ...原创 2019-10-14 19:20:11 · 163 阅读 · 0 评论 -
Pizza Cutting UVA - 10079(规律)
题目链接:Pizza Cutting UVA - 10079题目大意:一个披萨,切n刀,最多可以切几块。ans[n]=1+((1+n)*n)/2#include <iostream>#include <cstdio>using namespace std;int main(){ int n; while(~scanf("%d",&n...原创 2019-10-14 19:14:47 · 286 阅读 · 0 评论 -
Safe Salutations UVA - 991(卡特兰数)
题目链接:Safe Salutations UVA - 991题目大意:圆上有2n个点,将这2n个点成对相连后,要求所连线段都不重合,求有多少种连接的方法。卡特兰数的几种典型应用:1、 括号化问题。n个左括号和n个右括号组成的合法括号序列的数量?矩阵链乘:P=a1×a2×a3×……×an,依据乘法结合律,不改变其顺序,用括号表示成对的乘积,试问有几种括号化的方案?2、 出栈次序问题...原创 2019-10-14 19:12:10 · 179 阅读 · 0 评论 -
Overflow UVA - 465(借助double实现的大数比较)
题目链接:Overflow UVA - 465题目没有卡精度,可以使用double类型水过。float:3.40282e+038 ~ 1.17549e-038double:1.79769e+308 ~ 2.22507e-308long double:1.18973e+4932 ~ 3.3621e-4932#include <iostream>#include <cst...原创 2019-10-12 20:29:07 · 154 阅读 · 0 评论 -
Urn-ball Probabilities! UVA - 10169(概率、打表)
题目链接:Urn-ball Probabilities! UVA - 10169原创 2019-10-12 17:41:41 · 187 阅读 · 0 评论 -
Probability|Given UVA - 11181(条件概率)
题目链接:Probability|Given UVA - 11181题目大意:有n个人去超市买东西,每个人买东西的概率为p[i]。求当有r个人买东西时,每个人实际买东西的概率。条件概率p(a|b)=p(ab)/p(b),可以通过dfs枚举所有情况进行求解。#include <iostream>#include <cstdio>#include <cstrin...原创 2019-10-09 15:18:09 · 178 阅读 · 0 评论 -
Burger UVA - 557(概率、递推)
题目链接:Burger UVA - 557题目大意:Ben和Bill过生日请2n个朋友吃饭。从Ben的左边开始,每个人抛硬币,若为正面,则得到一个火腿汉堡,否则得到一个奶酪汉堡。求最后Ben和Bill得到同一种汉堡的概率。反面思考,用1减去Ben和Bill得到不同汉堡的概率即可。Ben和Bill是最后得到汉堡的,若要两人得到不同的汉堡,则前2n-2个人分别得到n-1个火腿汉堡和n-1个奶酪汉堡...原创 2019-10-09 15:09:12 · 290 阅读 · 0 评论 -
So you want to be a 2n-aire? UVA - 10900(全期望)
题目链接:So you want to be a 2n-aire? UVA - 10900题目大意:输入n表示有n道题目,t表示每道题答对的概率再t-1之间。初始奖金为1,面对题目,若选择不答题,则可以拿到当前的奖金走人,若选择答题,答对则奖金翻倍,否则奖金清零。求最终获得奖金的期望的最大值。#include <iostream>#include <cstdio>...原创 2019-10-09 14:50:06 · 218 阅读 · 0 评论 -
Winning Streak UVA - 11176(概率dp)
题目链接:Winning Streak UVA - 11176题目大意:给出n和p,n场比赛,每一场比赛的获胜概率为p,求连胜的期望。用dp[i][j]表示前i场比赛中,连胜不超过j的概率那么对于第i场比赛来说,有以下两种情况:1、 无论胜负都不会影响连胜场数则dp[i][j]=dp[i-1][j]2、 会对当前连胜造成影响1> 若i=j+1,即当前全胜且已有j场连胜,那么需...原创 2019-10-08 22:07:48 · 189 阅读 · 0 评论 -
Gift Exchanging UVA - 10417(概率、dfs)
题目链接:Gift Exchanging UVA - 10417题目大意:Xmas过生日宴请了n个朋友。分别给出五种包装的礼物的个数,以及每个朋友分别送出五种礼物的概率(和为1)。第一个人和Xmas是最好的朋友,求Xmas拿哪一件礼物可以最大概率的拿到最好朋友送的礼物。若概率相同,拿包装好最小的礼物。dfs枚举所有情况,然后记录1号朋友送出每一种包装的礼物的概率,然后输出该概率除以该包装礼物个...原创 2019-10-08 22:00:02 · 206 阅读 · 0 评论 -
How Many Fibs? UVA - 10183(斐波那契数列、大数)
题目链接:How Many Fibs? UVA - 10183题目大意:给出a、b两个数,求a、b之间斐波那契数的个数。先打表斐波那契数列,然后寻找a、b之间的斐波那契数个数。#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int M...原创 2019-10-08 21:42:59 · 159 阅读 · 0 评论 -
How Many Trees? UVA - 10303(卡特兰数、大数)
题目链接:How Many Trees? UVA - 10303Catalan数列:c[0]=c[1]=1。递推关系: c[n]=c[0]*c[n-1]+c[1]*c[n-2]+…+c[n-1]*c[0] (n>=2) c[n]=c[n-1]*(4*n-2)/(n+1)应用:1、 n个左括号和n个右括号组成的合法括号序列的数量为c[n]2、 1,2,……,n经过...原创 2019-10-08 21:39:11 · 260 阅读 · 0 评论 -
How Many Calls? UVA - 10518(斐波那契数列、矩阵快速幂)
题目链接:How Many Calls? UVA - 10518题目大意:求斐波那契数列第n个数的递归次数,然后再模除b。n比较大,可以借助矩阵快速幂来求斐波那契数列的第n项。#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef lo...原创 2019-10-08 21:35:47 · 173 阅读 · 0 评论 -
Hashmat the Brave Warrior UVA - 10055
题目链接:Hashmat the Brave WarriorA - 10055大水题,输出绝对值两数绝对值。#include <iostream>#include <cstdio>#include <cmath>using namespace std;typedef long long LL;int main(){ LL a,b;...原创 2019-10-06 20:10:57 · 196 阅读 · 0 评论 -
Ecological Premium UVA - 10300
题目链接:Ecological PremiumVA - 10300#include <iostream>#include <cstdio>using namespace std;typedef long long LL;int main(){ int n; scanf("%d",&n); while(n--) ...原创 2019-10-06 20:16:52 · 143 阅读 · 0 评论 -
The Decoder UVA - 458
题目链接:The Decoder UVA - 458#include<stdio.h>int main(){ char c; while((c=getchar())!=EOF) putchar((c=='\n')? c:c-7); return 0;}原创 2019-10-06 20:19:48 · 166 阅读 · 0 评论 -
Kindergarten Counting Game UVA - 494
Kindergarten Counting Game UVA - 494#include <iostream>#include <cstdio>#include <stdlib.h>using namespace std;int main(){ string s; while(getline(cin,s)) { ...原创 2019-10-06 20:20:56 · 168 阅读 · 0 评论 -
Machined Surfaces UVA - 414
题目链接:Machined Surfaces UVA - 414#include <bits/stdc++.h>using namespace std;int main(){ int n,sum,cnt,mincnt; char c; while(~scanf("%d\n",&n)&&n!=0) { ...原创 2019-10-06 20:21:48 · 151 阅读 · 0 评论 -
Rotating Sentences UVA - 490
题目链接:Rotating Sentences UVA - 490#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=1e2+5;char s[N][N];int mygets(char s[]){ int i=0...原创 2019-10-06 20:22:34 · 129 阅读 · 0 评论 -
Marvelous Mazes UVA - 445
题目链接:Marvelous Mazes UVA - 445#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int N=256;int mygets(char s[]){ int i=0; char c; ...原创 2019-10-06 20:28:00 · 169 阅读 · 0 评论 -
Triangle Wave UVA - 488
题目链接:Triangle Wave UVA - 488#include <stdio.h>int main(void){ int t,a,f,i,j,k,l; scanf("%d",&t); for(i=0;i<t;i++) { scanf("%d%d",&a,&f); for...原创 2019-10-06 20:30:11 · 145 阅读 · 0 评论 -
Hangman Judge UVA - 489
题目链接:Hangman Judge UVA - 489#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=265;char s[N],g[N];int slen,glen,vislen,win,lose,chance;...原创 2019-10-06 20:32:58 · 138 阅读 · 0 评论 -
The Collatz Sequence UVA - 694
题目链接:The Collatz Sequence UVA - 694#include <iostream>#include <cstdio>using namespace std;int main(){ long long a,l,t; int cnt,casenum=1; while(~scanf("%lld%lld",&...原创 2019-10-06 20:35:03 · 130 阅读 · 0 评论 -
Linear Cellular Automata UVA - 457
题目链接:Linear Cellular Automata UVA - 457#include <iostream>#include <cstdio>using namespace std;const int N=10;const int M=40;const int D=50;int dna[N];int main(){ int t; ...原创 2019-10-06 20:36:34 · 144 阅读 · 0 评论 -
The Fibonacci Primes UVA - 10236(素斐波那契数)
题目链接:The Fibonacci Primes UVA - 10236题目大意:输入n,输出斐波那契数列里第n个素数的前九位,不足九位的将数字全部输出。对于斐波那契数列f[n],如果n为素数,那么f[n]也为素数,但是对于n为1或2时需要特判。前九位可以通过double型的斐波那契数列实现,具体见代码。#include <iostream>#include <cstd...原创 2019-10-08 20:52:13 · 181 阅读 · 0 评论 -
Fibinary Numbers UVA - 763(大数、斐波那契数、进制转换)
题目链接:Fibinary Numbers UVA - 763题目大意:给出两个二进制数,但是这两个数从右到左的第n位的权值为斐波那契数列中对应的第n个数,这样的数称为斐波那契数,最后输出两数和的斐波那契数。例如1010代表1·5+0·3+1·2+0·1 = 7。先把斐波那契数打表,然后进行进制转换。#include <iostream>#include <cstdio&...原创 2019-10-08 21:03:27 · 222 阅读 · 0 评论 -
Modular Fibonacci UVA - 10229(斐波那契数列、矩阵快速幂)
题目链接:Modular Fibonacci UVA - 10229题目大意:输入n与m,输出f[n]%m。f[n]为斐波那契数列里的第n个数。n比较大,可以借助矩阵快速幂来求斐波那契数列的第n项。#include <iostream>#include <cstring>#include <cstdio>using namespace std;...原创 2019-10-08 21:10:22 · 209 阅读 · 0 评论 -
Ray Through Glasses UVA - 10334(斐波那契数列、大数模拟)
题目链接:Ray Through Glasses UVA - 10334题目大意:求在两块玻璃中反射k次的光线条数。其实就是斐波那契数列,大数计算,也可以通过模拟法处理。#include <iostream>#include <cstdio>#include <cstring>using namespace std;typedef unsign...原创 2019-10-08 21:20:38 · 190 阅读 · 0 评论 -
Connect the Cable Wires UVA - 10862(找规律、大数)
题目链接:Connect the Cable Wires UVA - 10862递推公式:f[i]=f[i-1]*3-f[i-2]#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int N=2e3+5;struct bign{ ...原创 2019-10-08 21:26:19 · 187 阅读 · 0 评论 -
Back to High School Physics UVA - 10071
题目链接:Back to High School Physics UVA - 10071物理水题,一个匀加速直线运动中,初速为0,t时刻速度为v,求2t时间内的位移。可以把t时刻速度看作平均速度,位移x=v*2t。#include <iostream>#include <cstdio>using namespace std;int main(){ i...原创 2019-10-06 20:10:43 · 146 阅读 · 0 评论