![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Acwing 算法题
短尾黑猫
这个作者很懒,什么都没留下…
展开
-
双栈排序(栈+二分图)
牛客题面:双栈排序 题面大意: 给定一个整数 nnn 和一个初始序列 aaa,其中序列 aaa 的值为[1,n]不重复的正整数。 现在有以下四个操作,希望能够凭借这四个操作使得序列 aaa 成为一个升序的序列。 操作a:如果输入序列不为空,将第一个元素压入栈S1 操作b:如果栈S1不为空,将S1栈顶元素弹出至输出序列 操作c:如果输入序列不为空,将第一个元素压入栈S2 操作d:如果栈S2不为空,将S2栈顶元素弹出至输出序列 让我们判断,初始序列 aaa 是否能够通过以上四个操作得到升序序列,如果不能输出原创 2020-12-04 12:29:30 · 733 阅读 · 0 评论 -
火车进出栈序列问题(Catalan数+高精度压位)
题面:Acwing 130 思路 先假设每一个入栈的操作为 111,出栈的操作为 000。这样就抽象出一个 nnn 个 111 和 nnn 个 000 的排列问题。 因为每次出栈操作都必须保证栈里有火车,所以入栈的次数一定都不少于出栈的次数(出栈次数包括当前出栈)。 于是有一个很强的性质: 序列任意前缀中的 111 的个数都不少于 000 的个数 于是该问题就转化成了 求第 nnn 项的卡特兰数,即 :C2nnn+1=(2n)!n!n!(n+1)\cfrac{C_{2n}^n}{n+1}=\cfrac{(2原创 2020-09-06 18:20:51 · 236 阅读 · 0 评论 -
【POJ 3045】Cow Acrobats(贪心)
题面:Cow Acrobats 题目大意 相当于有 nnn 头奶牛在叠罗汉。每头牛都有两个特质,一个是重量 www,一个是强壮度 sss。 每头牛都有一个崩溃风险,该风险等于在她上面的所有奶牛的总重量减去她本身的强壮度。所以每头牛都要找到合适自己的位置。 求:确定所有奶牛的位置,从而使任何奶牛中的最大风险最小。 思路 芜湖~~先贪心试一下。 将每头牛按照 w+sw+sw+s 从小到大排序,这样就得到正确的答案啦哈哈哈哈哈哈。 贪心证明: 设最优解为 real_ansreal\_ansreal_ans,自己方原创 2020-09-02 23:36:44 · 456 阅读 · 0 评论 -
NUMBER BASE CONVERSION(高精度模拟短除法+思维)
题面:POJ 1220 题目大意 给定两个整数 a,ba,ba,b,且 0<a,b<620<a,b<620<a,b<62,并给出一个 aaa 进制的数。 要我们将该数转化成 bbb 进制的数。 思路 高精度模拟短除法。 第一反应会想到高精度先将 aaa 进制转化成 101010 进制数,最后转化成 bbb 进制数,其中过程要不断求余。 这里其实只要转变一下思路,让被除数上的每一位先加上之前的余数乘以 aaa 进制数,再去除以除数 bbb ,最后得出的数就是 aaa 进制原创 2020-09-02 16:16:21 · 328 阅读 · 0 评论 -
糖果传递(环形均分/中位数)
题面:糖果传递【Acwing】 思路 我们可以假定糖果是单向传递的,即都是逆时针(顺时针)传给某个孩子。 #mermaid-svg-waRziq1ZTt8vNIUH .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-waRziq1ZTt8vNIUH .label text{fill:#333}#mermaid-sv原创 2020-09-02 14:53:32 · 314 阅读 · 0 评论 -
CH0503 奇数码问题(逆序对)
题面:奇数码问题 思路: 找了好久,没有找到奇数码问题和 n∗mn*mn∗m 数码问题的详细证明。先记个结论。 奇数码游戏两个局面可达,当且仅当两个局面下网络中的数依次写成不含零的 111 到 n∗n−1n*n-1n∗n−1 的序列后,逆序对个数的奇偶性相同。 结论必要性证明:空格(即 000 )左右移动的时候,我们列出出来的序列是不变的;空格上(下)移动时,相当于某个数与它后(前)边 n−1n-1n−1 个数交换了位置,因为 n−1n-1n−1 是偶数,所以逆序对数的变化也是一个偶数。 拓展到 nnn 为原创 2020-08-08 11:00:02 · 306 阅读 · 0 评论 -
八数码问题(矩阵化字符串+BFS)
原题目:Acwing 八数码 题目描述: 在一个3×3的网格中,1~8这8个数字和一个“x”恰好不重不漏地分布在这3×3的网格中。 例如: 1 2 3 x 4 6 7 5 8 在游戏过程中,可以把“x”与其上、下、左、右四个方向之一的数字交换(如果存在)。 我们的目的是通过交换,使得网格变为如下排列(称为正确排列): 1 2 3 4 5 6 7 8 x 例如,示例中图形就可以通过让“x”先后与右、下、右三个方向的数字交换成功得到正确排列。 交换过程如下: 1 2 3 x 4 6 7 5 8 1 2 3 4原创 2020-05-25 22:46:49 · 180 阅读 · 0 评论