其他
99度灰
这个作者很懒,什么都没留下…
展开
-
HDU 1711 - Number Sequence
题目大意:序列a,序列b,判断能否在序列a中找到序列b,如果能输出位置,不能输出-1。解题思路:kmp裸题ac代码:#include #define N 1000005using namespace std;int n, m, t, T[N], S[N], Next[N];void get_Next(int a[], int len, int Next[]){ int i原创 2017-12-23 09:18:42 · 358 阅读 · 0 评论 -
HDU 1166 - 敌兵布阵
题目大意:中文题解题思路:因为数据量比较大, 普通暴力算法肯定会超时,采用线段树或者树状数组,这里用树状数组解答。树状数组的基本入门我是看了这个博客的还算挺清楚的,一个地方可能是我理解偏差,lowbit(x)计算的2*k代表的应该是,二进制下从最低位往最高位找出现的第一个1代表的数的大小。看过以后就很清晰了ac代码:#include #include using namespace原创 2017-12-01 21:07:20 · 280 阅读 · 0 评论 -
HDU 5914 - Triangle
题目大意:有t个样例,每个样例输入一个n,表示有编号1~n根木棒,每根木棒长度与编号相同,问最少去掉几根木棒能使得剩余的木棒不能组成三角形。解题思路:斐波那契数列,数列中任意取三根都构不成三角形,根据其定义公式,已经构成三角形的条件可证。且这就是剩余最优的情况。例如:(3:1,2,3其中1,2,3都在数列内,所以为3-3=0;7:其中1,2,3,5都在数列内,所以7-4=3),打表做。ac原创 2017-11-30 19:37:18 · 310 阅读 · 0 评论 -
UVA 299 - Train Swapping
题目大意:判断铁轨排序称从小到大需要几次。解题思路:冒泡排序排几次ac代码:#include using namespace std;int main(){ int n, m, a[1000], temp, sum; cin >> n; while (n--){ cin >> m; sum = 0; for (int i=0; i<m; i++)原创 2017-09-01 19:53:45 · 294 阅读 · 0 评论 -
UVA 10785 - The Mad Numerologist
题目大意:转换个意思,大概是这样的。m个样例。给定元音辅音的价值。每个样例输入n,输出长度为n的最小价值的组成字符串。其中奇数位为元音,一个元音最多用21次,偶数位为辅音,一个辅音最多用5次。奇偶位可以用的字母,分别讨论,都是从小价值到高价值。相同价值,从上往下。解题思路:打表,将元音按价值排序到105长度的字符串。辅音按优先级为(价值 > 上下顺序)排序到105长度的字符串。定义两个字符原创 2017-09-03 17:49:56 · 250 阅读 · 0 评论 -
HDU 1213 - How Many Tables
题目大意:邀请n个人,要几张桌子,桌子特别大,多少人都坐的过。同一张桌子必须都是朋友,朋友的朋友也是朋友。解题思路:与HDU1232几乎是一样的。ac代码:#include #include using namespace std;int t, n, m, pre[1005], t1, t2;set int>se;int find(int x){ int r=x原创 2017-09-06 15:52:29 · 271 阅读 · 0 评论 -
POJ 1182 - 食物链
题目大意:中文题。解题思路:这题只有一个样例,如果按文件结束跳出循环的话就WA。做法是这样的将每只动物定义为一个结构体,结构体包括了此动物的上级,以及与上级的关系(0:同类,1:被吃,2:吃上级)。初始时,所有动物的上级是自身,与上级都是同类。前两个条件很容易判断不说了,最后一个条件与前面的关系有矛盾才是重点。有矛盾的情况分两种判断,一:两动物归为同类时有矛盾;如果两只动物的最上级原创 2017-09-06 15:53:09 · 257 阅读 · 0 评论 -
UVA 10881 - Piotr‘s Ants
题目大意:一根L长的木板上有n只蚂蚁,每只蚂蚁初始有一个朝向,当两只蚂蚁相遇,会掉头走。求走了T步以后所有蚂蚁的状况。解题思路:每只蚂蚁相遇后,相当于对穿过,只是对穿过的蚂蚁不是原来那只。但整个图所有蚂蚁的位置就是看作对穿过求得的。只是最初蚂蚁的相对位置与最后蚂蚁的相对位置的一样的,因为相遇就掉头,所以不会改变蚂蚁的相对位置。就是要求初始相对位置。。。ac代码:#include原创 2017-09-06 15:48:42 · 268 阅读 · 0 评论 -
HDU 1325 - Is It A Tree?
题目大意:判断根据关系能否建成一棵树。解题思路:,与HDU1272一致,就改动一下输出内容,因为一棵树的子节点不可能有多个父节点,一个集合的最高级就默认为树的根,如果有多个集合或其中有节点的关系之前被确认过,也就是已经成为某个节点的子节点以后就不能在成为其他的子节点。ac代码:#include #include using namespace std;int flag,原创 2017-09-06 15:54:54 · 286 阅读 · 0 评论 -
HDU 1829 - A Bug‘s Life
题目大意:有n只虫子,m对情侣,问其中是否有同性恋,一般虫子异性恋。解题思路:与食物链那题有些相似,但又比那题简单许多。因为只有两种关系了,0为同性,1为异性,所以查找和合并时的关系变更尝试推一下就出来了。具体的详讲看POJ-1182ac代码:#include #include using namespace std;struct node{ int pre; int原创 2017-09-06 15:55:32 · 277 阅读 · 0 评论 -
UVA 10061 - How many zero‘s and how many digits ?
题目大意:输入n,m。求n!在m进制中末尾有几个零,以及为几位数。解题思路:林炜大佬打得代码。。。漂亮。n!在m进制有几位,卡精度,用斯特林公式wa了。用对数求,加上1e-9才过。对数求法是这样的。。。设结果为X位数,那么n!ac代码:#include #include #include using namespace std;int n, k, cnt, num, m原创 2017-09-06 15:43:04 · 303 阅读 · 0 评论 -
UVA 10392 - Factoring Large Numbers
题目大意:输入一个数,对这个数进行质因数分解。解题思路:范围从2到根号n,如果最后n没有除为1,说明还未算完,最后的n也为质因数。ac代码:#include #include using namespace std;long long n, d;int main(){ while (scanf("%lld", &n)!=EOF && n!=-1){ d = sq原创 2017-09-06 15:43:45 · 243 阅读 · 0 评论 -
UVA 10387 - Billiard
题目大意:一个台球桌,水平的为长板,长度为a,竖直的为宽板,长度为b,球从台球桌正中心以与水平线成angle角度,v速度打出,经过时间s后回到中心点,期间与宽板碰撞m次,与长板碰撞n次。输入a,b,s,m,n。求angle,v。解题思路:画图,就能发现,与长板碰撞一次,意味着球在竖直方向上运动了宽板的长度b,与横板碰撞一次,意味着球在水平方向上运动了长板的长度a。花为一条直线来描述球的总路原创 2017-09-06 15:44:15 · 300 阅读 · 0 评论 -
UVA 10112 - Myacm Triangles
题目大意:给出一系列点的坐标,找出三个点,使得这三个点连起来组成的三角形,不包含其他点。且这是能找到的面积最大的三角形。解题思路:最多15个点,直接三个循环暴力,主要是判断其他点是否在三角形内或三角形上,判断方法有挺多,什么有向法巴拉巴拉。我写了最好懂的,就是面积法。判断SΔABC是否等于SΔABP+SΔACP+SΔBCP。如果等于说明P在三角形内或三角形上。ac代码:#in原创 2017-09-06 15:45:54 · 240 阅读 · 0 评论 -
UVA 10344 - 23 out of 5
题目大意:输入五个数, 判断是否存在情况使得式子( ( a(1) o a(2) ) o a(3) ) o a(4) ) o4 a(5)等于23。五个数的任意排序,o为运算符‘+’,‘-’,或‘*’。解题思路:运算符的顺序用三进制来表示,五个数的全排序用next_permutation来计算。ac代码:#include #include #include using nam原创 2017-09-06 15:46:54 · 266 阅读 · 0 评论 -
UVA 131 - The Psychic Poker Player
题目大意:你手中有五张牌,桌上叠着五张牌,你有超能力,可以让任意张手中的牌与桌上的任意张交换,使得交换以后手中与桌上依旧五张牌。问你交换的最好结果为何种牌?解题思路:德州扑克的规则,又有一些细节不同。规则如下:1.straight-flush:同花顺,牌面为T(10) - A,这里不论花色是否相同;2.four-of-a-kind:四条,牌面有4个相同的值;3.原创 2017-09-06 15:42:34 · 298 阅读 · 0 评论 -
HDU 1078 - FatMouse and Cheese
题目大意:n*n的地图上,每个位置都有奶酪,一直老鼠从(0,0)位置出发,每次最多可以笔直的横或竖走k步。每走到格子他就会将格子上的奶酪吃掉,下一次就要吃更多的奶酪。问他最多能吃多少奶酪。解题思路:类似POJ1088的滑雪问题。也是每次只能往大走,不过这题,只从(0,0)出发,就可以。每次走的可以为1到k的笔直路。每次累加的是分数。ac代码:#include #include原创 2017-09-06 15:37:45 · 276 阅读 · 0 评论 -
CodeForces 567B - Berland National Library
题目大意:一个图书馆入口系统,可以识别进入人的id以及离开人的id。现在一段记录‘+’表示进入,‘-’表示离开,后面跟着id。问根据这个记录,推出图书馆最少可以容纳多少人。解题思路:初始容纳人数为0,如果在累积进入n人之前没有n个人离开图书馆,则图书馆的容纳人数要加一。如果进入累积n人之前有n个人离开,则容纳人数不加一。如果有人离开,判断离开的人是否之前进入的,如果是,说明不用额外记录,否原创 2017-09-06 15:59:18 · 287 阅读 · 0 评论 -
HDU 3421 - Max Sum II
题目大意:输入n个样例,每个样例有m个数,问需要分几个子序列才能将所有正数取出来,以及所有正数的和。解题思路:输入一个数,如果为正数就累加,次数增加1。并标记使之后的正数时不增加一,如果为负数,标记取消。ac代码:#include using namespace std;int main(){ int n, m, sum, a, cnt, flag, cou=1; s原创 2017-09-06 15:31:53 · 365 阅读 · 0 评论 -
HDU 1029 - Ignatius and the Princess IV
题目大意:输入一个奇数N,接着输入N个数,找出其中出现个数为(N+1)/2的数。解题思路:因为出现次数为奇数+1的一半,也就是出现次数大于N/2的数。用map存下出现的数以及出现的次数。ac代码:#include #include using namespace std;map int, int>ma;int n, t, re;int main(){ while原创 2017-09-06 15:22:45 · 272 阅读 · 0 评论 -
UVA 639 - Don‘t Get Rooked
题目大意:棋盘上放棋子,要求这颗棋子的上下左右不能有其他棋子,两枚棋子之间有墙隔开,则可以。给定棋盘,问最多可以放几枚棋子。解题思路:生成子集的构造法,将所有情况枚举,然后判断是否成立,最大4*4的棋盘。2^16可以的。ac代码:#include #include #include using namespace std;int n, re, a[20], x[10],原创 2017-09-06 15:31:07 · 265 阅读 · 0 评论 -
UVA 167 - The Sultan‘s Successors
题目大意:八皇后问题,每个格子有分数,皇后放置在格子上则得到分数,问怎么放置八皇后总分数最高。解题思路:回溯,小紫里讲的挺清楚的,只要在达成条件时,将八个位置的分数加起来最后得到最高分输出就可以了。ac代码:#include using namespace std;int n, m, pos[8], sum, score[10][10];void solve(int cu原创 2017-09-06 15:29:39 · 298 阅读 · 0 评论 -
HDU 1027 - Ignatius and the Princess II
题目大意:给出N,M。1~N的序列最小的是,1 2 3 4 ...N-1 N。第二小的是 1 2 3 4 ... N N-1。让你求出第M小的序列。解题思路:如果有看过一个关于将全排列next_permutation的原理的博客,就会想到这就是全排列的方式,从最后开始,移动位,让这个数越来越变大。所以就很简单了。ac代码:#include #include using na原创 2017-09-06 15:26:19 · 224 阅读 · 0 评论 -
POJ 1163 - The Triangle
题目大意:从第一行走到最后一行,走过的地方和就累计往下。问最大的结果为多少。解题思路:第一种dfs遍历超时,第二种dfs中将较大的值保存,第三种从底下往上走。关于这题是在博客看的http://blog.csdn.net/baidu_28312631/article/details/47418773第二种ac代码:#include #include using nam原创 2017-09-06 15:21:42 · 267 阅读 · 0 评论 -
UVA 10115 - Automatic Editing
题目大意:给出n个短句及其对应要改变后的短句。给出一句话,按顺序考虑所有短句以后,改变成的句子。解题思路:句子从开头开始读取第一个短句的字符。每个位置开头都要试一次或者从字母与短句首字母一致开始试读短句长度的字符。如果读出来的字符串与短句一致。则改变句子。句子再从头开始,直到没有改变时,开始读第二个短句的字符。循环比较烦。。。ac代码:#include #include u原创 2017-09-06 15:20:39 · 297 阅读 · 0 评论 -
UVA 11205 - The broken pedometer
题目大意:题中给了一种例子,LED的七根灯管不同的开关方式显示0到9的数字。其中可以去掉第六根灯管(可能去掉其他也可以,没细究)也就是只要六根灯管就可以区分所有的数字。简单理解可以认为是7位的一个二进制数,每个字符有不同的二进制数。开为1,关为0。最少需要几个位可以区分所有字符。输入r,l。r代表几位的二进制,l代表有几个字符。解题思路:用子集生成的增量构造法。这是一个可以求一个集合所有集原创 2017-09-06 15:20:09 · 305 阅读 · 0 评论 -
UVA 644 - Immediate Decodability
题目大意:输入一些号码,判断是否有一些号码为其他号码的子号码(一个号码的前面子号码长度的内容为子号码)解题思路:两个循环,全部都互相对比一次。两个号码可能一样长。ac代码:#include #include using namespace std;int cnt, coun=1, len1, len2, jud;char a[1005][1005], c[1005];原创 2017-09-06 15:19:42 · 297 阅读 · 0 评论 -
UVA 10815 - Andy‘s First Dictionary
题目大意:输入一些句子,将其中的单词存入字典,用EOF跳出循环,最后将所有单词按字典序输出。解题思路:将单词分割开的不一定是空格,可能是其他非字母字符。输入一行,然后读单词存入set。最后用迭代器输出。ac代码:#include #include #include using namespace std;set string>se;set string>::itera原创 2017-09-06 15:19:02 · 276 阅读 · 0 评论 -
UVA 10878 - Decode the tape
题目大意:找规律,图像对应二进制,ASCII对应的字符,只有一个样例。解题思路:o为1,空格为0,‘,‘去掉不考虑,跳出循环的条件为第一行输入的字符串。ac代码:#include #include #include using namespace std;int len, sum, cnt=0;char a[5005], c[5005], b[5005];int m原创 2017-09-06 15:18:35 · 242 阅读 · 0 评论 -
UVA 409 - Excuses, Excuses!
题目大意:输入n个借口单词,m个句子,如果句子中的借口单词(不考虑大小写)越多,越有说服力。如果一样多,同样的说服力。句子中由非字母字符,将单词隔开。输出最有说服力的句子。输入最有说服力的有多个,按任意顺序输出。解题思路:将借口单词存入set,每个句子都将其中的每个单词进行寻找,找到,则在句子对应的数组里加一。最后循环找到最多个数。ac代码:#include #include原创 2017-09-06 15:18:07 · 289 阅读 · 0 评论 -
UVA 10177 - (2/3/4)-D Sqr/Rects/Cubes/Boxes?
题目大意:输入N,求N为边长的正方形中,以一单位长度画线,有多少的正方形,多少个长方形,N为边长的正方体中,以一单位长度画线,有多少个正方体,多少个长方体,N为变成的四维图像上,有多少个正方超体,长方超体。解题思路:正方的数量为1~N的pow(i,维度)之和。矩形的数量为pow((N*N-1)/2, 维度+1)。长方的数量为正方-矩形。ac代码:#include #inclu原创 2017-09-06 15:17:36 · 366 阅读 · 0 评论 -
UVA 10014 - Simple calculations
题目大意:给出公式 ai =(ai−1 + ai+1)/2− ci。输入n,a0,an+1,以及c1...cn。求a1。解题思路:公式推导。转自支书题解。规律:先将这些累加2a1= a0+ a2- 2c12a2= a1+ a3- 2c22a3= a2+ a4- 2c3…… …… ……2an= an-1+ an+1- 2原创 2017-09-06 15:16:57 · 323 阅读 · 0 评论 -
UVA 729 - The Hamming Distance Problem
题目大意:两个由01组成的字符串之间的汉明距离为两个字符串异或结果有几个1。输出字符串长度L以及汉明距离H,求与该长度为L字符全为0的字符串的汉明距离为H的所有字符串,字典次序列出全部。解题思路:将第一个汉明距离为H的字符串读入即除了最后汉明距离长度的为1外,其他为0,然后用next_permutation列出所有。ac代码:#include #include #inclu原创 2017-09-06 15:16:10 · 331 阅读 · 0 评论 -
UVA 725 - Division
题目大意:输入n,如果存在输出形如 abcde / fghij = n的形式。abcdefghij是0~9的某种排序。存在前导0。不存在则输出提示。解题思路:枚举fghij。求出abcde,是否没有重复的,且数的位数没错。要做一些限定,否则会超时。ac代码:#include #include using namespace std;int n, temp, sum, co原创 2017-09-06 14:58:15 · 274 阅读 · 0 评论 -
UVA 10167 - Birthday Cake
题目大意:蛋糕上有2*N个樱桃,切一刀,使得蛋糕两半的樱桃个数相同,不能切到樱桃。解题思路:两个循环,暴力解决。ac代码:#include using namespace std;int n, x[105], y[105], jud, cnt1, cnt2;int main(){ while (scanf("%d", &n)!=EOF && n){ for (原创 2017-09-06 15:10:35 · 257 阅读 · 0 评论 -
UVA 10361 - Automatic Poetry
题目大意:输入两串字符串,将第一串去掉“”内容对换去掉“解题思路:将第一个与第二个内以及第二个ac代码:#include #include using namespace std;int n, len, cnt;char a[1005], b[1005], t1[2][105], t2[2][105];int main(){ scanf("%d", &n);原创 2017-09-06 15:08:35 · 292 阅读 · 0 评论 -
UVA 10790 - How Many Points of Intersection?
题目大意:上面n个点,下面m个点,求上下之间两两相连最多几个交点。解题思路:上两个点,下两个点的连线可有一个交点,不同的上下点,得到的交点不同,上面取两个点的取法有n*(n-1)/2,下面取两个点的取法有m*(m-1)/2。要用long long。ac代码:#include using namespace std;long long n, m;int cnt=1;int原创 2017-09-06 15:06:41 · 267 阅读 · 0 评论 -
UVA 350 - Pseudo-Random Numbers
题目大意:输入Z, I, M, L,根据题目给的伪随机数公式,先输入的L作为第一次的随机数,(Z × L + I) % M 作为下一次的随机数L,求伪随机数的周期,即碰到重复的随机数。解题思路:直接循环内计算,第一个随机数L不一定在伪随机数的周期内。所以一个标记数组,既是记录是否出现过,也是记录出现在第几次。ac代码:#include #include using nam原创 2017-09-06 15:05:11 · 328 阅读 · 0 评论 -
UVA 107 - The Cat in the Hat
题目大意:有一只猫高H,它有帽子,帽子里有N只高H/(N+1)小猫,N只小猫也有帽子,帽子里也有N只高H/(N+1)^2小猫。当猫高1时,它没有帽子,它要工作打扫卫生。告诉你,第一支猫的高度,以及打扫卫生的有几只猫,求不工作的猫有几只,不工作的猫叠起来有多高。解题思路:猫的高度:H H/(N+1) H/(N+1)^2 ... H/(N+1)^k = 1猫有几只:原创 2017-09-06 15:04:39 · 466 阅读 · 0 评论 -
UVA 10010 - Where‘s Waldorf?
题目大意:在字符串图里,找出名字的位置,名字可以往八个方向找。不区分大小写。解题思路:方向数组来移动,先将所有字符串改为小写,输入名字也改为小写。在字符串图中查到名字首字符就进去函数,往八个方向尝试能否得到名字。ac代码:#include #include using namespace std;int dx[8]={-1,1,0,0,-1,-1,1,1}, dy[8]=原创 2017-09-06 15:03:27 · 286 阅读 · 0 评论