
uva
alusang
T^T
展开
-
uva 习题 3-4 455 周期串
直接上大神代码,个人的方法太笨拙。#include #include #include int main(){ int n, len, q; char s[110]; scanf("%d", &n); while (n--) { scanf("%s",s); len = strlen(s); for翻译 2017-01-16 16:40:12 · 300 阅读 · 0 评论 -
uva-1374-IDA*
#include#include#includeusing namespace std;int s[30];int n;bool DFS(int d,int maxd){ if(s[d]==n) return true;//一定要首先判断是否满足 if(d>=maxd) return false;//能到这个判断说明s[d]!=n,所以当前步骤数等于最大步骤数也原创 2018-02-24 14:33:04 · 170 阅读 · 0 评论 -
uva-10943-隔板法
最近写图写多了写的要吐了,很多细节还没总结,但是刷的够够的了,所以来写道数学题~这道题上来想到的就是递推,但是没想到也能隔板法做,这里讲下隔板法的做法。#include <iostream>#include <cstring>#include <cstdio>using namespace std;const int maxn=2e2+10;con...原创 2018-03-11 16:11:44 · 273 阅读 · 0 评论 -
uva-1395-枚举生成树
#include #include #include #include using namespace std;const int maxn=1e5+10;int n,m;int fa[maxn],id[maxn],w[maxn],u[maxn],v[maxn];int cmp(const int a,const int b)//间接排序,按照权值大小排序边的标号{原创 2018-03-04 16:11:45 · 522 阅读 · 0 评论 -
uva-11076-思路组合数
这道题思路很简单,很容易就观察出来每种排列完了后每个数位的和是定值,那么这个定值可以这样求得:假设全排列完有all个数,设输入求和为sum,那么排列完的数求和就是sum*all。然后这个数每一位是sum*all/n。于是只要求出这个值再乘以n个1就是答案了。那么只需要一个all,也就是排列生成多少个不重复的数,很容易想到高中的组合数性质,n!除以每个数出现的次数的阶乘:N!/(m1!*m2!*m3...原创 2018-03-12 13:25:48 · 225 阅读 · 0 评论 -
uva-1645-递推
这个题,完全没想到是递推啊QAQ。首先,在n个点里面拿出来一个点作为根节点,然后看剩下的点能不能均分,如果能均分,就继续看子树能不能均分,这样一直分下去,所以就是把能均分的子树的分法加到答案里。#include #include #include #include #include #include #include using namespace std;const原创 2018-03-22 20:26:58 · 194 阅读 · 0 评论 -
uva-1646-大斐波那契数
我觉得凡是能枚举几个n的答案的题都要枚举下看看有木有规律,然后发现是斐波那契数,然后正好前两天学了下大整数类,然后就第一次用Java A题,然后感觉美滋滋2333。import java.math.BigInteger;import java.util.Scanner;public class Main{ public static void main(String[] args)原创 2018-03-22 21:21:49 · 387 阅读 · 0 评论 -
uva-10375-唯一分解定理
根据组合数定义直接唯一分解每个数。#include #include #include #include #include #include #include #include #include using namespace std;const int maxn=1e4+5;int p,q,r,s;int vis[maxn],ans[maxn];vector p原创 2018-03-23 21:21:45 · 163 阅读 · 0 评论 -
uva-10635-LCS转LIS by hash
这个题如果直接LCS做会超时,然后呢就有了一个方法(我反正是想不出来QAQ),首先把输入的王子经过的从1开始标号,于是就成了一个hash映射,然后把公举经过的依照王子的对应生成编号。生成完之后,按照样例,公举的编码是 1 4 6 3 0 0 5 7,0是王子里面没出现过的,这样操作有啥用呢?你想啊,我们要求的是最长公共,标号后非零,即是两个人公共的了,由于王子编号是递增的,所以相对于王子来说,从公原创 2018-03-31 21:53:11 · 191 阅读 · 0 评论 -
uva-1153-策略贪心
这个题见过几次没想出来也一直没补、、#include #include #include #include #include #include #include #include #include #define INF 0x3f3f3f3fusing namespace std;const int maxn=800000+5;int t,n,u,v;struct原创 2018-03-27 17:55:47 · 220 阅读 · 0 评论 -
uva-12563-01背包+输出最优解
这个题有几个点注意:1.给出的唱歌时间总长度是1e9,实际上只有3*60*50=9000s。所以背包的前提满足。2.唱歌时间是t,但是必须留出来1s唱Jin Ge Jin Qu,所以背包时容量最大为t-1。3.在这个题我们称输出的时间是“恰好的时间”(都能理解),但是一般的背包记录的是在当前容量能唱的歌的数量,这样当样例是 3 10060 70 80 这种情况时,从6...原创 2018-07-25 20:03:57 · 699 阅读 · 0 评论 -
uvalive-3026-kmp找循环节
这个题题意是找出一个字符串的前缀是否能表示成前缀的前缀的幂次一开始想的是枚举前缀然后去匹配,果然超时后来想的是既然前缀能表示成一个幂次了,那他的适失配函数用该是有规律的我们都知道失配函数是当一个状态无法匹配时转移到另外一个状态,那么当一个能表示成幂次的串失配时,它转移到的新状态到失配点这一段就是一个循环节#include <cstdio>#include <v...原创 2018-08-14 14:17:09 · 177 阅读 · 0 评论 -
uva-10294-Polya
这里说下Polya相关的知识点1.置换n个元素1,2,3...n之间的一个置换 表示1被1到n中某个数a1取代,2被1到n中某个数a2取代,...直到n被1到n中某个数an取代,且a1,a2,...an互不相同。n个元素则表示n阶置换,且共有n!个(1-n的全排列)。2.置换乘法设: , 则3.等价类通过置换的变换操作后可以相等的元素属于...原创 2018-08-07 21:05:55 · 275 阅读 · 0 评论 -
UVALive-8292-二分法里数列
如图的数列就是法里数列特点是分子分母互质这个题其实就是寻找最逼近一个浮点数的法里数法里数的产生:假设已知两个法里数a/b和c/d,那么两者之间的法里数就是(a+c)/(b+d)#include <cstdio>#include <cstring>#include <algorithm>#include <iostream&g...原创 2018-08-19 19:46:42 · 269 阅读 · 0 评论 -
uva-11212-IDA*
#include<cstdio>#include<cstring>using namespace std;const int maxn = 9;int n, a[maxn];bool is_sorted()//判断是否得到正确结果{ for(int i = 0; i < n-1; i++) if(a[i] >= a[i+...原创 2018-02-24 11:57:01 · 172 阅读 · 0 评论 -
uva10603-BFS
#include #include #include #include using namespace std;const int maxn=200+10;int t,A,B,C,D,max1,ans;int vis[maxn][maxn],tol[4];//tol数组用来记录三个容器的体积,vis用来记录第一个和第二个容器状态是否访问过,当第一第二确定时第三个状态也是确定的,二原创 2018-02-21 20:18:01 · 151 阅读 · 0 评论 -
uva-12627-递归递推
#include #include #include #include #include using namespace std;typedef long long ll;int t,k,x1,x2,ka;ll f(int k,int i)//求k次后的前i行红气球的和{ if(i==0) return 0; if(k==0) return 1; i原创 2018-02-28 20:36:23 · 228 阅读 · 0 评论 -
uva 练习 2-5 分数化小数
输入正整数a,b,c,输出a/b的小数形式,精确到小数后c位。a,b样例输入:1 6 40 0 0样例输出:Case 1:0.1667解:这题分数化小数不难处理,重点在于控制小数位数不一定是多少。#include #include #include #include #include int main(){ int a原创 2017-01-15 16:12:13 · 313 阅读 · 0 评论 -
uva 12108 特别困的学生
题意忽略,网上找到的大神的代码只有30+。。。五体投地,记以借鉴#include#include#define N 1000000int n;int a[15], b[15], c[15];int main(){ int rnd = 0; while (scanf("%d",&n),n) { for (int i = 0; i <翻译 2017-02-08 20:24:39 · 403 阅读 · 0 评论 -
uva 136 丑数
题意不再说,这里给出两个开挂一点的无脑做法1.直接输出第1500个丑数cout 2.用集合储存丑数,输出第1500个即可。主要是应用了集合中的元素不会重复的原理,不用考虑如何处理重复丑数。有一点要注意丑数可能超出int范围变成负数,所以调试几下找出了丑数不溢出且能算出第1500个的次数。#include #include #include #inc原创 2017-02-10 12:45:01 · 200 阅读 · 0 评论 -
uva 1152 和为0的4个值
这题留以记录学习。#include #include #include #define INF 4005*4005using namespace std;int st[INF];int main(){ int a[4005],b[4005],c[4005],d[4005]; int t,n,k=0,l; cin >> t; while(t--)原创 2017-02-18 20:55:03 · 642 阅读 · 0 评论 -
uva 524
之前接触了一点图的回溯,今天看了看紫书的题目,套用已经学到的回溯失败,只能研究刘汝佳的代码了。#include#include#includeusing namespace std;int is_prime(int x){ for(int i = 2; i*i <= x; i++) if(x % i == 0) return 0; retur翻译 2017-04-19 20:59:26 · 294 阅读 · 0 评论 -
uva 1220
#include #include #include #include #include using namespace std;const int maxn=2e2+5;vector G[maxn];map id;//用map给字符串标号int dp[maxn][2],n,cnt;bool f[maxn][2];string s1,s2;void inition()原创 2017-08-17 21:19:02 · 226 阅读 · 0 评论 -
uva 1513
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;const int maxn = 1e5 + 5;int c[2 * maxn];//树状数组int pos原创 2017-08-18 17:39:53 · 223 阅读 · 0 评论 -
uva 11181
这题学到了好多啊,涉及了条件概率和dfs先说说条件概率吧,P(A|B)=P(AB)/P(B);通俗易懂的说就是A在B条件下发生的概率等于B发生的这几种情况里包含A发生的情况的总概率除以B发生的总概率;例如第一组样例吧:3 2 0.10 0.20 0.30;三个人里面有两个人会买东西,那么有三种情况,0.1 * 0.2 * 0.7 + 0.1 * 0.8 * 0.3 +原创 2017-07-27 15:42:15 · 437 阅读 · 0 评论 -
uva 11549
这题主要学会了Floyd判圈法,以前判断循环用set检查,现在有了判圈法,复杂度低而且速度快。#include #include #include #include #include #include #include #include using namespace std;int t;int buf[100];int next(int n,int k)//只是一原创 2017-08-29 19:54:42 · 257 阅读 · 0 评论 -
uva-1025
2017.12.4.---萌新刷dp第一夜紫书第一道例题。我只想说mmp,根本想不到这么做。今晚先写下今晚的感想,以后这题悟透了再继续添加。大体思路就是,你在这一个时刻i可以继续等一分钟,也可以坐上向右或者向左的火车。目标是求最少的等待时间,那么我们就储存等待时间。#include #include #include #include #include #include原创 2017-12-04 22:05:25 · 285 阅读 · 0 评论 -
拓扑排序队列处理
#include #include #include #include using namespace std;const int maxn=1e6+10;int n,m,t;int G[1000][1000],id[1000],topo[1000];void toposort(){ queue q; int t=0;原创 2018-02-04 16:32:22 · 510 阅读 · 0 评论 -
uva 1600 可越过障碍物的bfs
#include #include #include #include using namespace std;const int maxn=30;int t,n,m,k;int Mao[maxn][maxn],vis[maxn][maxn][maxn];//三维数组第三维表示已经走过的障碍物的个数,值仍旧表示是否访问过int dx[]= {0,0,0,-1,1},dy[]=原创 2018-02-07 17:24:43 · 328 阅读 · 0 评论 -
uva-714-二分
#include #include #include using namespace std;typedef long long ll;ll t,n,m,l,r,mid;ll arr[1000],vis[1000];void Print(int ans){ memset(vis,0,sizeof(vis)); ll num=1,s=0; for(int原创 2018-02-28 18:42:40 · 130 阅读 · 0 评论 -
ACM-ICPC 2017 Asia Urumqi-D-Lucas
这个题UVALive数据不对,可以去计蒜课提交https://nanti.jisuanke.com/t/28963这个题我也不会,题解是一个公式,然后Lucas求结果就行了以前用的Lucas得处理阶乘,这个版本的Lucas直接递归即可-----------------------------------------------------------------------------...原创 2018-09-03 11:31:15 · 272 阅读 · 0 评论