<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AngcFun的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/AngcFun</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; AngcFun]]></copyright><item><title><![CDATA[2019腾讯暑期实习常规批笔试技术研究与数据分析卷编程题]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/89167131</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/89167131</guid><author>AngcFun</author><pubDate>Wed, 10 Apr 2019 00:24:27 +0800</pubDate><description><![CDATA[2019腾讯暑期实习常规批笔试技术研究与数据分析卷编程题题一 数字拆分解题思路注意点解析python实现代码解释题二 水果运费解题思路注意点解析python实现代码解释题三 找最小数解题思路注意点解析python实现代码解释
题一 数字拆分
一个数字有两种操作，1 对所有数字减一 2 把所有数字都拆分成两个更小的数之和，问最多拆分K次，把N完全消去最少需要多少轮操作。
输入取值范围： 1&lt;=...]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第三十一天小Hi小Ho的惊天大作战：扫雷·二]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50354253</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50354253</guid><author>AngcFun</author><pubDate>Fri, 18 Dec 2015 21:12:42 +0800</pubDate><description><![CDATA[题目这次的扫雷是二维的了。根据三种规则做一次判断，判断出一定是雷和一定不是雷的数量。 
1.如果某一个被探明的格子里所标的数字为0，那么它相邻的8个格子里的未探明格子被认作是一定不是地雷的格子。 
2.如果某一个被探明的格子里所标的数字为K，且它相邻的8个格子里正好有K个没有探明的格子的话，则这K个没有探明的格子被认作是一定是地雷的格子。 
3.如果某两个探明了的格子A和B，他们中标明的数字分别为P]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第三十天小Hi小Ho的惊天大作战：扫雷·一]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50323367</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50323367</guid><author>AngcFun</author><pubDate>Wed, 16 Dec 2015 09:11:14 +0800</pubDate><description><![CDATA[题目简化版扫雷，只有一行。 
给出一行的周围3格中是雷的数量。 
判断哪些一定是雷，一定不是雷。 
思路因为给出的信息是环环相扣的，不用一个一个去试。 
只需要试第一格是否为雷就可以通过数据算出后面是否为雷。 
所以只用试两次， 
第一次把一格设为雷，算出后面的情况；第二次把第一格设为不是雷，算出后面的情况。 
若两次都算出来了，则将两次的情况对比，没有变化的部分就是答案。 
若只有一次满足条件，则]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十九天最小生成树三·堆优化的Prim算法]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50163893</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50163893</guid><author>AngcFun</author><pubDate>Thu, 03 Dec 2015 17:34:18 +0800</pubDate><description><![CDATA[题目最小生成树。思路使用小根堆对prim算法进行优化。 
参考第二十六天和第二十八天。代码#include<cstdio>
#include<cstring>
using namespace std;const int MAXN=100000+1;
const int MAXM=1000000+1;
int N,M,vis[MAXN];
int head[MAXN],e=0;
int w[MAXM]]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十八天题外话·堆]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50145275</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50145275</guid><author>AngcFun</author><pubDate>Wed, 02 Dec 2015 10:54:11 +0800</pubDate><description><![CDATA[题目用prim做最小生成树思路先随便从一个点开始。建立当前节点到各个节点的最短距离。到不了的设为最大值。 
然后找到一个未访问的切到达距离最小的节点。将当前节点到该节点的路涵盖进来。将该节点设置为以访问。并重新计算各个节点到已经访问过的节点的最短距离。 
重复N-1次。便可以求出最小生成树代码#include<cstdio>
#include<cstring>
using namespace std]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十七天最小生成树二·Kruscal算法]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50129929</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50129929</guid><author>AngcFun</author><pubDate>Tue, 01 Dec 2015 15:19:50 +0800</pubDate><description><![CDATA[题目用prim做最小生成树思路先随便从一个点开始。建立当前节点到各个节点的最短距离。到不了的设为最大值。 
然后找到一个未访问的切到达距离最小的节点。将当前节点到该节点的路涵盖进来。将该节点设置为以访问。并重新计算各个节点到已经访问过的节点的最短距离。 
重复N-1次。便可以求出最小生成树代码#include<cstdio>
#include<cstring>
using namespace std]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十六天最小生成树一·Prim算法]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50129917</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50129917</guid><author>AngcFun</author><pubDate>Tue, 01 Dec 2015 15:19:19 +0800</pubDate><description><![CDATA[题目用prim做最小生成树思路先随便从一个点开始。建立当前节点到各个节点的最短距离。到不了的设为最大值。 
然后找到一个未访问的切到达距离最小的节点。将当前节点到该节点的路涵盖进来。将该节点设置为以访问。并重新计算各个节点到已经访问过的节点的最短距离。 
重复N-1次。便可以求出最小生成树代码#include<cstdio>
#include<cstring>
using namespace std]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十五天最短路径·三：SPFA算法]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50098621</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50098621</guid><author>AngcFun</author><pubDate>Sun, 29 Nov 2015 19:38:54 +0800</pubDate><description><![CDATA[题目图中节点的数量级上升至十万，路的数量级上升至百万。思路和我之前在一中写的相似。只是从深度优先改为了广度优先。代码#include<cstdio>
#include<cstring>
using namespace std;const int MAXN=100000+1;
const int MAXM=1000000+1;
int N,M,S,T,head[MAXN],queue[MAXM],fr]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十四天最短路径·二：Floyd算法]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50083671</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50083671</guid><author>AngcFun</author><pubDate>Sat, 28 Nov 2015 14:11:09 +0800</pubDate><description><![CDATA[题目用Floyd算法求无向图中两两之间的最短距离。代码#include<cstdio>
#include<cstring>
using namespace std;const int MAXN=100+1;
const int MAXL=1000+1;
int N,M,g[MAXN][MAXN];int main()
{
    memset(g,1,sizeof(g));
    scanf("%]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十三天最短路径·一]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50077835</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50077835</guid><author>AngcFun</author><pubDate>Sat, 28 Nov 2015 01:13:16 +0800</pubDate><description><![CDATA[题目给一个无向有权（距离）图，求两点之间最小距离。思路根据给出的数据建立有个无向图。 
从出发点开始深度遍历便可。遍历的时候得出出发点到遍历到的点的最短路径。便可得出答案。代码#include<cstdio>
#include<cstring>
using namespace std;const int MAXN=1000+1;
const int MAXM=10000+1;
int N,M,S,T]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十二天更为复杂的买卖房屋姿势]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50060689</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50060689</guid><author>AngcFun</author><pubDate>Thu, 26 Nov 2015 20:28:10 +0800</pubDate><description><![CDATA[题目小Hi和小Ho所关注的街道的长度为N米，从一端开始每隔1米就有一栋房屋，依次编号为0..N，在游戏的最开始，每栋房屋都有一个初始价格，其中编号为i的房屋的初始价格为p_i，之后共计发生了M次事件，所有的事件都是对于编号连续的一些房屋发生的，其中第i次事件如果是房屋自发的涨价或者降价，则被描述为三元组(L_i, R_i, D_i)，表示编号在[L_i, R_i]范围内的房屋的价格的增量（即正数为涨]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十一天离散化]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50045489</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50045489</guid><author>AngcFun</author><pubDate>Thu, 26 Nov 2015 00:27:16 +0800</pubDate><description><![CDATA[题目因为宣传栏和海报的高度都是一样的，所以宣传栏可以被视作长度为L的一段区间，且有N张海报按照顺序依次贴在了宣传栏上，其中第i张海报贴住的范围可以用一段区间[a_i, b_i]表示，其中a_i, b_i均为属于[0, L]的整数，而一张海报能被看到当且仅当存在长度大于0的一部分没有被后来贴的海报所遮挡住。那么问题就来了：究竟有几张海报能被看到呢？ 
对于100%的数据，满足N<=10^5，L<=10]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第二十天线段树的区间修改]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50016651</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50016651</guid><author>AngcFun</author><pubDate>Tue, 24 Nov 2015 18:15:02 +0800</pubDate><description><![CDATA[题目假设货架上从左到右摆放了N种商品，并且依次标号为1到N，其中标号为i的商品的价格为Pi。小Hi的每次操作分为两种可能，第一种是修改价格——小Hi给出一段区间[L, R]和一个新的价格NewP，所有标号在这段区间中的商品的价格都变成NewP。第二种操作是询问——小Hi给出一段区间[L, R]，而小Ho要做的便是计算出所有标号在这段区间中的商品的总价格。 
由于题目的数据规模是十万级。直接朴素算法就]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第十九天RMQ问题再临-线段树]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/50000327</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/50000327</guid><author>AngcFun</author><pubDate>Mon, 23 Nov 2015 20:16:07 +0800</pubDate><description><![CDATA[题目RMQ问题就是在一个范围内求最值的问题。 
这个题目还增加了中途可以改变某个值的大小。 
这里是利用线段树求最小值。思路线段树其实有二分的思想在里面。比如我知道第1-8个分别的数值。然后我就可以求出1-2，3-4，5-6，7-8的最值，然后求出1-4，5-8的最值，最后求出1-8的最值。以1-8为树根可以建立一棵二叉树。然后在知道范围的时候，可以把要求的范围分解成已经求出的范围最值来更快的得到答]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第十八天RMQ问题再临]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/49981693</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/49981693</guid><author>AngcFun</author><pubDate>Sun, 22 Nov 2015 21:26:40 +0800</pubDate><description><![CDATA[题目就是RMQ的题目，只是增加了询问中途修改值得可能性。 
但是数量级降到了万级。思路直接就是找最小值了。用最朴素的方法都能过。代码#include<cstdio> 
using namespace std;const int MAXN=10000+5;
int N,w[MAXN];
int a,b,c;
int main()
{
    scanf("%d",&N);
    for(int i=]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第十七天最近公共祖先·三]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/49966085</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/49966085</guid><author>AngcFun</author><pubDate>Sat, 21 Nov 2015 17:20:58 +0800</pubDate><description><![CDATA[问题还是最近公共祖先问题。思路之前用了Tarjan算法来做。但是这里遇到一个问题就是如果只有一个询问，那么将很难决定到底是针对这个询问就直接进行计算还是等待一定数量的询问一起计算。毕竟无论是一个询问还是很多个询问，使用离线算法都是只需要做一次深度优先搜索就可以了的。 
所以这一次改用一个在线算法。 
先根据输入建立一棵家族树。 
建立好家族树之后，深度遍历该树。使用一个数组来记录走过的路径（无论是从]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第十六天RMQ-ST算法]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/49936279</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/49936279</guid><author>AngcFun</author><pubDate>Thu, 19 Nov 2015 23:31:50 +0800</pubDate><description><![CDATA[这两天有事停了两天。这道题也是调了不少时间。好累呀。真想就直接贴代码。ST定义ST[Len][L]表示左边界为L，长度为2^Len的区间中的最小值。则有 
ST[Len][L]=min(ST[Len-1][L],ST[Len-1][L+2^(Len-1)]; 
然后就可以循环求出所有的ST。答案取小于这个区间长度的最大的2的非负整数次幂T,则答案为min(ST[Len][L],ST[Len][R+1]]></description><category></category></item><item><title><![CDATA[C语言register关键字]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/49934523</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/49934523</guid><author>AngcFun</author><pubDate>Thu, 19 Nov 2015 21:51:37 +0800</pubDate><description><![CDATA[register关键字：请求编译器尽可能的将变量存在cpu内部寄存器中，以提升访问速度。
注意：
1,修饰的类型必须是cpu能够接受。
2.因为不是在内存而是在寄存器，所以不能使用“&”取址
3.这是只是请求不是命令，是尽可能不是一定。]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第十五最近公共祖先·二]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/49878189</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/49878189</guid><author>AngcFun</author><pubDate>Tue, 17 Nov 2015 01:57:35 +0800</pubDate><description><![CDATA[题目与最近公共祖先·一 
将设置关系数量和查询关系数量的数量级都从100提升到100000。思路用邻接表，将家族关系建树，查询情况建图。 
使用离线算法的方式，通过一次深度优先遍历家族树，得出所有查询的答案。 
遍历时，第一次访问结点，将该节点做个标记1。访问完结点的所有子结点时，标记为2。 
在遍历到一个节点时，在查询图中扫描所有该节点的边，检查边的另一个端点的标记。若标记为0，无视；若标记为1，]]></description><category></category></item><item><title><![CDATA[hiho刷题日记——第十四天无间道之并查集]]></title><link>https://blog.youkuaiyun.com/AngcFun/article/details/49853991</link><guid>https://blog.youkuaiyun.com/AngcFun/article/details/49853991</guid><author>AngcFun</author><pubDate>Sun, 15 Nov 2015 22:53:16 +0800</pubDate><description><![CDATA[题目有两种操作。 
0是 设置两人同阵营 
1是 查询两人是否同阵营输入每个测试点（输入文件）有且仅有一组测试数据。 
每组测试数据的第1行为一个整数N，表示总共进行的操作次数。 
每组测试数据的第2~N+1行，每行分别描述一次操作，其中第i+1行为一个整数op_i和两个由大小写字母组成的字符串Name1_i, Name2_i，其中op_i只可能为0或1，当op_i=0时，表示判定Name1_i和N]]></description><category></category></item></channel></rss>