<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Anxdada -- 我等风来也等你]]></title><description><![CDATA[此博客不会维护了]]></description><link>https://blog.youkuaiyun.com/Anxdada</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Anxdada]]></copyright><item><title><![CDATA[网易互娱9.27号19点研发岗笔试题解]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/101629067</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/101629067</guid><author>Anxdada</author><pubDate>Sat, 28 Sep 2019 18:49:16 +0800</pubDate><description><![CDATA[一共四道编程. 前两道比较简单就不说了, 主要讲讲3，4道.
第三题: 开心消消乐
就是给你个M*N的二维矩阵, 每个块有一个颜色, 如果它的四周有相同的颜色那么就是连在一起的, 每次点击一个色块(要能点击消除尽量多的, 如果有数量相同的点击编号小的)进行消除, 然后消除后上面的掉下来, 如果某一列消失了, 右边的补过来.  问最后这个矩阵还剩多少个方块…
题解: 按照题意模拟即可, 每次dfs找...]]></description><category></category></item><item><title><![CDATA[阿拉伯数字金额转中文大写金额 base C++]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/100750420</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/100750420</guid><author>Anxdada</author><pubDate>Wed, 11 Sep 2019 21:47:12 +0800</pubDate><description><![CDATA[#include &lt;bits/stdc++.h&gt;
using namespace std;

string snum[] = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
string sdecimal[] = {"角", "分"};
string sinterval[] = {"元", "万", "亿", "万"};
stri...]]></description><category></category></item><item><title><![CDATA[LeetCode #4 寻找两个有序数组的中位数]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/99633781</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/99633781</guid><author>Anxdada</author><pubDate>Thu, 15 Aug 2019 14:20:24 +0800</pubDate><description><![CDATA[传送门
题意: 给定两个有序数组, 求中位数
思路: 中位数实际上就是找中间那最多两个数, 然后两个数组又是有序的, 所以可以转换成求两个有序数组合并后的第k大问题, 所以我们需要有一个函数求 对于两个有序数组求第k大, 那么如何最快的求第k大了，很明显我们在两个数组中同时各取一半的数字(k/2) , 如果第一个数组的这位置(起始位+k/2-1)的数字比第二个的小， 那么说明这第k大肯定是不在第一...]]></description><category></category></item><item><title><![CDATA[LeetCode 560 Subarray Sum Equals K【前缀和】]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/89441878</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/89441878</guid><author>Anxdada</author><pubDate>Sun, 21 Apr 2019 23:08:09 +0800</pubDate><description><![CDATA[传送门
题意: 有多少个连续子序列和为给定的k,
思路: 连续, 就要想到前缀和, 所以我们利用前缀和的性质, 相减等于中间的和, 那么直接记录每个前缀的次数, 然后累加即可, 注意这类问题 0 这个数都是会作为默认点加的! 不要忘了，想想也是对的
AC Code
class Solution {
public:
    int subarraySum(vector&lt;int&gt;&amp;...]]></description><category></category></item><item><title><![CDATA[LeetCode 1,167, 15, 18   (2, 3, 4)数之和相关问题]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/89441550</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/89441550</guid><author>Anxdada</author><pubDate>Sun, 21 Apr 2019 22:46:34 +0800</pubDate><description><![CDATA[传送门1
这类题都是给定个类似 a + b + … = x, 问有方案数. 我们对于这种都用拆分的思想, 然后用小的去解决大的, 首先我们说2 sum.
我们对n个数先排序, 然后两个指针, 一个开头，一个结尾, 然后往中间动, 如果x - b &gt; a (b是后面的指针指的值, a是前面的指针指的值)， 很明显如果再让j(后面的指针)动, 那么x - b会越大, 所以要让i(前面的指针)动,...]]></description><category></category></item><item><title><![CDATA[LeetCode 124 Binary Tree Maximum Path Sum]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/89391741</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/89391741</guid><author>Anxdada</author><pubDate>Fri, 19 Apr 2019 01:46:20 +0800</pubDate><description><![CDATA[传送门
题意: 跟定一颗带点权二叉树, 问其任意一条路径的最大值是多少.(路径, 任意一点出发和结束的路径)
思路: 其实就两种情况, 一是左右子树加上本身结点构成一条路, 二是将自己和左右子树更优的连接起传给父亲结点成路. 所有的情况就是这两种情况的综合，所以按照这个写就行了.
AC Code
/**
 * Definition for a binary tree node.
 * struct...]]></description><category></category></item><item><title><![CDATA[LeetCode 4 Median of Two Sorted Arrays【经典题目】]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/89391724</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/89391724</guid><author>Anxdada</author><pubDate>Fri, 19 Apr 2019 01:42:36 +0800</pubDate><description><![CDATA[传送门
题意: 给定两个有序数组, 要求在O(log(m+n))的复杂度之内求出合并后的中位数
思路: 数据水，线性的也能过. 但是面试遇到就不一定能过了. 所以还是得想正解. 有个log，所以我们用二分来做, 具体做法就是每次算一算第k/2在哪里, 分别取出中间的来比较, 再按照大小关系递归算出，第k大在哪里, 每次递归减少k/2, 所以就是logk(k ≈ m + n), 所以复杂度合理!
A...]]></description><category></category></item><item><title><![CDATA[LeetCode 342 4的幂]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/89390908</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/89390908</guid><author>Anxdada</author><pubDate>Thu, 18 Apr 2019 23:50:50 +0800</pubDate><description><![CDATA[传送门
题意: 就是判断一个数是不是4的幂
思路: 2的幂已经写烂了, 4的幂的话也是在2的幂的基础上考虑的, 首先要保证是2的幂，然后观察4的幂的性质, 发现2进制的1一定在奇数位上, 那么我们需要一个用来验证奇数位上1的数字, 那就是0x55555555, 因为0x5 = 0101, 所以可以验证, 同理类似的题目都是这样做.
AC Code
class Solution {
public:
...]]></description><category></category></item><item><title><![CDATA[LeetCode 137 只出现了一次的数组||]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/89388699</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/89388699</guid><author>Anxdada</author><pubDate>Thu, 18 Apr 2019 21:35:17 +0800</pubDate><description><![CDATA[传送门
题意: 只有一个数字出现了一次, 其余数字都出现了三次. 问一次的那个数字是多少.
思路: 相信2次的已经做烂了, 那么这道改编的了?
一个二进制位只能表示0或者1。也就是天生可以记录一个数出现了一次还是两次。
x ^ 0 = x;
x ^ x = 0;
要记录出现3次，需要两个二进制位。那么上面单独的x就不行了。我们需要两个变量，每个变量取一位：
ab ^ 00 = ab;
ab ^ a...]]></description><category></category></item><item><title><![CDATA[Codeforces #251 D题 Devu and his Brother 【三分】]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88678253</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88678253</guid><author>Anxdada</author><pubDate>Wed, 20 Mar 2019 01:40:08 +0800</pubDate><description><![CDATA[传送门
题意: 给定一个长度为n的a数组, 和一个长度为m的b数组, 每次可以选任意一个数组的任意一个元素, 让它+ or - 1, 问最少执行多少步，可以使得a数组的最小值 &gt;= b数组的最大值.
思路: 很明显, 我们需要找到那个临界值, 并且一定是处于一个中间水平，太大或者太小都不行, 所以可以用三分处理, 然后统计答案就行, 详情看代码实现.
AC Code
const int ma...]]></description><category></category></item><item><title><![CDATA[西北大学校赛B题 北境之都 【三分】]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88674232</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88674232</guid><author>Anxdada</author><pubDate>Tue, 19 Mar 2019 21:35:20 +0800</pubDate><description><![CDATA[传送门
题意: 给定n座房子的高度, 要求任意两座房子的高度差在m以内, 每个房子只能改变一次高度，将一个房子的高度改变k米的花费是k^2万元，求最低要花费多少万元
思路: 很明显, 将一个房子的高度放在过高或者过低的都是不最优, 而是中间的某个值, 比如样例就是45, 所以我们可以三分一下最低高度x, 然后x + m作为最高高度, 比x小的变为x, 比x+m 大的变为 x + m, 然后取最优值...]]></description><category></category></item><item><title><![CDATA[LeetCode 834 Sum of Distances in Tree]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88662734</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88662734</guid><author>Anxdada</author><pubDate>Tue, 19 Mar 2019 15:04:46 +0800</pubDate><description><![CDATA[传送门
题意: 给定一棵树, 输出每个点到其他点的距离之和.
思路: 首先我们先dfs一遍, 存下每个点的子节点数(包括自己), 和一个值称dp, dp[u] 表示u的所有子节点到u的距离之和, 那么很容易也可以在第一次dfs中维护, 那么此时dp[0] (假设0是根节点), 就是0的答案, 那么其他的答案了, 实际上可以通过父亲的ans来转移, 此时ans[0] = dp[0], 那么假设0的字...]]></description><category></category></item><item><title><![CDATA[HDU 6446 Tree and Permutation【思维】好题!]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88662514</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88662514</guid><author>Anxdada</author><pubDate>Tue, 19 Mar 2019 14:58:10 +0800</pubDate><description><![CDATA[传送门
题意: 给定一个n, 那么1-n是一个排列, 定义某个排列(x y z)的值为x - y, x - z在树上的最短距离和, 求这个排列的全排列的值相加等于多少, 树的形态会给出.
思路: 算边的贡献, 首先对于任意一个排列, 它是树上某点到其他点的距离之和, 然后由于全排列, 实际上就是树上任意两点之间的距离之和(考虑顺序), 首先树上任意两点之间的和我们会求(考虑每条边的贡献, 即边的两...]]></description><category></category></item><item><title><![CDATA[LeetCode 810 Chalkboard XOR Game【思维】]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88662122</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88662122</guid><author>Anxdada</author><pubDate>Tue, 19 Mar 2019 14:45:03 +0800</pubDate><description><![CDATA[传送门
题意: 给定n个数, 两个人轮流上去删除一个数字, 如果在某个人删除后, 剩下的数字异或等于0，那么这个人就输了, Alice 先手, 如果它能赢return TRUE.
思路: 考思维, 首先全部数字异或等于0需要二进制的每一位上1出现偶数次, 那么如果刚开始就异或等于0，Alice肯定就赢了嘛, 否则如果剩下的数字是偶数Alice也一定能赢, 因为每次删除一个数字后剩下的数量一定是奇数...]]></description><category></category></item><item><title><![CDATA[LeetCode 793 Preimage Size of Factorial Zeroes Function【思维】]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88661829</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88661829</guid><author>Anxdada</author><pubDate>Tue, 19 Mar 2019 14:36:14 +0800</pubDate><description><![CDATA[传送门
题意: 给定一个x! 后零的个数k(&lt;1e9), 问满足x的数字有多少个.
思路: 很好的一道题, 我们一步步解决.
1: 如何求x的阶乘末尾0的个数?
10进制中只有2和5相乘才会得到10，也就是每有一对2和5，就多一个末尾的0
而阶乘又是从1开始乘到x，所以2的个数总是比5多，那么问题转化为求x！中有多少个5作为因子
公式为 k = x/5 + x/5^2 + x / 5^3 +...]]></description><category></category></item><item><title><![CDATA[LeetCode 995 Minimum Number of K Consecutive Bit Flips【思维】]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88661671</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88661671</guid><author>Anxdada</author><pubDate>Tue, 19 Mar 2019 14:31:25 +0800</pubDate><description><![CDATA[传送门
题意: 给定一个长度为n的01数组, 每次可以将连续的k位翻转(o -&gt; 1, 1 - &gt; 0), 问能否将整个数字变成全1，能的话最少翻转多少次.
思路: 很明显可以分析出的是, 一但遇到0了，那么一定要翻转, 并且以后都不能再翻转它了, 也就是跟着翻转下去, 所以一个很暴力的想法就出来, 直接每次暴力翻转连续的k位, 那么复杂度是接近于n^2的, 所以我们就不写了, 那么我...]]></description><category></category></item><item><title><![CDATA[leetcode 1015 Numbers With Repeated Digits]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88649496</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88649496</guid><author>Anxdada</author><pubDate>Mon, 18 Mar 2019 20:40:13 +0800</pubDate><description><![CDATA[传送门
题意: 给定一个N，求1 - N中，输出至少有一位数字是重复的数字的个数.
思路: 很明显, 这道题要用数位dp, 考虑两点, 一是前导零的影响, 二是记录的应该是每一位的次数, 而不能是简单的标记和清空标记, 比如101 和 110. 所以状态想好为dp[i][j][k] 表示起始位i, 当前位j, 是否已经有重复位数k(0 or 1) , 然后做记忆化搜索就行, 没啥坑点.
AC Co...]]></description><category></category></item><item><title><![CDATA[小米OJ编程比赛 2月常规赛 Carryon 数数字]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88648017</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88648017</guid><author>Anxdada</author><pubDate>Mon, 18 Mar 2019 19:30:32 +0800</pubDate><description><![CDATA[传送门
题意: 给定l, r通过以下步骤求答案
1: 需要将 l 到 r 之间的数全部转化成 16 进制，然后连起来
2: 将连起来的数又转化成 10 进制
3: 将最终结果对 15 取模
数据范围：1 &lt;= L &lt;= R &lt;= 1e12
思路: 首先推导, 假设区间[L, R] 转化为16进制后连起来为 xyz. 那么答案是多少了.
ans = (x * 16 ^ 2 + y ...]]></description><category></category></item><item><title><![CDATA[HDU 2089 数位dp解法]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88644312</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88644312</guid><author>Anxdada</author><pubDate>Mon, 18 Mar 2019 17:34:59 +0800</pubDate><description><![CDATA[传送门
(数位dp入门题)
题意: 就是求给定区间内数字中不含4和连号62
思路: 很入门的数位dp, dp[len][state] 表示当前第len 位，并且前一位是否是6, 然后记忆化搜索即可, 因为每到一个位置的数字, 都有两种状态, 需要分开考虑.
ll dp[30][2], shu[30];
ll dfs(int st, int state, int limit) {
    if (s...]]></description><category></category></item><item><title><![CDATA[LightOJ 1205 Palindromic Numbers]]></title><link>https://blog.youkuaiyun.com/Anxdada/article/details/88643583</link><guid>https://blog.youkuaiyun.com/Anxdada/article/details/88643583</guid><author>Anxdada</author><pubDate>Mon, 18 Mar 2019 17:21:37 +0800</pubDate><description><![CDATA[传送门
题意: 求给定区间内回文数字的数量
思路: 很明显求区间内满足某种条件的数字个数, 就用数位dp, 然后想好状态, 我这是三维
dp[st][cur][state] 表示起始位是st, 当前位是cur, 是否构成回文数字(state1是,. 0否)
然后就是内部循环怎么写了, 总体思路就是前一半的位置上的数字任意填, 然后到可以填后一半时，不仅要填，还要对称的填，然后依次记忆化搜索即可
l...]]></description><category></category></item></channel></rss>