水题+思路+规律
文章平均质量分 58
clevermike
这个作者很懒,什么都没留下…
展开
-
UVa 10258 - Contest Scoreboard
还是改不了自己狂卡题的坏毛病 -_-,这回是卡输出上了这是一道比较简单的一道OJ比赛排行榜的模拟题,练代码能力,直接贴代码#include #include #include #include #include using namespace std;struct team{ int num;//记录该队的序号 int time;//用来原创 2012-08-21 16:17:20 · 1475 阅读 · 1 评论 -
URAL 1010 - Discrete Function
这是个什么题啊,F**K!答案一定是斜率最大的相邻两点!!(很容易想明白的,这里不给出了)#include #include double f[100005];double k(int a,int b){ return fabs((f[b]-f[a])/(double)(b-a));}int main(){ int n; scanf("%d",&n);原创 2013-08-02 17:16:26 · 909 阅读 · 0 评论 -
URAL 1117 - Hierarchy(递推或递归)
数据量不大,可以递推出所有1——2^k的结果,然后可以把过程分解首先找到比n小的最大的2^k,然后从2^k继续计算,2^k到n即可转化为1到n-2^k从i到j的时间可表示成从1到i的时间和从1到j的时间的差的绝对值。#include #define LL long longLL d[35];void init(){ d[1]=0; d[2]=0; fo原创 2013-08-02 13:58:35 · 778 阅读 · 0 评论 -
UVa 10254 - The Priest Mathematician (4柱汉诺塔)
4柱汉诺塔问题(大数运算处理)递推公式:f(1)=1, f(i)=min(2f(k)+2^(i-k)-1 ,1得到数列:1,3,5,9,13,17,25,33,41,49,65...规律:f(1)=1,之后每i个数增加2^(i-1),i为大于等于2的自然数列,用大数处理即可附代码:#include #include int d2[120][60];int hanoi[原创 2012-11-13 10:20:50 · 893 阅读 · 0 评论 -
UVa 10177 - (2/3/4)-D Sqr/Rects/Cubes/Boxes?
对于每个n所对应的6个数,有以下规律:a1=∑i^2(i=1…n);a2=(∑i(i=1…n))^2-a1;a3=∑i^3(i=1…n);a4=(∑i(i=1…n))^3-a3;a5=∑i^4(i=1…n);a6=(∑i(i=1…n))^4-a5;#include using namespace std;int main(){ int n;原创 2012-08-23 15:36:28 · 1128 阅读 · 0 评论 -
UVa 10050 - Hartals
题意很简单——一共m天,给出好多数a1,a2...在它们的倍数日罢工,但是周六周日不罢工,输出m天中罢工的天数思路:开个数组,模拟即可#include #include #include int main(){ int i,k,m,n,c,step,s,d[3700],count; scanf("%d",&c); while(c--)原创 2012-08-23 11:44:21 · 1028 阅读 · 0 评论 -
UVa 755 / POJ 1002 - 487-3279
本题需注意以下三点:1、读入的字符串可能包含多个“-”,如果开数组到10明显不够,尽量开到30以上2、只输出出现多于1次的电话号码3、没有符合条件的电话号码时要输出“No duplicates.”#include #include #include #include #include using namespace std;int原创 2012-08-21 10:48:24 · 1118 阅读 · 0 评论 -
UVa 10191 - Longest Nap
这个题有一个很坑的地方,就是日程表的顺序不一定是按时间排序,需要自己排序比较简单的模拟题,还是练代码能力#include #include #include using namespace std;typedef struct{ int h; int m;} t;t st[105],ed[105],k;typedef struct{原创 2012-08-21 16:38:37 · 771 阅读 · 0 评论 -
UVa 489 - Hangman Judge
这个题题意不容易理解,就是给你一个字符串,让你猜里面的字母,如果都猜对了,输出“You win.”,如果猜错7次及以上,输出“You lose.”,其他情况输出“You chickened out.”#include #include #include int main(){ char a[1000],b[1000]; int i,j,n,flag,coun原创 2012-08-23 10:07:52 · 1189 阅读 · 0 评论 -
UVa 350 - Pseudo-Random Numbers
题意:给出四个数Z,I,M,L,L=(Z*L+I)%M,直到得到一个原来出现过的L,该运算便开始循环,求出L的循环周期。我的思路:用一个数组保存L,每次遍历查找,为了增加效率,也可用哈希表查找#include #include using namespace std;int l[1000000];int main(){ int t,f,z,i,m,Ca原创 2012-08-24 09:13:02 · 885 阅读 · 0 评论 -
UVa 10004 - Bicoloring
图论啥也不会,纯粹的模拟,建了个矩阵,特判了几种情况,就AC了#include #include using namespace std;bool G[210][210];int main(){ int point,c,p; int color[210]; while(cin>>point && point) { cin>>原创 2012-08-21 11:14:29 · 543 阅读 · 0 评论 -
UVa 10815 - Andy's First Dictionary
比较简单的排序,由于单词数目很多,数组一定要开够#include #include #include #include #include using namespace std;int c_cmp(const void *_a,const void *_b){ char *a=(char *)_a; char *b=(char *)_b; re原创 2012-08-24 10:28:37 · 1106 阅读 · 0 评论 -
UVa 133 - The Dole Queue
环形队列问题,有N张牌,k表示从最左开始,往右每次隔k张牌取出一张,到最右边之后再回到最左边;m则是从最右边开始,往左每次隔m张牌取出一张,到最左边之后再回到最右边,直到把牌全部取出#include #include using namespace std;int queue[24];int main(){ int n,k,m; int front,rea原创 2012-08-24 11:03:08 · 2053 阅读 · 0 评论 -
UVa 120 - Stacks of Flapjacks
翻饼问题,注意一下几点:1、翻饼规则:只能从底层往上翻,也就是将前i个元素reverse,所以这里有个技巧,就是每次找到前i个元素里面最大的元素(假设是第m个),将其翻到第一层(前m个元素reverse),然后再翻到第i层(前i个元素reverse)(翻回来的时候一定是输出n-i,不是i)2、输出的时候一定要输出输入行#include #include原创 2012-08-23 10:49:08 · 1279 阅读 · 0 评论 -
UVa 409 - Excuses, Excuses!
题意:把包含单词数最多的句子找出来使用朴素匹配即可,注意大小写之间的转换,还有,样例后输出空行#include #include #include #include int main(){ int m,n,i,max,flag,count[1000],j,k,l,s=0; char word[1000][50],sen[1000][200],dd[10原创 2012-08-23 12:43:05 · 786 阅读 · 0 评论 -
UVa 10152 - ShellSort
题意:按顺序输出需要向上爬的乌龟如图,从下往上,依次输出“Sir Lancelot”,“Richard M. Nixon”,“Yertle”#include #include #include using namespace std;int main(){ int n,dd[300],c; char last[300][100],n原创 2012-08-23 16:02:16 · 1087 阅读 · 4 评论 -
UVa 846 - Steps
这个题的意思是——从A地到B地,第一步为1,最后一步为1,两步最大相差1,求最少的步数我的解法是——从两边开始,依次往中间逼近,然后特判逼近至中间部分出现的几种情况#include int main(){ int i,m,n,t,step,count; scanf("%d",&t); for(i=0; i<t; i++) {原创 2012-08-23 11:11:32 · 1211 阅读 · 0 评论 -
UVa 442 - Matrix Chain Multiplication
题意:A,B,C...表示矩阵,分别有row和col两个属性,计算表达式中需要进行乘法运算的次数假如A :50*10 , B :10*20, C :20*30,那么ABC需要进行乘法运算的次数为50*10*20+50*20*30;在表达式的处理上,一是要注意括号的处理,二是更新矩阵的row和col思路:先判断表达式是否能进行矩阵乘法运算(观察可得,从左往右直接比较即可,原创 2012-08-24 09:49:12 · 1169 阅读 · 0 评论 -
URAL 1007 - Code Words
简单题,用一个数组存储从i到n共有多少个1,方便移位的时候计数只有以下三种情况:1、l=n如果满足条件,直接输出,否则需要修改12、l=n+1需要删除1或03、l=n-1需要添加1或0这个题输入的时候要用scanf或cin(题目提示有空格或空行)#include #include char s[1050];int d[1050],cnt;int main(){原创 2013-08-02 16:11:24 · 829 阅读 · 0 评论