-
题目链接 题意:给出一个字符串,仅由小写字母组成。现在给出q个操作,每个操作l,r,k三个参数,k=1表示把区间[l,r]变为升序排列,k=0表示把区间[l,r]变为降序排列。 思路:首先,最重要的一点是,由于只有26个字母,联想到计数排序。 对于字符集数目比较小情况,一定要想到计数排序。 对于字符集数目比较小情况,一定要想到计数排序。 对于字符集数目比较小情况,一定要想到计数排序。 那么我们回顾计数排序,不妨考虑升序排列的情况,是怎么做的呢? 做法是统计该区间中每种字符的个数,然后按照字符的大小,从小到大在区间上从左到右得放置每种字符。 大概是这样子: for(int j=x;j<=y;j++) cnt[s[j] - …
Read More -
hdu1280 题意:给出n(3000)个数,两两求和,输出最大的m(5000)个和。 思路:由于数据有限,想到计数排序。。。以及,m个可能刚好某个数据没有全部输出,要在while里判断一下。。 。。。好好的人。。怎么开始刷水了。。。。。 其实是因为最近在看.suffix array...然后里面涉及到了radix sort..算法课的时候到是写过。。。不过快忘了orz。。所以打算找几道题目。。。? 然而这是计数排序不是基数排序啊摔/! /* *********************************************** Author :111qqz Created Time :2016年07月30日 星期六 17 …
Read More