<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[CHeck_Check_check的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/CHeck_Check_check</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; CHeck_Check_check]]></copyright><item><title><![CDATA[HDU-2473 Junk-Mail Filter（并查集的删除）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52297098</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52297098</guid><author>CHeck_Check_check</author><pubDate>Wed, 24 Aug 2016 10:35:21 +0800</pubDate><description><![CDATA[题目链接
题意：对n份邮件进行m次操作，操作分为两种：（1）M X Y:表示将右键X和邮件Y归为同一类邮件；（2）S X：表示将邮件X从X所属的一类邮件中取出（即X单独属于一类邮件）。 问m次操作后总的邮件种类是多少。
分析：常规的并查集是无法进行删除操作的，因为一旦根节点发生变化，其子节点的根节点信息就会丢失，于是我们需要将其变形，设置虚拟节点。首先将0~n-1的根节点设为n~2n-1，将2]]></description><category></category></item><item><title><![CDATA[POJ-2566 Bound Found（尺取法变形）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52277914</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52277914</guid><author>CHeck_Check_check</author><pubDate>Mon, 22 Aug 2016 16:36:20 +0800</pubDate><description><![CDATA[题目链接
题意：给出n个整数和k次查询，每次查询给出一个非负整数t，要求找到区间[i,j]，使[i,j]内的数之和的绝对值与t的差距最小，每次查询输出和的绝对值和区间的左右端点。
分析：首先预处理前缀和，用pair数组p保存前缀和及其对应的下标。然后对p按前缀和从小到大排序，排序后就可以用尺取法查询。
#include
#include
#include
#include
#include
]]></description><category></category></item><item><title><![CDATA[HDU-2461 Rectangles（容斥原理）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52104214</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52104214</guid><author>CHeck_Check_check</author><pubDate>Wed, 03 Aug 2016 15:56:38 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=2461
题意：给出n个矩形的左下角和右上角坐标，要求进行m次操作，每次对t个矩形进行涂色（给出这t个矩形的序号），要求计算出每次涂色时需要涂色的面积。（涂色可以覆盖，即每次操作不受前面任何操作的影响）。
分析：矩形之间可以覆盖，每次操作要计算覆盖后图形的面积，这里就要用到容斥原理。每次操作时有如下关]]></description><category></category></item><item><title><![CDATA[BZOJ-4591 超能粒子炮·改（lucas定理+预处理）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52101467</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52101467</guid><author>CHeck_Check_check</author><pubDate>Wed, 03 Aug 2016 11:18:09 +0800</pubDate><description><![CDATA[题意：求[C(n,0)+C(n,1)+...+C(n,k)]%2333的值。
分析：因为n和k的值太大，不能直接预处理组合数，由lucas定理：C(n,k)%mod=C(n/mod,k/mod)*C(n%mod,k%mod)%mod，可得到如下结果
便于说明，记[C(n%mod,0)+C(n%mod,1)+...+C(n%mod,mod-1)]%mod=∑C(n%mod,0~mod-1)
a]]></description><category></category></item><item><title><![CDATA[HDU-4196 Remoteland（数论）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52100238</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52100238</guid><author>CHeck_Check_check</author><pubDate>Wed, 03 Aug 2016 09:04:30 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=4196
题意：给出一个正整数n，求出一个最大的数，这个数满足是由[1,n]之间不同的数相乘得到，并且这个数是完全平方数。
分析：乘积最大的数是n!，因为n!可以拆成一堆素数的乘积，只需要剔除n!里面多余的素数即可。如果n!里面包含的素数因子的指数是奇数，则需要剔除一个这样的素数才能构成平方数，是偶数]]></description><category></category></item><item><title><![CDATA[POJ-3974 Palindrome（manacher算法）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52062000</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52062000</guid><author>CHeck_Check_check</author><pubDate>Fri, 29 Jul 2016 10:13:25 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
经典的求最长回文子串题目，需要用到manacher算法。
manacher算法的具体介绍：http://blog.youkuaiyun.com/ggggiqnypgjg/article/details/6645824
#include
#include
#include
#include
#include
using namespace std;
const int maxn=1]]></description><category></category></item><item><title><![CDATA[POJ-2689 Prime Distance（两次素数筛+偏移处理）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52047065</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52047065</guid><author>CHeck_Check_check</author><pubDate>Wed, 27 Jul 2016 16:46:34 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
题意：求区间[a,b]内距离最小的两个素数和距离最大的两个素数。若存在就输出它们的信息，不存在输出"There are no adjacent primes."
分析：由于a和b的范围可达到int上限，如果采取常规素数筛空间是不够用的，只能采取其它的思路。要筛出int范围内的合数，这些合数的最大质因数一定是小于INF^0.5（小于50000），可以先用常规线性筛筛出50]]></description><category></category></item><item><title><![CDATA[codeforces-385C Bear and Prime Numbers（素数筛选法+维护前缀和）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52043530</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52043530</guid><author>CHeck_Check_check</author><pubDate>Wed, 27 Jul 2016 10:57:42 +0800</pubDate><description><![CDATA[题目链接：点击打开链接


题意：求在区间[a,b]内所有素数的f（x）之和，f(x)为在数组中能整除x的数的个数。例如长度为6的数组{5,5,7,10,14,15}，给出区间[2,11]，则f(2)=2,f(3)=1,f(5)=4,f(7)=2,f(11)=0.
          ∑[f(x)]=f(2)+f(3)+f(5)+f(7)+f(11)=9.
分析：先用数组b[i]记录输入]]></description><category></category></item><item><title><![CDATA[HDU-1829 A Bug's Life（并查集）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52023255</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52023255</guid><author>CHeck_Check_check</author><pubDate>Mon, 25 Jul 2016 14:20:32 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
题意：昆虫有两种性别：雌性和雄性，给出m对昆虫的编号，表示每对昆虫是异性关系，问是否存在矛盾，即可能有一对是同性关系
分析：可以将同性关系的昆虫合并入并查集，当某对昆虫的根结点相等（即是同性关系）时，这时存在矛盾， 如果所有对昆虫的根结点都不相同（即表示所有对昆虫都是异性关系），这时不存在矛盾。因为输入的每一对昆虫事先被确定为异性关系，所以可以用数组sex[i]表示和i]]></description><category></category></item><item><title><![CDATA[codeforces-407B Long Path（dp）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52006627</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/52006627</guid><author>CHeck_Check_check</author><pubDate>Sat, 23 Jul 2016 21:12:08 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
题意：一个人要从房间1走到房间n+1，每走到一个房间要在此进行一次标记，每走到一个房间有两种行走的方式，若标记次数为奇数则采取方式1：走到房间p[i],1
分析：设dp[i]为第一次走到房间i时行走的步数，此时房间1到房间i-1的标记都是偶数次，因为第一次行走到房间i后房间标记为1（奇数），所以要往回走走走到房间p[i]，再从房间p[i]走x步再次到达房间i时才能走到房]]></description><category></category></item><item><title><![CDATA[HDU-2955 Robberies（小数01背包）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51995758</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51995758</guid><author>CHeck_Check_check</author><pubDate>Fri, 22 Jul 2016 15:55:15 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
题意：一个人要去抢银行，给出n个银行各自的总存款和此人在这个银行被抓的概率，求出被抓概率小于p的情况下最多能抢多少钱。
分析：我开始把概率p乘以10^5转换为整数当作背包容量来求解wa了，可见数据的精度比1e-5还要小，用这种思路来解决问题是行不通的，需要转换思路。
          此题需要将银行总的钱数sum当作背包容量，求出在不同的钱数i下此人逃跑的概率dp[]]></description><category></category></item><item><title><![CDATA[codeforces-121E Lucky Array（树状数组）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51986180</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51986180</guid><author>CHeck_Check_check</author><pubDate>Thu, 21 Jul 2016 20:01:51 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
题意：如果一个数每个十进制位上的数字是4或7，那么这个数字被称为“幸运数字，现”给出一个长度为n的数组，要求进行m次操作，这些操作包含两种：
1.更新操作，将第l到第r之间的数都加上d   。
2.查询操作，查询第l到第r个数中有多少个“幸运数字”。
分析：典型树状数组题目，需要注意判断一个数是否为“幸运数字”时不用遍历这个数字的每一位数，因为数字最大为10^5，只]]></description><category></category></item><item><title><![CDATA[UVA-562 Dividing coins（01背包）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51971779</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51971779</guid><author>CHeck_Check_check</author><pubDate>Wed, 20 Jul 2016 20:38:17 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
题意：将m个含有不同价值的硬币分成两堆，使两堆硬币总价值之差最小
分析：设所有硬币的总价值为sum，将其中一堆硬币的问题看成01背包问题（一个总容量为sum/2的背包，将所有硬币任意往里放，使包内所有硬币的总价值最大）。状态数组dp[j]=0 or 1表示这些硬币能否组成总价值为j的状态，从sum向下枚举，更新状态数组的值。接着i从sum/2向下枚举到0，找到最大的i能]]></description><category></category></item><item><title><![CDATA[codeforces-305A Strange Addition]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51968099</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51968099</guid><author>CHeck_Check_check</author><pubDate>Wed, 20 Jul 2016 14:42:58 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
之前一直理解错题意，以为两个数字里面任意一个数含有0就能相加，结果各种wa。。。
其实题目说的意思是两个数如果在任意十进制位至少有一个数含有0才可以相加，比如505和50可以相加（50可以看成050，在个十百位上505和050这两个数至少一方含有0），而50和25不能相加（在十位上两方都不含有0），理解清楚题意后直接暴力求解就可以了


#include
#inc]]></description><category></category></item><item><title><![CDATA[codeforces-57C Array（找规律+逆元）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51967924</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51967924</guid><author>CHeck_Check_check</author><pubDate>Wed, 20 Jul 2016 14:26:43 +0800</pubDate><description><![CDATA[题目链接：点击打开链接
题意：给出一个整数n，要求找到长度为n的数组，满足该数组的元素是有[1,n]内的任意元素组成的，且该数组为非递减数组或非递增数组，求满足条件的数组的总个数。
分析：因为非递减数组和非递增数组具有对称性，可以只讨论非递减数组的个数，设其为x，则总个数为2x-n（n为非递减数组和非递增数组交叉的部分，即既不递减也不递增）。
通过分析讨论结果可以得到总个数为C(2n,n)-]]></description><category></category></item><item><title><![CDATA[HDU-4536 XCOM Enemy Unknown（dfs暴搜）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51953034</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51953034</guid><author>CHeck_Check_check</author><pubDate>Tue, 19 Jul 2016 09:53:09 +0800</pubDate><description><![CDATA[题目链接


#include
#include
#include
#include
#include
using namespace std;
typedef long long ll;
const int maxn=20,maxk=105;
int n,m,k;
struct node
{
    int num,sca;
};
node s[maxn];
int a[maxk][3];]]></description><category></category></item><item><title><![CDATA[HDU-4339 Query（树状数组+二分）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51946681</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51946681</guid><author>CHeck_Check_check</author><pubDate>Mon, 18 Jul 2016 23:38:00 +0800</pubDate><description><![CDATA[点击打开题目链接


题意：给出长度分别为l1和l2的字符串s1和s2，要求进行k次操作，每次操作输入的第一个数如果是1，接着就输入两个整数a,i和一个字符c，要求将第a个字符串的下标为i的字符换位c。如果输入的第一个数是2，紧接着就输入一个数字i，要求找到一个最大的数字j，使得在区间[i,j)中两个字符串的字符相等。
分析：之前看到题目给了10s直接暴力求解TLE了。。。后来从别人的题解]]></description><category></category></item><item><title><![CDATA[codeforces-327C Magic Five（等比数列求和+快速幂+逆元）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51946459</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51946459</guid><author>CHeck_Check_check</author><pubDate>Mon, 18 Jul 2016 23:02:53 +0800</pubDate><description><![CDATA[点击打开题目链接
题意：给出一个字符串a和一个整数k，表示这个字符串s是由k个 a连接得到的，要求任意删除字符串s中的任意位上的字符，使得删除后的字符串表示的数能被5整除。题目说明所求结果可能包含前导0的情况，即5和05算两种情况。
分析：要使这个数能被5整除，则删除后的字符末尾数字一定是5或0，这时只用枚举a的各位字符，如果遇到字符0或5就计算当前情况的总个数（2^i），而后面的k个串的相同]]></description><category></category></item><item><title><![CDATA[LightOJ - 1067 Combinations（快速幂+逆元）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51870381</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51870381</guid><author>CHeck_Check_check</author><pubDate>Sun, 10 Jul 2016 10:27:40 +0800</pubDate><description><![CDATA[Description
Given n differentobjects, you want to take k of them. How many ways to can do it?
 
For example, saythere are 4 items; you want to take 2 of them. So, you can do it 6 ways.
 
Take 1, ]]></description><category></category></item><item><title><![CDATA[HDU 3714 Error Curves（三分查找）]]></title><link>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51867999</link><guid>https://blog.youkuaiyun.com/CHeck_Check_check/article/details/51867999</guid><author>CHeck_Check_check</author><pubDate>Sat, 09 Jul 2016 18:50:42 +0800</pubDate><description><![CDATA[题目链接


题意：这题题意比较难读懂，题目的意思是给出一系列的一元二次曲线Si(x)，F(x)为定义域内每一个x对应的Si(x)最大值点组成的曲线，求F(x)的最小值。
分析：由于a>=0，开口向上已确定，所以F(x)一定是凹曲线，故可以用三分查找法找出它的极值点，然后求出该极值点对应的最小值。注意求解F(x)在任一点的函数值时要注意枚举ai,bi,ci，从而求出Si(x)在该点的最大值]]></description><category></category></item></channel></rss>