![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治+二分
细雨欣然
孤单是一个人的狂欢
展开
-
NOIP2013提高组 火柴排队 (逆序对+特殊映射)
这道题题目十分吓人,但其实就是要将两个数组中第i大的排在一起就好了。 所以我们的问题就变成了变成上述情况要交换多少次。 这里我的方法是:用c[i];来表示b中i这个位置的数需要匹配的a中数的位置。(a数组不动)。 这样仔细一想就会发现次数其实就是c中的逆序对数。 然后就是用二分求逆序对了。 详细代码如下:#include<cstdio> #include<cstdlib> #include原创 2016-08-01 17:06:26 · 278 阅读 · 0 评论 -
NOIP2011提高组 聪明的质检员
这道题很明显要用二分猜答案,猜w的值,再来check。这里我用的前缀和的方法来check,求出前i个大于w 的个数和价值和,然后枚举每一个区间,算就好了。 注:要注意用longlong(考试的时候我就是这个错了)。 具体程序如下:#include<cstdio> #include<cstdlib> #include<iostream> #include<cstring> #include<alg原创 2016-08-01 12:02:52 · 313 阅读 · 0 评论 -
NOIP2011普及组 瑞士轮
这道题用暴力其实可以得很多分(感觉70都没问题),但正解还是要用归并排序,每次把队列分成输的和赢得2个队列(看到数据给个2*n才想到的),因为每个队列中本来的顺序不会变,所以直接比较就可以了(排序的时间复杂度O(2*n)。详见代码:#include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #include<cs原创 2016-07-26 09:49:48 · 413 阅读 · 0 评论 -
【复赛模拟试题】求和
【问题描述】 计算 1^b+2^b+…+a^b 的和除以 10000 的余数;【输入格式】 第一行一个整数N,表示有N组测试数据; 接下来N行,每行包含两个正整数a和b。【输出格式】 N行,对应输入的答案【输入样例】 1 2 3【输出样例】 9【数据范围】 30%的数据满足:1<=N<=10,a,b<=1000 100%的数据满足:1<=N<=100,a,b<=10原创 2016-07-25 11:32:59 · 1379 阅读 · 2 评论 -
不相交弦
2860【问题描述】 圆周上有N个点。连接任意多条(可能是0条)不相交的弦(共用端点也算相交)共有多少种方案?【输入格式】 一个整数N,表示圆上点的数目【输出格式】 一个整数,表示方案数 mod 12345 的结果【输入样例】 4【输出样例】 9 【样例解释】 时间限制:1秒 内存限制:64M【数据范围】 n<=1000此题就是一道卡特兰数的题,考虑一条边的连法,这样就分成原创 2016-08-06 17:22:42 · 2192 阅读 · 0 评论 -
BZOJ2756 【scoi2012】奇怪的游戏(二分+网络流)
时间限制:1秒 内存限制:64M 【问题描述】 Blinker最近喜欢上一个奇怪的游戏。这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数。每次 Blinker 会选择两个相邻的格子,并使这两个数都加上1。 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1。 【输入格式】 输入的第一行是一个整数T,表示输入数据有T轮游戏组成。原创 2017-03-15 18:04:09 · 207 阅读 · 0 评论