uva
wwt9b15bs
这个作者很懒,什么都没留下…
展开
-
【题解】uva1602(同sdoj3208)(2018-08-14集训T2)搜索+判重
UVA题目链接 sdoj题目链接 代码参考了大佬博客 比赛时想到了怎么判重,但是有些细节地方不好写,考场暴力居然打了50……#include<cstdio>#include<set>#include<algorithm>#define _rep(i,a,b) for(int i=(a);i<=(b);i++)#define _for(i,a原创 2018-08-16 07:00:01 · 166 阅读 · 0 评论 -
【题解】UVA1647[ACM/ICPC SEERC 2005].Computer Transformations 递推
题目链接 参考了大佬博客思路摘抄如下: 数学题。我们观察变化。 00 -> 1010 出现 10、01 01 -> 1001 出现 10、00、01 10 -> 0110 出现 01、11、10 11 -> 0101 出现 01、10 只有01下一步会生成00,但是00、01、10、11都会生成01,每一个1都会生成01,而00也可以生成01, 由此分成两...原创 2018-08-22 07:51:39 · 213 阅读 · 0 评论 -
【题解】UVA11375 递推
题目链接 参考了大佬博客思路摘抄如下 d[i]记录用i跟火柴可以组成多少种数字,更新式是d[i+c[j]] += d[i], c[j]就是组成数字j要用的火柴数。但是不能以0开头,最后当火柴数大于等于6的时候就可以在总答案上+1,表示可以构成一个单独的0(因为之前没有0开头的,所以要+1补回来),最后答案就是f[n] = d[1] + d[2] + d[3] + …. + d[n],数据很大,...原创 2018-08-23 07:10:58 · 170 阅读 · 0 评论 -
【题解】UVA11137 递推
题目链接 d[i][j]表示用不大于i的整数的立方,累加和为j的方案 可以优化#include<cstdio>#include<cstring>const int N=25;const int M=1e4+10;typedef unsigned long long ull;ull d[N][M];void Init(){ for(int i...原创 2018-08-23 07:11:05 · 148 阅读 · 0 评论 -
【题解】UVA11174 递推+逆元+快速幂
题目链接 参考了大佬博客思路摘抄如下 首先我们可以把关系建成树,这样我们就有可能得到一个森林(或者是一课树),然后我们再虚拟出来一个点0连接所有森林的根节点,这样是为了保证是一棵树,然后题目就变成了给你一棵树,不改变关系,问这个树有多少种方式,这个还是排列组合问题,对于每一个根节点,有这样的性质 root[i] = f[1]f[2]..f[k] * (s[i]-1)!/s[1]!s[2...原创 2018-08-24 07:45:46 · 190 阅读 · 0 评论 -
【题解】LA3516(同poj2795/uva1362/zoj2641/scu2469/gym-101334E)[ACM/ICPC NEERC 2005].Exploring Pyramids 递推
以UVA链接为例 设输入序列为S,d(i,j)为子序列Si,Si+1,…,Sj对应的树的个数,则边界条件是d(i,i)=1,且Si不等于Sj是d(i,j)=0(因为起点和终点应是同一点)。在其他情况下,设第一个分支在Sk时回到树根(必须有Si=Sk),则这个分支对应的序列是Si+1,…,Sk-1,方案数为d(i+1,k-1);其他分支对应的访问序列为Sk,…,Sj,方案数为d(k,j)。这样,在...原创 2018-08-23 07:11:10 · 241 阅读 · 0 评论 -
【题解】UVA11361 递推
题目链接 设f(d,m1,m2)表示共d个数字,其中各数字之和除以k的余数为m1,这些数字组成的整数除以k的余数为m2的整数的个数,则每个模板对应的解的个数都等于某个f(d,m1,m2) 递推式f(d,m1,m2)=sum{f(d-1,(m1-x)mod k,(m2-10^(d-1)mod k|x=0,1,2,…,9}#include<cstdio>#include&lt...原创 2018-08-23 07:11:17 · 220 阅读 · 0 评论 -
【题解】UVA10253 递推
题目链接 每个串并联网络都可以看成一棵树:为每次串联或并联创建一个节点,并且把所有串联/并联部分看成该节点的子树,只要算出“共n个叶子,且每个非叶节点至少有两个子节点”的树的数目f(n),再乘以2就是答案 设d(i,j)表示每棵子树最多包含i个叶子,一共有j个叶子的方案数,则所求的f(n)=d(n-1,n)。 假设恰好包含i个叶子的子树有p棵,那么这些树的组合数等于从f(i)棵树中选p棵的方...原创 2018-08-23 07:11:27 · 214 阅读 · 0 评论 -
【题解】UVA177 分治
题目链接 学习了大佬博客手动推一直没推出来……只能先放放#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define _rep(i,a,b) for(int i=(a);i<=(b);i++)#define _for(i,a,b) for(in原创 2018-08-25 10:43:12 · 421 阅读 · 0 评论 -
【题解】UVA489 模拟
题目链接#include<cstdio>#include<cstring>const int N=110;char s[N],s2[N];//答案是s,猜的是s2 int left,chance;//还需要猜left个位置,错chance次后就会输 int win,lose;//win==1赢lose==1输 void guess(char ch){ ...原创 2018-08-25 10:43:18 · 278 阅读 · 0 评论 -
【题解】UVA133 模拟
题目链接#include<cstdio>#define _rep(i,a,b) for(int i=(a);i<=(b);i++)const int N=25;int que[N];int n,k,m;inline int cnt(int pos,int dir,int cnt){ while(cnt--) do{ pos=(p...原创 2018-08-25 10:43:28 · 226 阅读 · 0 评论 -
【题解】UVA213[ACM/ICPC World Finals 1991].Message Decoding 模拟
题目链接 把编码理解成二进制,用(len,value)这个二元组来表示一个编码,其中len是编码长度,value是编码对应的十进制值.用code[len][value]保存这个编码所对应的字符。#include<cstdio>#include<cstring>int code[8][1<<8];inline int readchar()//跨行读...转载 2018-08-25 10:43:37 · 180 阅读 · 0 评论 -
【题解】UVA512[ACM/ICPC World Finals 1997].Spreadsheet Tracking 模拟
题目链接 一种做法是模拟表格的操作#include<cstdio>#include<algorithm>#include<cstring>using namespace std;#define _rep(i,a,b) for(int i=(a);i<=(b);i++)#define _for(i,a,b) for(int i=(a);i转载 2018-08-26 22:36:11 · 302 阅读 · 0 评论 -
【题解】UVA1645(同hdu4472)[ACM/ICPC 2012 Asia Chengdu Regional Contest].Count 递推
题目链接 hdu uva n结点树,除去根结点,有n-1个结点,根结点的每棵子树需要完全相同,所以根结点的子树个数k,满足(n-1)%k==0。然后就可以递推打表了。#include<cstdio>const int N=1010;const int mod=1e9+7;int d[N];void Init(){ d[0]=0;d[1]=1; for(...原创 2018-08-22 07:51:35 · 215 阅读 · 0 评论 -
【题解】UVA11040 递推
题目链接 找规律题。通过观察易得到如下递推式:(a[i][j]表示第i层,第j个位置的砖的数字) (1) a[i+2][j+1]=(a[i][j]-a[i+2][j]-a[i+2][j+2])/2; (2) a[i+1][j]=a[i+2][j+1]+a[i+2][j]; (3) a[i+1][j+1]=a[i+2][j+1]+a[i+2][j+2];#include<cst...原创 2018-08-22 07:51:28 · 207 阅读 · 0 评论 -
【题解】UVA1638[ACM/ICPC Daejeon 2012].Pole Arrangement 递推
题目链接 设d[i][j][k]表示让高度为1~i的杆子排成一行,从左边能看到j根,从右边能看到k根的方案数 假设已经安排完高度为2~i的杆子,那么高度为1的杆子不管放到哪里都不会挡住任何一根杆子 假定i>=2 1.插到最左边,则从左边能看到它,从右边看不见 2.插到最右边,则从右边能看到它,从左边看不见 3.插到中间,都看不见 d[i][j][k]=d[i-1][[j-1][...原创 2018-08-22 07:50:54 · 154 阅读 · 0 评论 -
【题解】UVA1021 模拟
参考了《算法竞赛入门经典习题与解答》(本人非常蒟蒻,最开始做此题毫无头绪) 循环完成的天数,每次循环模拟所有城市的硬币流入流出。(1)将每个城市前一天所收货币加入余额,判断是否完成。(2)判断国家是否完成。若所有国家都已完成,退出循环输出结果。(3)按照题意模拟硬币扩散到周围城市。代码内的注释比较详细(本蒟蒻写代码时不加注释容易把自己写晕) 第一次发题解瑟瑟发抖(还专门找了个没...原创 2018-08-08 21:39:04 · 262 阅读 · 0 评论 -
【题解】UVA12169 扩展欧几里得
题目链接 参考了大佬题解思路摘抄如下: 因为(a*x1+b)%10001=x2 (a*x2+b)%10001=x3 x3 = (a * (a * x1 + b) % 10001 + b ) % 10001; x3 = (a * (a * x1 + b) + b) % 10001; 所以 x3 + 10001 * k = a * a * x1 + (a + 1) * b; x...原创 2018-08-11 23:22:02 · 144 阅读 · 0 评论 -
【题解】UVA10375 组合数+线性筛+唯一分解定理
题目链接 线性筛出10000以内素数表,求出唯一分解式中各个素数的指数#include<cstdio>#include<cstring>#include<cmath>#define _rep(i,a,b) for(int i=(a);i<=(b);i++)#define _for(i,a,b) for(int i=(a);i&原创 2018-08-12 09:14:13 · 233 阅读 · 0 评论 -
【题解】UVA11582 快速幂取模
题目链接 可以发现当有连续两项为1,1时整个序列开始重复。预处理出所有n的循环节,然后对于a^b快速幂取模得到对应下标#include<cstdio>#include<cstring>#include<vector>using namespace std;#define _rep(i,a,b) for(int i原创 2018-08-11 22:01:04 · 176 阅读 · 0 评论 -
【题解】UVA10328 线性DP+大整数
题目链接 大整数型是NM什么鬼东西(雾) 首先是逆向思维,c[i][j]表示的是投掷i次,连续正面的个数最多不超过j次的情况有多少种,然后c[i][j] = c[i - 1][j] * 2,无非是第i次增加了两种情况,正面和反面,但是这样计算是要有些不符合条件的情况也考虑进去了,即c[i-1][j]会有说后面的j个为正面,那么在增加一个正面的话连续正面的个数就会变成j + 1个,所以要减去这种...原创 2018-08-18 07:37:08 · 141 阅读 · 0 评论 -
【题解】UVA725 枚举
题目链接 学习了大佬博客 只需枚举fghij就可以算出abcde,然后判断是否所有数字都不相同 注意sprintf、strcmp、sort的操作很巧妙#include<cstdio>#include<algorithm>#include<cstring>using namespace std;int cmp(char a,char b){ ...转载 2018-08-19 09:49:36 · 384 阅读 · 0 评论 -
【题解】UVA11059 枚举
题目链接 连续子序列有两个要素:起点和终点,因此只需枚举起点和终点即可。由于每个元素的绝对值不超过10且不超过18个元素,最大可能的乘积不会超过10^18,可以用long long 存储#include<cstdio>#include<iostream>#include<algorithm>using namespace std;typedef l...原创 2018-08-19 09:49:40 · 216 阅读 · 0 评论 -
【题解】UVA10976 枚举
题目链接 ∵x>=y∴1/x<=1/y->1/k-1/y<=1/y->y<=2k,所以在2k范围内枚举#include<cstdio>int main(){ int x,y,k; while(~scanf("%d",&k)) {原创 2018-08-19 09:49:44 · 132 阅读 · 0 评论 -
【题解】UVA1009[ACM/ICPC World Finals 2002].Ballons in a Box 枚举
题目链接 枚举每个点,算出可扩展的最大体积,就可求出剩余体积#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>using namespace std;const doubl原创 2018-08-21 07:08:28 · 284 阅读 · 0 评论 -
【题解】UVA12230 数学期望
题目链接 首先如果全部步行则期望为D,现在每遇到一条河,求过河时间的期望,等待时间的区间为(0,2*L/v),船在每个地方都是等可能的,所以等待的期望就是(0 + 2*L/v) / 2 = L / v,又过河还要L / v,所以总的渡河期望值为2 * L / v,所以每遇到一条河拿D减去假设步行过河的期望L再加上实际过河期望2 * L / v即可#include<cstdio&gt...原创 2018-08-19 09:48:51 · 175 阅读 · 0 评论 -
【题解】UVA580 递推
题目链接 大佬博客讲的很好,摘抄如下: 设f[i]为i个盒子的合法方案数,g[i]为i个盒子的非法方案数。 对于f[n],考虑第一次出现三个U连续的情况是在i,i+1,i+2,则i-1【如果存在】必须是L,之前不能出现三个U连续,之后随便选。总方案数为g[i-2]*2^(n-i-2)。 另外在特殊处理一下i-1不存在的情况,即i=1,此时的方案数为2^(n-3)。 综上所述,f[n...转载 2018-08-22 07:50:38 · 187 阅读 · 0 评论 -
【题解】UVA12034 递推
题目链接 dp[i][j]表示i匹马j个排名 与前面的马同时到达+单独到达 dp[i][j]=(dp[i-1][j-1]+dp[i-1][j])%Mod*j%Mod; 还是可以预处理出来查表#include<cstdio>const int N=1e3+10;const int mod=10056;int dp[N][N],sum[N];void init()...原创 2018-08-22 07:50:43 · 184 阅读 · 0 评论 -
【题解】LightOJ1098(同UVA10830)A New Function 数学知识
题目链接 看到这个数据范围就发愁了……O(n)扫都不行。 其实写到根号n就可以了。#include<cstdio>#include<cmath>using namespace std;typedef long long ll;int t,ca;ll ans,n;int main(){ //freopen("in.txt","r原创 2018-09-15 06:34:30 · 226 阅读 · 0 评论