<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[luyan0408的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/luyan0408</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; luyan0408]]></copyright><item><title><![CDATA[前缀和优化]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/127340996</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/127340996</guid><author>luyan0408</author><pubDate>Sat, 15 Oct 2022 21:35:17 +0800</pubDate><description><![CDATA[前缀和优化区间和问题]]></description><category></category></item><item><title><![CDATA[多项式公式处理]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/113427096</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/113427096</guid><author>luyan0408</author><pubDate>Sat, 30 Jan 2021 13:28:46 +0800</pubDate><description><![CDATA[目的
用来处理多项式公式：对于一个仅含有自变量x的多项式，将其按次数展开。
大致思路
一、拆括号
二、读取每个无括号的表达式
三、记录结果
四、以后再遇到这个括号直接读取结果
具体内容在实现过程中，以下顺序是按照我们一开始的思考顺序，又简入深
poly
struct poly{
	int dag;
	int pre_op;//多项式前面的符号 1234代表 +*/^ 
	pair&lt;int,int&gt;c[N];//c[a]分数表达c^a的系数 
	int pre,aft;//指针 前后的多项式
	i]]></description><category></category></item><item><title><![CDATA[公式处理-数字四则运算不含括号]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/113131823</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/113131823</guid><author>luyan0408</author><pubDate>Mon, 25 Jan 2021 18:54:08 +0800</pubDate><description><![CDATA[首先发现，计算机的精度有限，导致1/3+1/3+1/3！=11/3+1/3+1/3！=11/3+1/3+1/3！=1
所以就把1看成1/1
0.5看成1/2 每个运算都是分数的加减法
字符串转数字形式
将字符串转化为数字形式
第一行：共几个数字
第二行开始：每行描述一个数字（包括该数字前面的运算符）
x y z
x表示符号 123代表+*/ 然后x的正负代表数字正负
然后用y/z描述该数字大小
#include&lt;bits/stdc++.h&gt;//不能乘负数 
using namespace std]]></description><category></category></item><item><title><![CDATA[森林火灾模拟]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/110004954</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/110004954</guid><author>luyan0408</author><pubDate>Mon, 23 Nov 2020 19:06:14 +0800</pubDate><description><![CDATA[森林火灾模拟代码
import numpy as np
import matplotlib.pyplot as plt
import random
import copy

class Forest:
    def __init__(self):
        self.forest_size = (100,100)
        self.forest = np.zeros(self.forest_size,int)
        self.forest_temp = copy.deepcopy(]]></description><category></category></item><item><title><![CDATA[CSP2020游记]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/109690974</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/109690974</guid><author>luyan0408</author><pubDate>Sat, 14 Nov 2020 14:58:11 +0800</pubDate><description><![CDATA[CSP/J
初三开始学信竞，第一次普及因经验不足错失省一。
今年高二的我为了防止考提高组的上午没事情干，报名了个普及来玩玩。
T1
非常简单的位运算拆分二进制，判断奇偶性然后拆分即可，五分钟打完过大样例。
#include&lt;bits/stdc++.h&gt;
using namespace std;
int read(){
	char s;
	int x=0,f=1;
	s=getchar();
	while(s&lt;'0'||s&gt;'9'){
		if(s=='-')f=-1;
		s=get]]></description><category></category></item><item><title><![CDATA[研学-元胞自动机模拟疫情传播]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/107928599</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/107928599</guid><author>luyan0408</author><pubDate>Tue, 11 Aug 2020 10:28:38 +0800</pubDate><description><![CDATA[蒙特卡罗方法模拟疫情传播
论文提要
2020年伊始，新冠肺炎席卷全球。长时间潜伏期、极高的传染率，使得全人类面对这次疫情显得有些措手不及。为了更好地认识、防控传染病，本文采用蒙特卡罗方法中的一种——元胞自动机，借鉴著名数学家约翰·康威所发明的生命游戏规则，自创规则进行疫情模拟。
最终发现严格的防控、警惕的意识与强大的医疗水平均是抗击疫情必不可少的内容。政府越早采取防控措施防控效果越好；并且医疗水平的支持更是防控的关键。
主题词
蒙特卡罗方法；元胞自动机；疫情传播
正文
1 研究背景
1.1 传染病介绍
在人]]></description><category></category></item><item><title><![CDATA[小程序基本语句01]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/107513240</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/107513240</guid><author>luyan0408</author><pubDate>Wed, 22 Jul 2020 14:43:58 +0800</pubDate><description><![CDATA[app.json
易错点
1.忘记加，
2.“ “用英文字符

”:“代替   ”=“

作用-特殊字段：
pages字段：
1.新建页面+确定页面出现顺序
"pages":[
    "pages/mine02/mine02",
    "pages/index/index",
    "pages/logs/logs",
    "pages/mine/mine"
  ]

window字段：
2.设置初始页面属性
置顶区域
"window":{
    "backgroundTextStyle":"d]]></description><category></category></item><item><title><![CDATA[P2486 [SDOI2011]染色]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/107386383</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/107386383</guid><author>luyan0408</author><pubDate>Thu, 16 Jul 2020 16:35:32 +0800</pubDate><description><![CDATA[题目
题目链接
题目大意：一棵树，每个点权是一个颜色。
支持两种操作：
1.修改任意一条链，使得这条链上的颜色均为c；
2.询问任意一条链上的颜色段数。
例如：11221 颜色段数为3
分析
大体思路
由于是链上操作，考虑树链剖分+线段树的做法
这两个操作都是区间修改，1操作直接普通的区间修改+dag标记即可实现
线段树合并细节处理
下面重点来讲讲2：
线段树的查询中，假设查询的区间为[l,r][l,r][l,r]定义两个全局变量lstl、latrlstl、latrlstl、latr表示col[l]、col]]></description><category></category></item><item><title><![CDATA[P3730曼哈顿交易-莫队算法]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/107317661</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/107317661</guid><author>luyan0408</author><pubDate>Mon, 13 Jul 2020 15:16:12 +0800</pubDate><description><![CDATA[题目
题目链接
题目大意：一个区间内有n个数字，有m个询问，每次询问一个区间。回答这个区间的第k大的热度值。
​					热度值定义：数字i的热度值为：这个区间内i的出现次数。
分析
正解前置知识
权值分块；莫队算法
首先暴力做法：对于每一个区间，暴力搜索出每个数字的出现次数，把出现次数push到一个数组里面，寻找到出现次数的第k大的数字。
优化一：权值分块
优化寻找第k大数字，可以采用权值分块的方法。
一共n个数字，因此热度值的取值范围是[0,n][0,n][0,n]，所以把这个区间进行分块，维护每个块中]]></description><category></category></item><item><title><![CDATA[CF489E：hiking-01分数规划]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/106769296</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/106769296</guid><author>luyan0408</author><pubDate>Mon, 15 Jun 2020 19:00:51 +0800</pubDate><description><![CDATA[题目
题目链接
题目大意
一个数轴上有n个点，每个点的坐标均为正整数，每个点有一个美丽值。
给定常数p，从原点出发，只能向正方向移动，每次必须停在一个点上，假设经过的距离为d，那么这次hike的疲劳值为abs(d−p)\sqrt{abs(d-p)}abs(d−p)​。现在要从原点前往最左端的点，求总疲劳值/总美丽值的最小值。
总美丽值为停留的点的美丽值之和。
题目分析
分数规划
注意到求两个和式的比值，并且以一个点为终点就要对疲劳值、美丽值都产生贡献。
所以可以考虑01分数规划
1.二分一个答案，然后令新点]]></description><category></category></item><item><title><![CDATA[01分数规划学习笔记]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/106750403</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/106750403</guid><author>luyan0408</author><pubDate>Sun, 14 Jun 2020 19:35:21 +0800</pubDate><description><![CDATA[何为01分数规划
01分数规划解决的是这么一类问题：
从给定的数列ai、bi{a_i}、{b_i}ai​、bi​，求∑i=1ai∗pi∑i=1bi∗pi\frac{\sum_{i=1}{a_i}*p_i}{\sum_{i=1}{b_i}*p_i}∑i=1​bi​∗pi​∑i=1​ai​∗pi​​的最值问题
其中p为一个01数列。
也就是从一个二元组列表中选一些二元组，求x项之和/y项和的最值。
常常是求最大中的最小、最小中的最大。
这类问题我们通常用二分+分数规划来做
详解
直接求解不容易，我们可以考虑如何]]></description><category></category></item><item><title><![CDATA[P1730 最小密度路径-01分数规划]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/106750380</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/106750380</guid><author>luyan0408</author><pubDate>Sun, 14 Jun 2020 19:32:54 +0800</pubDate><description><![CDATA[题目大意
题目链接
题目大意：一个有向无环图（DAG），边权均为正整数。
定义一条路径的密度为 路径上的边权和/边数。
先有q组询问，每次给出xy，求从x到y的若干条路径中的最小路径密度是多少。
题目分析
令c为边权，d为路径条数
那么所求即为：∑cd\frac{\sum{c}}{d}d∑c​
这是一个和式分式，对于这种题目，我们通常用一种方法叫做 01分数规划
我们二分答案，然后判断。
判断过程：把每条边边权-二分答案然后判断最短路的正负性。
如果最短路是负的那么答案不合法，修改r
否则修改l
代码
下附]]></description><category></category></item><item><title><![CDATA[HDU5201-The Monkey King]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/106461221</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/106461221</guid><author>luyan0408</author><pubDate>Sun, 31 May 2020 21:03:45 +0800</pubDate><description><![CDATA[题目
题目大意
简化题意：1~n个不同盒子，放入m个相同小球，盒子可空，但是1号盒子的球数必须严格最多，问合法方案数。
分析
简化问题
如果没有1号盒子严格最多的限制，就变成了一个插板的问题。
也就是x1+x2……+xn=mx_1+x_2……+x_n=mx1​+x2​……+xn​=m这类不定方程求非负整数解的问题，插板法解决。
容斥
如果枚举猴王（1号盒子）的球数为i
那么问题就变成不定方程并且0&lt;=x&lt;=i0&lt;=x&lt;=i0&lt;=x&lt;=i，加了一个上限。
上限通常会用容斥转]]></description><category></category></item><item><title><![CDATA[Kings Colors-二项式反演]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/106442519</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/106442519</guid><author>luyan0408</author><pubDate>Sat, 30 May 2020 15:53:51 +0800</pubDate><description><![CDATA[题目
题目链接
题目大意：给定一个n个节点的树，给它染色并且使得相邻节点异色。问恰好用k种颜色的染色方案数
题目分析
恰好k种不是很好求，因为我们很难保证每种颜色都用到，于是我们先考虑求最多k种颜色。
那么就让每个点和它的父亲节点异色就可以了。
也就是k∗(k−1)n−1k*(k-1)^{n-1}k∗(k−1)n−1
那么我们令f(i)f(i)f(i)表示最多用i种颜色的染色方案数
​					g(i)g(i)g(i)表示恰好用i种的染色方案数
那么假设我们要最多用n种，那么不妨从中随意选其中i种，用且仅用]]></description><category></category></item><item><title><![CDATA[洛谷P4859已经没有什么好害怕的了-二项式反演]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/106440741</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/106440741</guid><author>luyan0408</author><pubDate>Sat, 30 May 2020 14:05:50 +0800</pubDate><description><![CDATA[题目
题目链接
题目大意：有两组长度为n的数ab，组间数字互不相同。两组数字之间两两配对，不重不漏，给定一个数字k，求满足a中数字&gt;b 比 b中数字&gt;a 的组数多k的分组方案数
题目分析
1.问题转化
因为组间数字两两不同，所以其实就是告诉你了有多少组a比b大。
令新k=n+k2\frac{n+k}{2}2n+k​，那么如果n+k是一个奇数答案为0.
现在就变成了询问a&gt;ba&gt;ba&gt;b的数目为k的方案数
2.动态规划
首先对ab数组排序
直接求正好为k的不太好求，因为我们考虑从]]></description><category></category></item><item><title><![CDATA[二项式反演-学习笔记]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/106440249</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/106440249</guid><author>luyan0408</author><pubDate>Sat, 30 May 2020 13:22:36 +0800</pubDate><description><![CDATA[定义
如果两个函数g，f满足：g(n)=∑i=1nCnif(i)g(n)=\sum_{i=1}^{n}C_{n}^{i}f(i)g(n)=∑i=1n​Cni​f(i)
那么f(n)=∑i=1n(−1)n−iCnig(i)f(n)=\sum_{i=1}^{n}{(-1)^{n-i}C_{n}^{i}g(i)}f(n)=∑i=1n​(−1)n−iCni​g(i)
证明
以上推下为例：
1.将g函数表达式代入：
f(n)=∑i=1n(−1)n−i∗Cni∗[∑j=1iCij∗f(i)]f(n)=\sum_{i=1]]></description><category></category></item><item><title><![CDATA[莫比乌斯反演-能量采集题解]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/105937251</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/105937251</guid><author>luyan0408</author><pubDate>Tue, 05 May 2020 19:20:16 +0800</pubDate><description><![CDATA[题目
题目链接
重点：在下面的解答中默认n&lt;=mn&lt;=mn&lt;=m
前置知识
莫比乌斯函数与欧拉函数
莫比乌斯反演
熟练地和式运算
整除分块
迪利克雷卷积
分析
步骤一：转化答案
很容易想起这道题：仪仗队
从（0，0）（0，0）（0，0）到x，y）x，y）x，y）之间经过的点数=gcd（x，y）−1=gcd（x，y）-1=gcd（x，y）−1
为什么呢？
因为xy同时乘除某一个数后...]]></description><category></category></item><item><title><![CDATA[数表题解]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/105937227</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/105937227</guid><author>luyan0408</author><pubDate>Tue, 05 May 2020 19:18:41 +0800</pubDate><description><![CDATA[题目
题目链接
初步转化
令f(n)f(n)f(n)表示n的所有因数和
如果d∣i并且d∣jd|i 并且 d|jd∣i并且d∣j，那么d∣gcd(i,j)d|gcd(i,j)d∣gcd(i,j)
那么对于每一个询问，答案为：∑i=1n∑j=1m[f(gcd(i,j))&lt;=a]∗f(gcd(i,j))\sum_{i=1}^{n}\sum_{j=1}^{m}{[f(gcd(i,j))&lt;=a...]]></description><category></category></item><item><title><![CDATA[莫比乌斯反演-数字表格题解]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/105937209</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/105937209</guid><author>luyan0408</author><pubDate>Tue, 05 May 2020 19:16:22 +0800</pubDate><description><![CDATA[题目
题目链接
分析
初步变形
这道题其实是求：
∏i=1n∏j=1mfibgcd(i,j)\prod_{i=1}^{n}\prod_{j=1}^{m}{fib_{gcd(i,j)}}∏i=1n​∏j=1m​fibgcd(i,j)​
和别的莫比乌斯反演题目不同之处在于：它是累乘不是累加
但是转念一想，底数累乘实际上就是指数的累加，所以我们可以这样做：
=∏d=1nfibd∑d∣in∑d∣jm[gc...]]></description><category></category></item><item><title><![CDATA[[HNOI2005]狡猾的商人：一题两解]]></title><link>https://blog.youkuaiyun.com/luyan0408/article/details/100165820</link><guid>https://blog.youkuaiyun.com/luyan0408/article/details/100165820</guid><author>luyan0408</author><pubDate>Wed, 29 Jan 2020 10:13:27 +0800</pubDate><description><![CDATA[题目链接
题目大意：
一段区间，给定m个信息，每个信息表示一段子区间中的区间和，问你这个区间是否合法（也就是说是否存在这种区间）
第一种解法：差分约束：
由于是一段区间和，那我们不妨把它看成是前缀和形式的两个相减。然后将它用差分约束的方式转换成一张图，那么这个区间是否合法就变成了这张图上是否有最短路，就变成了用SPFA判负环的问题。
1.建图：
对于一条信息：at−as==x(t&amp;gt;=...]]></description><category></category></item></channel></rss>