ACM杂题
倚剑笑紅尘
教练,我想学kaldi!
展开
-
poj 2559 Largest Rectangle in a Histogram(单调栈)
单调栈,顾名思义就是说栈内的元素,按照某种方式排序下,必须是单调的。如果新入栈的元素破坏了单调性,就弹出栈内元素,知道满足单调性。它可以很方便地求出某个数的左边或者右边第一个比它大或者小的元素,而且总时间复杂度O(N)。1. 题目大意:链接给出一个柱形统计图(histogram), 它的每个项目的宽度是1, 高度和具体问题有关。 现在编程求出在这个柱形图中的最大面积的长方形原创 2017-08-21 20:11:01 · 296 阅读 · 0 评论 -
hdu3410 Passing the Message 单调栈
题目链接:hdu3410题目大意:现在有n个人站成一行,告诉你每个人的身高。现在每个人都要找到在他左边,比他矮的人中最高的人的位置。同时也要找到,在他右边比他矮的人中最高的人的位置。注意由于他们是站成一行的,所以他们不能越过比他们高的人去看后面的人。也就是说,他只能看到他本人和他的左边(或右边)第一个比他高的人之间的那些人。请输出每个人左边比他矮的人中最高的人的位置原创 2017-08-21 21:41:54 · 251 阅读 · 0 评论 -
Gym - 101190A Abbreviation(string字符串 模拟)
题目链接:点击打开链接题目大意:就是给你几行字符串,将某些连续的单词缩写,连续缩写的的单词有以下几个要求:1.单词需要第一位大写,后几位均为小写。2.需要至少两个符合条件的单词才可以缩写3.两个符合的单词之间只能隔一个空格。如果隔了两个及两个以上空格或者标点符号的话,均不满足.题目思路:此题强烈建议用string来做,因为string可以一位一位的判断,直接相加。用ch原创 2017-08-28 11:53:15 · 673 阅读 · 0 评论 -
hdu6033 多校联赛(1)A 数学水题
题目链接:点击打开链接题意:给一个数m,求一个数k满足10^k小于等于2^m-1。思路:先了解几个数学知识:(logn m) = (logx m)/(logx n)(logn m) = 1/(logm n)log(N*M) = logN + logMcmath头文件中的log(x)是以e为底x为真数的对数函数(也有log2(x), log10(x)),即数学中的ln原创 2018-01-12 21:14:00 · 164 阅读 · 0 评论 -
HDU 6034(字符串相加 每个字母代表一个数字 算贡献度 贪心)
题目链接;题目传送门题目大意:给出的字符串,每个字符建立一种与0-25的对应关系。然后每个字符串看成是一个26进制的数。问能获得的数的总和的最大值。(最后对1e9+7取模)。(不能有前导零 即字符串长度大于1,那么第一位不能为0)思路:所有的字符串,无非就是每个字符的贡献乘上赋予的映射的权值。所以我们可以按照贡献排序。贡献其实就是跟位置有关的系数,我们把对应的位置记录下来,转换成一个2原创 2018-01-14 14:26:17 · 508 阅读 · 0 评论 -
C. Party Lemonade(DP,贪心,数位)
题目链接:点击打开链接题目大意:有n种不同规格的饮料,容量分别为L,并给出每种饮料的价格。现在题目要求至少购买 l升的饮料,最少需要多少钱。思路:首先需要对价格进行一个预处理,如果val[i]*2<val[i+1],那么是没有意义的去购买第i+1种饮料,因为显然购买两瓶第i种的饮料更加的实惠,所以我可以用两瓶第i种饮料的价格和来代替第i+1种饮料的价格。因此,在进行预处理之后,他的性价比呈现...原创 2018-02-27 16:01:47 · 303 阅读 · 0 评论 -
Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined) C. Travelling Salesman and Specia
题目链接:点击打开链接题目大意:给出一个二进制数m,这个二进制数中1的个数为n,将m转变为n记做操作一次,知道将m转变为1结束,操作的总次数记为m的步长。现在给出一个数n,和步长k,求小于等于n的数中有多少个数的步长为k。因为个数过多,需要模109 + 7.思路:2的1000次方是一个很大的数,但是只要经过一次操作之后,就会变成一个小于等于1000的数,所以我们可以先预处理出来所有小于等于1000...原创 2018-03-01 17:22:12 · 155 阅读 · 0 评论 -
CF758 C. Unfair Poll (模拟)
题目链接:点击打开链接题目大意:有n行m列学生,有一位老师在课上会问k个问题,在行上,是按照1,2。。。。n-1,n,n-1.。。。1这样的顺序提问,求学生当中回答问题个数最多和最少的个数,以及在第x行第y位的同学回答的问题数。思路:当n>1时,1,2,……,n-1,n,n-1,……3,2为一个循环节,即有2*n-2行,其中每个循环节第1行以及第n行都只回答一次,其他都回答了两次,然后直接用...原创 2018-03-03 14:18:24 · 792 阅读 · 0 评论