摘要: 题意:要用一个有序的序列生成给定序列,操作有两种,一是交换前两个元素,二是把第一个元素移动到最后去。思路有两种:1.映射,把给定序列映射成有序的序列,然后按照同样的替换规则把有序的序列映射掉,然后就可以排序啦。具体解释可以看SRM 664的C题2.逆向思考,把给定序列变成有序,操作相应变化一下,最后... 阅读全文
posted @ 2015-08-03 23:50 陈瑞宇 阅读(585) 评论(0) 推荐(0) 编辑
摘要: 题意:给一个1~n排列,1using namespace std;const int maxn = 1e4+5;int a[maxn],pos[maxn];inline void exchange(int s1,int s2){ int len = s2 -s1; for(int i =... 阅读全文
posted @ 2015-08-03 20:41 陈瑞宇 阅读(332) 评论(0) 推荐(0) 编辑
摘要: 用set,保存当前区间出现过的数字,如果下一个数字没有出现过,加入,否则删掉左端点,直到没有重复为止#includeusing namespace std;const int maxn = 1e6+2;int A[maxn];int main(){ int T; scanf("%d",&T);... 阅读全文
posted @ 2015-08-03 17:12 陈瑞宇 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 著名的折纸问题:给你一张很大的纸,对折以后再对折,再对折……每次对折都是从右往左折,因此在折了很多次以后,原先的大纸会变成一个窄窄的纸条。现在把这个纸条沿着折纸的痕迹打开,每次都只打开“一半”,即把每个痕迹做成一个直角,那么从纸的一端沿着和纸面平行的方向看过去,会看到一条美妙的曲线。就是一个分形,规... 阅读全文
posted @ 2015-08-03 16:41 陈瑞宇 阅读(1339) 评论(0) 推荐(1) 编辑
摘要: 题意:给你一个n位整数,让你删掉d个数字,剩下的数字要尽量大。题解:因为最后数字位数是确定的,而且低位数字对答案的贡献是一定不及高位数字的,所以优先选择选最大且最靠左边的数字,但是有一个限制,选完这个数字以后右边剩下的数字要保证足够接下来的选择,所以想到了优先队列,记录一个信息,选的数字所在的位置,... 阅读全文
posted @ 2015-08-03 11:26 陈瑞宇 阅读(636) 评论(0) 推荐(0) 编辑