<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DIDCJS的博客]]></title><description><![CDATA[Follow your heart.]]></description><link>https://blog.youkuaiyun.com/DIDCJS</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DIDCJS]]></copyright><item><title><![CDATA[日记]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/78976244</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/78976244</guid><author>DIDCJS</author><pubDate>Thu, 04 Jan 2018 22:33:53 +0800</pubDate><description><![CDATA[复习组原 和 写C#课设的一天。
---------------------------------------------------------------------------------------------------------]]></description><category></category></item><item><title><![CDATA[关于欧拉函数的一些理解]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/78408002</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/78408002</guid><author>DIDCJS</author><pubDate>Tue, 31 Oct 2017 21:27:16 +0800</pubDate><description><![CDATA[先丢上定义
phi(x)=x*∏(pi-1)/pi;  //pi为x的所有因子。


/pi 相当于区间长度x分为pi部分，每个小部分有一个与数与x的不互质，所以乘（pi-1）..



性质 

1. x为质数 phi(x)=x-1;
2、gcd(a,x)==1   有a^phi(x)=1(mod x);
3.根据1，2性质  可以证明费马小定理  当x为质数&&gcd(]]></description><category></category></item><item><title><![CDATA[HDU 6069 求区间[L,R]每个数的k次方的因子数之和]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/76796306</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/76796306</guid><author>DIDCJS</author><pubDate>Mon, 07 Aug 2017 00:29:22 +0800</pubDate><description><![CDATA[缺乏知识点     
1.约数定理： num=p1^c1 * p2^c2 * ....* pn^cn    p代表素数   c代表对应幂次
                num对应的因子数= (c1+1)*(c2+1)*......*(cn+1)
2.一个数num   大于sqrt(num)的素因子    数量  只能 为0或者1 


可以解决的问题：
1.所有求一个数num的因]]></description><category></category></item><item><title><![CDATA[同余最短路]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/76732276</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/76732276</guid><author>DIDCJS</author><pubDate>Sat, 05 Aug 2017 19:11:33 +0800</pubDate><description><![CDATA[题意大致就是 一张无向图  每条边可以多次经过  问s,到t 的不小于k的最短路  （或者仅仅等于k的最短路）


取m=2*min（s到下一个点的最短路径）:   如果一条路径长度sum可行   那么sum+m也是可行的   
然后 dis[i][j]表示从起点s到i点 ，路径长度%m==j  的最短路径    
最后就是利用同余的性质去跑最短路spfa


题目  HDU 60]]></description><category></category></item><item><title><![CDATA[关于二分图最大匹配等于最小点覆盖的证明]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/74370343</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/74370343</guid><author>DIDCJS</author><pubDate>Wed, 05 Jul 2017 09:26:51 +0800</pubDate><description><![CDATA[假设一个二分图给出了最大匹配数为M，那个M条边都是独立的（在X,Y集合都没有交点） ，
结论1.覆盖M条独立边至少需要M个覆盖点
结论2.图中所有的边都能被最大匹配的边的点所覆盖（如果有边没被最大匹配边的点所覆盖的话，那么肯定就不是最大匹配啦）
结论3.最大匹配的一条边只对应一个覆盖点
如果最大匹配的一条边选了2个未覆盖点 那么只有这种一种情况

 红色边代表最大匹配，2-5选了两个未]]></description><category></category></item><item><title><![CDATA[HDU 4577]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/72122384</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/72122384</guid><author>DIDCJS</author><pubDate>Mon, 15 May 2017 10:14:23 +0800</pubDate><description><![CDATA[不会JAVA 等GG系列
HDU 4577]]></description><category></category></item><item><title><![CDATA[ZOJ - 3529 K - A Game Between Alice and Bob sg函数~]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/70880019</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/70880019</guid><author>DIDCJS</author><pubDate>Thu, 27 Apr 2017 21:35:44 +0800</pubDate><description><![CDATA[sg函数打表。一开始我是这么打的表。天真以为nlogn应该可以。但是跑了很久。。。。
void gsg() {
	memset(sg, 0, sizeof(sg));
	sg[0]=0;
	for (int i = 1; i < 5000024; i++) {
		memset(Hash, 0, sizeof(Hash));
		for (int j = 1; j*j <= i; j++)
		]]></description><category></category></item><item><title><![CDATA[华南理工大学2017WPS杯-B Homework of Physics]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/70669357</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/70669357</guid><author>DIDCJS</author><pubDate>Tue, 25 Apr 2017 02:57:33 +0800</pubDate><description><![CDATA[道理和鸡蛋测层数的题目一样。
具体看（转载）鸡蛋测层数
设DP[i][j]//表示用i个鸡蛋，有j次机会测试能达到的最大层数。
转移方程：DP[i][j]=DP[i-1][j-1]+DP[i][j-1]+1;  
//DP[i-1][j-1]就是碎了当前的鸡蛋，那么剩下i-1个鸡蛋，j-1次机会所能达到的最大层数。DP[i][j-1]就是没碎当前鸡蛋，j-1次机会所能到达的最大层数。+1就]]></description><category></category></item><item><title><![CDATA[HDU 2509 Be the Winner (Anti-Nim)]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/70306096</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/70306096</guid><author>DIDCJS</author><pubDate>Thu, 20 Apr 2017 22:54:51 +0800</pubDate><description><![CDATA[Anti-Nim博弈，最后取完就为输。
定义：P=各堆异或值和为0，N各堆异或值和不为0.
            1代表所有堆中只有一堆充裕堆（数量>=2） ,2代表所有堆中超过一堆充裕堆  ，0代表无充裕堆（即是所有堆皆为0）
             堆中数量为1称为孤单堆
有以下结论：

1：） P1，P2，N0状态为必胜。
2：） N2，P0状态为必输。
证明：转载]]></description><category></category></item><item><title><![CDATA[Fibonacci again and again  HDU - 1848]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/70244738</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/70244738</guid><author>DIDCJS</author><pubDate>Wed, 19 Apr 2017 20:24:17 +0800</pubDate><description><![CDATA[需要理解SG函数，自行百度。（至今证明还没有完全看懂）
结论： 
公平组合游戏（ICG）,都符合 ：多个游戏的结果=各子游戏的异或和。
sg【i】=mex(sg【j】| j为i的后继（比如现在是5个苹果，每次只能拿2个，那么3个苹果就是5个苹果的后继）)
//简单来讲就sg【i】是当前集合的最小的非负整数
那么这道题我们可以预处理sg【i】的值，最后把sg[n]^sg[m]^sg[p]就]]></description><category></category></item><item><title><![CDATA[ZOJ 3956 Course Selection System]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/70187231</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/70187231</guid><author>DIDCJS</author><pubDate>Sat, 15 Apr 2017 21:30:42 +0800</pubDate><description><![CDATA[01背包
如果你能发现C不变，H越大，公式值越大，这题就可以用01背包写了
C代表容量~dp[i]代表到使用前i种所能达到最大的H值
#pragma comment(linker, "/STACK:1024000000,1024000000")
#include   
#include   
#include   
#include   
#include 
#include   
#inc]]></description><category></category></item><item><title><![CDATA[ZOJ 3953 Intervals]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/70186917</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/70186917</guid><author>DIDCJS</author><pubDate>Sat, 15 Apr 2017 21:13:07 +0800</pubDate><description><![CDATA[这题其实就是在算最大不重叠区间数的升级版。
首先讲一下最大不重叠区间数如何求; 将所有区间按y小到大排序。
然后按顺序放区间，线上记录ansr（最右下标值）
在放一个新的区间的时候，判断此区间的x是否大于ansr，如果是就更新ansr，否则不变，
到最后就能算出最大不重叠区间数


但是这次问的是对应的下标位置不能同时有3条边重叠，
所有我们维护2个值，ans1（重叠边为1条最右下]]></description><category></category></item><item><title><![CDATA[HDU1542 Atlantis 基于线段树的扫描线]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/70134985</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/70134985</guid><author>DIDCJS</author><pubDate>Tue, 11 Apr 2017 21:04:43 +0800</pubDate><description><![CDATA[该题求的是矩形的面积和（重叠部分只算一次）
思路：利用二分离散化坐标（因为是浮点数），以横轴建立坐标系，矩形的上下边的长度作为区间去构造线段树，
维护cnt[]数组（表示当前边属于下边还是上边，下边为-1，上边为1）和sum[]数组（当前区间覆盖的边的长度），
一开始我觉得很难看得懂，我也是调了别人AC的代码很久才明白的。
#pragma comment(linker, "/STACK:1]]></description><category></category></item><item><title><![CDATA[数位DP总结]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/68952932</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/68952932</guid><author>DIDCJS</author><pubDate>Mon, 03 Apr 2017 20:58:42 +0800</pubDate><description><![CDATA[数位DP基于动态的思想，记录状态以至于不用重复的计算，能够处理大规模的数
其时间复杂度为O（状态数*转移数） //状态数是dp数组的大小，转移数是for循环大小（这个时间我也不是很想得通，某大佬讲的。。）
基本模板如下：


基本的三种题型：
1）： 求1~n数字中包含某些数字特征的数量和（如数字子串中是否有13等）
2）：求1~n数字中各个位数相加能够整除某个数的数量和（如123各]]></description><category></category></item><item><title><![CDATA[Codeforces 55D - Beautiful numbers]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/68969574</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/68969574</guid><author>DIDCJS</author><pubDate>Mon, 03 Apr 2017 19:03:32 +0800</pubDate><description><![CDATA[能注意到1~9的最小公倍数是2520，
所以我们只需要维护一下到dex位前的数字组成的lcm，和num
最后只需要判断num是否除以lcm就可以了
但是DP[20][2555][2555] 是要超内存的
所以我们需要离散一下第二维，因为1~9组成的lcm的数量其实很有限（思考怎么算出所有的lcm）
所以需要新建Hash[50]数组压DP[20][50][2555]；
还要此题有一个最坑]]></description><category></category></item><item><title><![CDATA[HDU 3652 B-number]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/68954386</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/68954386</guid><author>DIDCJS</author><pubDate>Sun, 02 Apr 2017 22:24:41 +0800</pubDate><description><![CDATA[此题在询问包含13的基本上还要求此数要整除13（如果连询问包含13的数位都不会的话，建议先看看更基础的这题 HDU 2089 不要62）
对于能否整除13，我们只需要在dfs的时候维护一个%13的数（num），然后在每次枚举下一位的时候num=（num*10+i）%13
最后只需要判断余数是否为0就可以了。
至于为什么可以这么做，因为：123=（（1*10+2）*10+3）
       ]]></description><category></category></item><item><title><![CDATA[HDU 2089 不要62]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/68954316</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/68954316</guid><author>DIDCJS</author><pubDate>Sun, 02 Apr 2017 21:56:04 +0800</pubDate><description><![CDATA[很裸的数位DP，只需要dfs的时候维护dt状态值就行了
dt==2  说明此数字不吉利
dt==1 说明有6没2
dt==0 说明到dex位此数字还是吉利的
代码如下~
#include   
#include   
#include   
#include   
#include 
#include   
#include 
#include  
#define INF 0x3f3f3]]></description><category></category></item><item><title><![CDATA[2017广东工业大学程序设计竞赛决赛-G题-等凹数字]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/68063086</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/68063086</guid><author>DIDCJS</author><pubDate>Wed, 29 Mar 2017 12:35:13 +0800</pubDate><description><![CDATA[这题在求回文串的基础上还要等凹。
可以视为LightOJ 1205的升级版，不知道如何写回文串的数位DP可以打开链接LightOJ 1205


因为这题只需要加多2维，最高位的数字以及前一位（用于判断升降） （此思想来自于点击打开链接）
在回文串的前半部分不能大于pre，后半段不能小于pre。
然后最后判断是否全为一个数字就可以了。
#pragma comment(linker,]]></description><category></category></item><item><title><![CDATA[LightOJ 1205]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/68063041</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/68063041</guid><author>DIDCJS</author><pubDate>Wed, 29 Mar 2017 12:15:11 +0800</pubDate><description><![CDATA[关键维护三个变量start,dex,flag,分别代表开始位，当前位，开始位到当前位是否回文。#pragma comment(linker, "/STACK:1024000000,1024000000")
#include   
#include   
#include   
#include   
#include 
#include   
#include 
#include  
#inclu]]></description><category></category></item><item><title><![CDATA[关于大整数相乘]]></title><link>https://blog.youkuaiyun.com/DIDCJS/article/details/51519750</link><guid>https://blog.youkuaiyun.com/DIDCJS/article/details/51519750</guid><author>DIDCJS</author><pubDate>Fri, 27 May 2016 21:20:31 +0800</pubDate><description><![CDATA[由于int范围有限，对于大整数相乘必定不能直接用*符号，而是用char型数组记录，通过模拟乘法达到大整数相乘的效果，
假定a数组长度为A，b数组长度为B。求出来的大整数长度有三种可能，
1.A+B(最后一位无进位)，
2.A+B+1(最后一位有进位)，
3.0(数a或者数b其一为0)(不要忽略这种可能，我就是忽略了这个一直WA....)
代码如下，
void bigmultiply_m]]></description><category></category></item></channel></rss>