- 博客(68)
- 资源 (2)
- 收藏
- 关注
原创 UVa 11063 - B2-Sequence
题目:给你一组数据{ b1,b2,...,bk }中,判断是否任意两个数字的和都不同。分析:数论。计算出所有结果,排序判断相邻结果是否相同即可。说明:500题(⊙_⊙)。#include #include #include using namespace std;int data[111];int sum[5555];int main(){ int n,T = 1
2014-10-30 01:39:36 4198
原创 UVa 1585 - Score
题目:给你一个X和O组成的串,每个O有一个分,为他前面连续的O个数+1,求所有O的分数和。分析:dp,简单题。lis类似物,每个位记录连续的个数即可。说明:快500了(⊙_⊙)。#include #include #include #include using namespace std;char str[81];int score[81];int main()
2014-10-30 00:04:55 6767 3
原创 UVa 11121 - Base -2
题目:计算以-2为基数的数的表示。分析:数论。写出不同位数能表示的数字区间就可以找到规律。 长度为1:[1,1]; 长度为2:[-2,-1]; 长度为3:[2,5]; 观察发现,区间长度增长为1,2,4,8,..,2^k,并且奇偶间隔开; 这样可以找到第一个1所在的位置k,然后减去对应的基底(-2^k)寻找下一个1的
2014-10-29 20:55:29 956
原创 UVa 498 - Polly the Polynomial
题目:一直多项式的系数,求不同的x对应多项式的值。分析:数学题,简单题。直接代入多项式计算即可。说明:注意输入格式。#include #include #include #include using namespace std;int temp,c[10000]; int main(){ int n; while ((temp = getchar()) != E
2014-10-29 17:33:12 1826
原创 UVa 455 - Periodic Strings
题目:求一个串的最小循环节。分析:暴力,字符串。数据量较小,直接使用枚举法。 枚举循环节的长度,匹配判断,找到第一组解即为最小。说明:(⊙_⊙)。#include #include #include #include using namespace std;char str[104];int main(){ int n; while (
2014-10-29 15:23:10 10825 35
原创 UVa 10573 - Geometry Paradox
题目:两个相切的小圆r1,r2,同时外切于一个大圆R,已知两小圆的半径r1、r2, 或者过两小圆的被大圆截取的切线段长度t,求大圆面积减去两小圆面积为多少。分析:计算几何。由题意可知如下等式: R = r1 + r2; t^2 = 4(R^2 - (r2-r1)^2)= 4r1r2; 整理,
2014-10-29 11:47:33 2919
原创 UVa 11428 - Cubes
题目:给定一个正整数N求出满足N = x^3 - y^3的y最小的正整数对(x,y)。分析:数论,分治。 x^3 - y^3 = (x-y)(x^2 + xy + y^2); 因为,x、y都是正整数,且x > y,则x^3 - y^3 > (x-y)(3y^3); 因为N是1~10000(x-y)与(x^2 + xy
2014-10-28 11:09:12 2171
原创 UVa 10633 - Rare Easy Problem
题目:给定一个数N,去掉末尾的数变成M,现在已知N-M,确定N。分析:数论,简单题。 设N = 10*a + b { 其中0 ≤ b ≤ 9 },则M = a; N - M = N - a = 9*a + b,枚举所有的b计算出满足条件的N即可。说明:目标500题(⊙_⊙)。#include #include #inclu
2014-10-28 09:40:26 2481
原创 UVa 11064 - Number Theory
题目:求给顶一个数n,的所有的1 ≤ m ≤ n的m,使得gcd(m,n)≠ 1 且 gcd(m,n)≠ m。分析:数论,素数筛法,欧拉函数。 设pi为n的第i个素数因,k1为第i个素数因子的个数,则有: 1 ≤ m ≤ n,gcd(m,n)= 1 的m的个数为欧拉函数; 欧拉函数:φ(n)= n *(1 - 1/
2014-10-28 09:12:07 1837
原创 UVa 10820 - Send a Table
题目:找到整数区间[1,n]中多有的互质数对。分析:数论,筛法,欧拉函数。在筛素数的的同时,直接更新每个数字的欧拉函数。 每个数字一定会被他前面的每个素数筛到,而欧拉函数的计算是n*π(1-1/pi); 其中,pi是n的素数因子,所以可以利用筛法来计算欧拉函数,然后求和; 注意,这时求出的欧拉函数为所有小于n的数m与
2014-10-27 13:09:40 1198
原创 UVa 10950 - Bad Code
题目:有一种编码方式,串只有小写字母构成,每个小写字母对应一个数字,现在给你妆化后的数字串, 问有多少个原串与之对应,注意数字串里可能有一个前导0。分析:搜索。按字母顺序存储映射表,按字母顺序匹配搜索即可。说明:注意最多只输出前100个。#include #include #include #include using namespace std;
2014-10-27 13:02:09 1087
原创 UVa 12377 - Number Coding
题目:一个数可以用一种素数元素的个数表示的形式,43560=23×32×51×112表示成41223; 第一个数是素因子的种类,第二个是每个素因子的个数递增排列;给你一个这种形式的串, 问原来的数可能有几种情况。分析:数论,计数原理,组合数学。 对于每个串,第一个数字一定是素因子的种类数;
2014-10-25 19:38:55 833
原创 UVa 10101 - Bangla Numbers
题目:将数字数转化成数字加单词的表示形式输出。分析:数论,简单题。直接分成两部分除10000000的商和余数,分别输出即可。说明:注意输入为数字0的情况,还有long long类型防止溢出。#include #include #include using namespace std;void output(long long a){ if (a >= 10000
2014-10-25 18:38:42 2826
原创 UVa 11621 - Small Factors
题目:找到不小于给定数n的,仅以2,3为因数组成的数字。分析:数论,贪心,分治。 利用两根指针,分别代表乘2,与乘3的队列,队列为至今生成的数字,初始为{1}; 然后,每取两个指针对应元素*2和*3的值中最小的即为未找到的数字中最小的; 注意,可能生成重复数据,不要存进去(重复数据,一定连续产生)。说明:打表计算
2014-10-25 15:40:24 1500
原创 UVa 836 - Largest Submatrix
题目:给你一个n*n的01矩阵,求里面最大的1组成的矩形的米娜及。分析:dp,单调队列。UVa 1330同题,只是输入格式变了。 我们将问题分解成最大矩形,即求解以k行为底边的图形中的最大矩形,然后合并,求最大的矩形; 预处理: 求出以每行为底边的每一列从底边开始向上的最大连续1的高度MaxH。 O(N^2) ;
2014-10-24 21:02:43 1276
原创 UVa 825 - Walking on the Safe Side
题目:在一个N*M的网格中,从左上角走到右下角,有一些点不能经过,求最短路的条数。分析:dp,帕斯卡三角。每个点最短的就是走N条向下,M条向右的路。 到达每个点的路径条数为左边和上面的路径之和。说明:注意数据输入格式。#include #include #include #include using namespace std;int smap
2014-10-24 15:30:37 1377
原创 UVa 642 - Word Amalgamation
题目:给你一个单词列表,再给你一些新的单词,输出列表中重新排列能得到此新单词的词。分析:字符串。对每个字符串的字母排序生成新的传f(str),整体排序,用二分来查找即可。说明:注意输出要满足字典序,先排序后查找。#include #include #include #include #include using namespace std;typedef struct
2014-10-24 12:33:42 1158
原创 UVa 10100 - Longest Match
题目:求两组字符串中最大的按顺序出现的相同单词数目。分析:dp,最大公共子序列(LCS)。把单词整个看成一个元素比较即可。 状态:f(i,j)为s1串前i个单词与s2串前j个单词的最大匹配数; 转移:f(i,j)= max(f(i-1,j),f(i,j-1)){ s1[i] ≠ s2[j] };
2014-10-23 16:08:30 1554
原创 UVa 11827 - Maximum GCD
题目:给你一组数,求出其中两两最大公约数中最大的值。分析:数论。数据较小,直接枚举即可。说明:注意输入格式。#include #include #include using namespace std;int data[101];int gcd(int a, int b){ return a%b?gcd(b, a%b):b;}int main(){ int
2014-10-23 15:09:24 2231
原创 UVa 11614 - Etruscan Warriors Never Play Chess
题目:有这样一种编排,第一组有1个人,第二组有2个人,..,第k组有k个人,现在有n个人,问能构成前几组。分析:数论,分治。显然这个序列是一个前k项和,那么输出(k+1)*k /2不超过n的最大k值即可;二分或开方。说明:数据较大,用long long。#include #include #include using namespace std;typedef long l
2014-10-22 19:52:16 1299
原创 UVa 11650 - Mirror Clock
题目:求给定时钟的镜面时间。分析:简单题。直接用12:00减去当前时间即可,如果小时小于等于0加上12。说明:没有0:01,只有12:00。#include #include #include using namespace std;int main(){ int n,h,m,a,b; while (~scanf("%d",&n)) for (int i = 0 ;
2014-10-21 10:40:19 859
原创 UVa 10299 - Relatives
题目:计算一个给定数的欧拉函数(1~n-1中和n互质的数的个数)。分析:数论,素数筛法,欧拉函数。 欧拉函数:φ(n)= n *(1 - 1/p1)*(1 - 1/p2)*(1 - 1/p3)*…*(1 - 1/pt); 这里利用筛法打表计算出50000内的素数,因为数据范围是1000000000内的, 所以,不
2014-10-21 10:21:29 1608
原创 UVa 10313 - Pay the Price
题目:求一个整数的重复拆分,限制拆分数的个数。分析:dp,二维多重背包。整数拆分就用背包。 状态:设f(i,j)为j拆分成i个元素的拆法; 转移:f(i,j)= sum(f(i-1,j-k),f(i-1,j-2k),...,f(i-1,j-mk)){ 其中,1 ≤ k ≤ j }; 因为输入格式WA好多次,
2014-10-20 22:07:58 1230
原创 UVa 10946 - You want what filled?
题目:统计一个矩阵中所有的连通块的个数,按递减输出。分析:搜索,floodfill。直接利用dfs求解即可。说明:数组开小了╮(╯▽╰)╭。#include #include #include #include #include using namespace std;char maps[55][55];typedef struct tnode{ char ch
2014-10-19 19:03:07 871
原创 UVa 11790 - Murcia's Skyline
题目:给你一排建筑的长度和高度,求最长的上横高度和下降高度。分析:dp,最大上升子序列。说明:有长度,不能直接用单调队列优化。#include #include #include using namespace std;int h[2000],w[2000],u[2000],l[2000];int main(){ int T,n; while (~scanf("%
2014-10-19 17:27:36 1596
原创 UVa 121 - Pipe Fitters
题目:在一个矩形中摆放圆,要求每行或每列的圆是相切的,问最多能放多少个。分析:计算几何,数论。首先计算矩形摆放,然后计算交叉摆放(每行相同和相邻行差1个)求最大即可。说明:╮(╯▽╰)╭当成最大摆放WA好几次。#include #include #include #include using namespace std;//题目方式摆放 int getmin(doubl
2014-10-19 00:28:10 1282
原创 UVa 10116 - Robot Motion
题目:有一个地图,地图上有运行的规则(移动到东西南北四个方向),现在给你起始点,求最后的状态。分析:模拟。直接从起始点出发,按照地图的规则移动即可。记录每个点到达时走的步数,计算环。说明:这题目也很眼熟(⊙_⊙)。#include #include #include #include using namespace std;char maps[100][100];int
2014-10-18 12:31:31 1181
原创 UVa 10773 - Back to Intermediate Math
题目:渡河问题,给你河水宽度,水流速度,求垂直渡河与最快渡河的时间差。分析:物理题,数学题。 最快渡河情况,传垂直运动,垂直渡河,船的水平分速度和水流速度抵消。说明:注意水流速度不能为0。#include #include int main(){ int T; scanf("%d",&T); for (int t = 1 ; t <= T
2014-10-18 12:28:55 1021
原创 UVa 353 - Pesky Palindromes
题目:统计一个串的回文子串的个数。分析:dp,暴力。由于数据较小,直接暴力求解即可。说明:(UVa终于进入前800了)。#include #include #include #include using namespace std;char str[82];char ans[3200][82];int main(){ while (~scanf("%s",str
2014-10-16 22:36:40 1698
原创 UVa 740 - Baudot Data Communication Code
题目:现有一种编码,他们在shift键处于按下和升起时,对应两种编码,其中有2个编码对应shift操作。 给你对应的编码值,求其对应的字符串。分析:模拟,字符串。简单题,标记shift的升降分类处理即可。说明:数据量较小,直接扫描查询即可。#include #include #include #include using namespace st
2014-10-15 16:18:39 972
原创 UVa 10465 - Homer Simpson
题目:有两种食物(数量无限)是Simpson喜欢的,每种食物都需要一个进食时间,现在他有时间t, 问能最多吃多少个食物,时间尽量用完,用不完求最小浪费时间情况下的最多能吃的实物数量。分析:dp,完全背包。放满体积的背包,初始化除了f(0),均为 -oo,然后取正值即可。说明:又见dp。#include #include #include #inclu
2014-10-15 16:09:51 1389
原创 UVa 11233 - Deli Deli
题目:求所给单词的负数形式。分析:模拟。直接按章题意分情况求解即可。说明:按语法也可以(⊙_⊙)。#include #include #include #include using namespace std;char word[22][22],maps[22][22],text[25];int cmp(char *s, char c){ for (int i =
2014-10-15 15:57:20 1664
原创 UVa 11069 - A Graph Problem
题目:给你一个集合{1,2,..,n},计算子集的个数,子集的元素不能相邻且不能再插入元素。分析:dp,动态规划。相邻元素间只能相差3或者2。 动态方程:f(k)= f(k-2)+ f(k-3);{ f(k)为以k为结束元素的集合个数 }; f(n)+ f(n-1)即为结果。说明:Fib类似物。#include #i
2014-10-14 23:54:34 1289
原创 UVa 637 - Booklet Printing
题目:模拟输出n页书的装订打印状态。分析:模拟。页数为(n+3)/ 4,只有n不超过半篇时会输出半篇。说明:好多以前做过的题目(⊙_⊙)。#include #include #include int book[30][4];int main(){ int n; while (~scanf("%d",&n) && n) { int page = (n+3)/4;
2014-10-14 23:12:11 1589
原创 UVa 10297 - Beavergnaw
题目:如果一个底边与高为D的圆柱切去一部分使得,剩下的中心是底边与高为d的圆柱, 和以他们底面为上下地面的圆锥台,已知切去的体积,求d。分析:二分,计算几何。圆锥台体积公式:π*(r^2+r*R+R^2)*h / 3。说明:可以直接用公式求指数计算。#include #include #include #include using namespa
2014-10-14 12:39:19 1362
原创 UVa 10223 - How many nodes ?
题目:气你一个整数n,问多少个节点可以生成n个不同的二叉树。分析:数论,卡特兰数。根据定义即可。说明:#include #include using namespace std;long long Cat[100];int main(){ Cat[0] = 1LL; for (int i = 1 ; i < 20 ; ++ i) Cat[i] = Cat[i
2014-10-14 08:58:09 970
原创 UVa 11734 - Big Number of Teams will Solve This
题目:一个ACM的判题的小程序,两组字符全相同,为正确,比标准多输出空格,为格式错误,其他为错误。分析:字符串。从前向后扫描,如果两字符不同,若A串当前字符不是空格,则错误; 若是空格,则一定不会是正确,滤过空格,看剩余部分,如果剩下字符相同则格式错误; 否则,一定错误;说明:注意结束位置的空格。想起几年前开发自己OJ的日子了
2014-10-12 22:41:53 1091
原创 UVa 12403 - Save Setu
题目:有两种操作:1.当前数值增加;2.输出当前数值。分析:简单题。模拟即可。说明:A+B。#include #include #include using namespace std;string s;int main(){ int n,sum,add; while (cin >> n) { sum = 0; while (n --) { cin
2014-10-12 22:19:33 862
原创 UVa 10701 - Pre, in and post
题目:已知树的前根序,中根序遍历转化成后根序遍历。分析:递归,DS。根据定义递归求解即可。 前根序:根,左子树,右子树; 中根序:左子树,根,右子树; 每次,找到根、左子树、右子树,然后分别递归左子树,右子树,输出根即可。说明:当时进入ACM实验室的第一个题目。#include #include
2014-10-12 01:42:25 2257
SOFA: A Multi-Model Framework for Interactive Physical Simulation
2018-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人