<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[apple50052014的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/apple50052014</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; apple50052014]]></copyright><item><title><![CDATA[二次剩余定理及Cipolla算法入门到自闭]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292366</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292366</guid><author>apple50052014</author><pubDate>Thu, 22 Aug 2019 01:19:00 +0800</pubDate><description><![CDATA[二次剩余定义：
在维基百科中，是这样说的：如果q等于一个数的平方模 n，则q为模 n 意义下的二次剩余。例如：x2≡n(modp)。否则，则q为模n意义下的二次非剩余。
Cipolla算法：一个解决二次剩余强有力的工具，用来求得上式的x的一个算法。
需要学习的数论及数学基础：勒让德符号、欧拉判别准则和复数运算。
勒让德符号：判断n是否为p的二次剩余，p为奇质数。

欧拉定...]]></description><category></category></item><item><title><![CDATA[String和Irreducible Polynomial（2019牛客暑期多校训练营（第七场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292367</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292367</guid><author>apple50052014</author><pubDate>Fri, 16 Aug 2019 16:04:00 +0800</pubDate><description><![CDATA[示例：
输入：
4000010010111011110
输出：
00001001 0111 01111 0
题意：给出一个只含有0和1的字符串，找出一种分割方法，使得每个分割出的字符串都是在该字符串自循环节中最小。
题解：先把每段按1结尾分开，然后暴力合并，合并的条件是每段字符串的字典序都不下降，这样可以保证是最小表示。因为如果后面有一段字典序比前面合并的任意一段字典序小...]]></description><category></category></item><item><title><![CDATA[Pair(二进制处理+数位dp)（2019牛客暑期多校训练营（第七场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292365</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292365</guid><author>apple50052014</author><pubDate>Fri, 16 Aug 2019 15:11:00 +0800</pubDate><description><![CDATA[示例：
输入：
33 4 24 5 27 8 5
输出：5731
题意：存在多少对&lt;x,y&gt;满足x&amp;y&gt;C或x^y&lt;C的条件。（0&lt;x&lt;=A,0&lt;y&lt;=B）
题解：首先逆向考虑，求有多少对(x,y)满足x&amp;y&lt;=C且x^y&gt;=C，然后用A*B去减它即可。然后就是数位dp模板题(数位dp不懂可先补...]]></description><category></category></item><item><title><![CDATA[Find the median（线段树+离散化）（2019牛客暑期多校训练营（第七场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292364</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292364</guid><author>apple50052014</author><pubDate>Fri, 16 Aug 2019 14:34:00 +0800</pubDate><description><![CDATA[题目出处：Find the median




示例：
输入：
53 1 4 1 5 92 7 1 8 2 9
输出：34545
说明：L = [3, 2 ,4, 1, 7]，R = [4, 8, 8, 3, 9]
题意：每次插入[l[i],r[i]][l[i],r[i]],询问中位数
题解：线段树模版题+离散化（不懂或忘了这些的先补充下知识）。线段树的...]]></description><category></category></item><item><title><![CDATA[数据离散化处理]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292363</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292363</guid><author>apple50052014</author><pubDate>Fri, 16 Aug 2019 13:50:00 +0800</pubDate><description><![CDATA[百度百科（离散化）：
离散化，把无限空间中有限的个体映射到有限的空间中去，以此提高算法的时空效率。
通俗的说，离散化是在不改变数据相对大小的条件下，对数据进行相应的缩小。例如：
原数据：1,999,100000,15；处理后：1,3,4,2；
原数据：{100,200}，{20,50000}，{1,400}；
处理后：{3,4}，{2,6}，{1,5}；

用法：很多算法的...]]></description><category></category></item><item><title><![CDATA[Governing sand（主席树/贪心）（2019牛客暑期多校训练营（第七场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292362</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292362</guid><author>apple50052014</author><pubDate>Tue, 13 Aug 2019 15:44:00 +0800</pubDate><description><![CDATA[示例：输入：25 1 11 10 125 1 23 2 3输出：12
题意：n种树，第i种树有P[i]颗，砍掉每颗树的代价是C[i], 高度是H[i]。需要用最小的花费砍掉一些树，让最高的树超过一半。
题解：按高度分类，从小到大枚举最大高度，比当前枚举的高度 h 要高的，一定删，比它小的，如果删前 ? 小的。
贪心代码：

 1 #include&lt;bits/stdc+...]]></description><category></category></item><item><title><![CDATA[线段树入坑到放弃]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292361</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292361</guid><author>apple50052014</author><pubDate>Tue, 13 Aug 2019 14:50:00 +0800</pubDate><description><![CDATA[线段树是一种二叉搜索树，与区间树相似，它将一个区间划分成一些单元区间，每个单元区间对应线段树中的一个叶结点。使用线段树可以快速的查找某一个节点在若干条线段中出现的次数，时间复杂度为O(logN)。而未优化的空间复杂度为2N，实际应用时一般还要开4N的数组以免越界，因此有时需要离散化让空间压缩。一.建树：例如：一个长度为4的线段，我们可以表示成这样：

如果你要表示线段的和，那么最上面...]]></description><category></category></item><item><title><![CDATA[Magic Line（思维+计算几何问题）（2019牛客暑期多校训练营（第三场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292360</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292360</guid><author>apple50052014</author><pubDate>Mon, 29 Jul 2019 17:28:00 +0800</pubDate><description><![CDATA[示例：
输入：
140 1-1 01 00 -1
输出：-1 999000000 1 -999000001
题意：给定平面上一系列的点，求一条以(x1,y1)，(x2,y2)两点表示的直线将平面分为包含点数量相等的两部分，其中直线不能穿过任何一点。
思路：


 1 #include&lt;bits/stdc++.h&gt;
 2 using namespace s...]]></description><category></category></item><item><title><![CDATA[Crazy Binary String（前缀和）（2019牛客暑期多校训练营（第三场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292359</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292359</guid><author>apple50052014</author><pubDate>Mon, 29 Jul 2019 17:23:00 +0800</pubDate><description><![CDATA[示例：
输入：
801001001
输出：4 6
题意：一段长度为n且只有 ‘0’ 和 ‘1’ 的字符串，求子串中 ‘0’ 和 ‘1’ 数目相等和子序列中‘0’ 和 ‘1’ 数目相等的最大长度。
思路：子序列的最大长度为 ‘0’ 和 ‘1’ 的个数中最小的两倍；
求字串的最大长度就用前缀和，将 ‘1’ 的价值设为1，‘0’ 的价值设为-1，用数组book[i]记录从 0...]]></description><category></category></item><item><title><![CDATA[free（分层图最短路）（2019牛客暑期多校训练营（第四场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292357</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292357</guid><author>apple50052014</author><pubDate>Mon, 29 Jul 2019 15:39:00 +0800</pubDate><description><![CDATA[示例：
输入：
3 2 1 3 11 2 12 3 2
输出：1
题意：求s,t最短路，可将k条边权值置零。
题解：分层图最短路原题

#include&lt;bits/stdc++.h&gt;
using namespace std;
typedef long long int ll;
const int maxn = 1e5+10;
const int IN...]]></description><category></category></item><item><title><![CDATA[sequence（线段树+单调栈）  (2019牛客暑期多校训练营（第四场）)]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292358</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292358</guid><author>apple50052014</author><pubDate>Mon, 29 Jul 2019 15:27:00 +0800</pubDate><description><![CDATA[示例：
输入：
31 -1 11 2 3
输出：
3
题意：求最大的(a区间最小值*b区间和)
线段树做法：用单调栈求出每个数两边比b数组大的左右边界，然后用线段树求出每段区间的和sum、最小前缀lsum、最小后缀rsum，枚举每个数a[i]，设以a[i]为最小值的区间为[l,r]
若a[i]&gt;0，则最优解就是a[i]*(b数组[l,r]的区间和)，因为a数组[l...]]></description><category></category></item><item><title><![CDATA[K  number（思维和后缀以及3的特性）（2019牛客暑期多校训练营（第四场））]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292345</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292345</guid><author>apple50052014</author><pubDate>Mon, 29 Jul 2019 13:28:00 +0800</pubDate><description><![CDATA[示例1：
输入：600
输出：4
说明：'600', '0', '0', '00' are multiples of 300. (Note that '0' are counted twice because it appeared two times)
示例2：
输入：123000321013200987000789
输出：55
题意：给一个全由数字字符组成的字符串，...]]></description><category></category></item><item><title><![CDATA[triples I（按位或运算及3的特性）（2019牛客暑期多校训练营（第四场）D）]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292353</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292353</guid><author>apple50052014</author><pubDate>Mon, 29 Jul 2019 12:59:00 +0800</pubDate><description><![CDATA[示例1：
输入：
2
3
7
输出：
1 32 3 6
说明：3=3, (3|6)=7
题意：输出尽可能少的数字，他们的按位或结果为输入的数字a。
题解：（表示看不懂题解，看山东大佬的代码看懂的）首先：有两个奇怪的现象，就是一个数字的二进制（我的定义是第一位为0，即偶数）有且只有2个1，且分别在奇数位和偶数位上时，这个数一定是3的倍数。如果一个数字a(a&gt;3)...]]></description><category></category></item><item><title><![CDATA[2019牛客暑期多校训练营（第四场）A  meeting（dfs或dp,dp待更新）]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292338</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292338</guid><author>apple50052014</author><pubDate>Mon, 29 Jul 2019 11:51:00 +0800</pubDate><description><![CDATA[示例1：
输入：
4 21 23 13 42 4
输出：2
说明：
They can meet at place 1 or 3.
题意：从K个点到达不联通图某个点需要的最短时间，这个最短时间是这K个人最后到达的人所需的时间。
思路：（我觉得官方给的题解挺好理解的就直接复制过来了）
一句话题解：考虑距离最远的两个关键点，设它们的距离为d，d/2上取整即为答案。
必要性...]]></description><category></category></item><item><title><![CDATA[2019牛客暑期多校训练营（第二场）H Second Large Rectangle]]></title><link>https://blog.youkuaiyun.com/apple50052014/article/details/101292350</link><guid>https://blog.youkuaiyun.com/apple50052014/article/details/101292350</guid><author>apple50052014</author><pubDate>Sun, 21 Jul 2019 17:36:00 +0800</pubDate><description><![CDATA[示例一：
输入 ：
1 2
01
输出：
0
示例二：
输入 ：
1 3
101
输出：
1
示例三（自己自测找错误用的）：
输入 ：
6 6100111111011111111111111111111101111
输出：
16
题意：在由1和0构成的矩形中找到由仅由1构成的第二大的矩形。（前缀和思维）
解题思路：（1）这是比赛后看别人代码的...]]></description><category></category></item></channel></rss>