<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[DC_Fan的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/DC_Fan</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; DC_Fan]]></copyright><item><title><![CDATA[Codeforces Beta Round #19 D-Points（树状数组+离散化）]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/118658916</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/118658916</guid><author>DC_Fan</author><pubDate>Sun, 11 Jul 2021 21:21:12 +0800</pubDate><description><![CDATA[Codeforces Beta Round #19
D-Points
题目

题目大意
&nbsp; &nbsp; &nbsp;和以前在POJ做的的数星星差不多，POJ数星星，这里也是在笛卡尔坐标系上有多个点，只不过现在对点有增删操作，并且最一开始坐标系上是没有点的，并且查找的是该最靠近查找点的最左下的点。
样例
输入样例
case 1:

7
add 1 1
add 3 4
find 0 0
remove 1 1
find 0 0
add 1 1
find 0 0

case 2:

13
add 5 5]]></description><category></category></item><item><title><![CDATA[P2048 [NOI2010] 超级钢琴（ST表 + 优先队列优化）]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/118416931</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/118416931</guid><author>DC_Fan</author><pubDate>Fri, 02 Jul 2021 16:33:12 +0800</pubDate><description><![CDATA[P2048 [NOI2010] 超级钢琴
题目
小 Z 是一个小有名气的钢琴家，最近 C 博士送给了小 Z 一架超级钢琴，小 Z 希望能够用这架钢琴创作出世界上最美妙的音乐。
这架超级钢琴可以弹奏出 n 个音符，编号为 1 至 n。第 i 个音符的美妙度为 A_i，其中 A_i 可正可负。
一个“超级和弦”由若干个编号连续的音符组成，包含的音符个数不少于 L 且不多于 R。我们定义超级和弦的美妙度为其包含的所有音符的美妙度之和。两个超级和弦被认为是相同的，当且仅当这两个超级和弦所包含的音符集合是相同的。
小]]></description><category></category></item><item><title><![CDATA[L2-2 病毒溯源 (25 分) 详解！]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/116601060</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/116601060</guid><author>DC_Fan</author><pubDate>Mon, 10 May 2021 17:20:00 +0800</pubDate><description><![CDATA[L2-2 病毒溯源 (25 分)
      DFS+路径优化存储
题目

代码
#include "bits/stdc++.h"

using namespace std;
const int G = 10000;
vector&lt;int&gt; Map[G]; //用一个二维动态数组来存图 (邻接表)
vector&lt;int&gt; res; //用来存放最终答案路径
//判断是否要优化res
bool check(vector&lt;int&gt; &amp;v){
    if(v.size]]></description><category></category></item><item><title><![CDATA[树状数组之区间最值]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/113775011</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/113775011</guid><author>DC_Fan</author><pubDate>Tue, 09 Feb 2021 20:09:59 +0800</pubDate><description><![CDATA[树状数组之区间最值
原理

数学原理：

建立树状数组
利用上面的性质，在树状数组的尾部插入数据，来建立一个树状数组
void push(int pos){ 
    int i,lb = lowbit(pos); 
    c[pos] = a[pos]; 
    for(i=1;i&lt;lb;i &lt;&lt;=1){ 
        c[pos] = max(c[pos],c[pos-i]); 
     }
}

树的维护
void update(int pos,int v){ 
    i]]></description><category></category></item><item><title><![CDATA[树状数组之区间修改，区间查询]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/113774666</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/113774666</guid><author>DC_Fan</author><pubDate>Tue, 09 Feb 2021 19:31:02 +0800</pubDate><description><![CDATA[树状数组之区间修改，区间查询
原理
我们先开俩数组；

原数组:a [i], 每一个元素的值
差分数组:b [i], 下标 i 的元素存放 a[i]-a[i-1] 的差值，b[1]=a[1]

我们可以得到下面的公式:

于是，我们得到了一个 重要公式

我们设:

b1 [i] 数组表示:b1 [i] = a [i]-a [i-1], 差分数组
b2 [i] 数组表示:b2 [i] = i* b1 [i]
c1 [i] 针对 b1 的树状数组
c2 [i] 针对 b2 的树状数组


代码
int n, ]]></description><category></category></item><item><title><![CDATA[树状数组之区间修改，单点查询]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/113774191</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/113774191</guid><author>DC_Fan</author><pubDate>Tue, 09 Feb 2021 18:29:45 +0800</pubDate><description><![CDATA[树状数组之区间修改，单点查询
原理
首先我们开三个数组：

原数组:a [i], 每一个元素的值
差分数组:b [i], 下标 i 的元素存放 a [i]-a [i-1] 的差值，b [1]=a [1]
树状数组:c [i], 针对数组 b 行成的树状数组

我们就形成了下面的这种数据结构：

我们发现对于树状数组 C[i]C[i] 来说，query(i)=a[i]query(i)=a[i], 也就是对应数的值.
如果我们想 2-&gt;4 的数加 10 怎么办？我们只要修改 b[i] 数组如下:

b[2]]></description><category></category></item><item><title><![CDATA[树状数组之求逆序对]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/113773760</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/113773760</guid><author>DC_Fan</author><pubDate>Tue, 09 Feb 2021 17:50:58 +0800</pubDate><description><![CDATA[树状数组之求逆序对
逆序对
    设 A 为一个有 n 个数字的有序集 (n&gt;1), 其中所有数字各不相同。 如果存在正整数 i, j 使得 1 ≤ i &lt; j ≤ n 而且 A [i] &gt; A [j], 则 &lt;A [i], A [j]&gt; 这个有序对称为 A 的一个逆 序对，也称作逆序数。 例如，数组 (3,1,4,5,2) 的逆序对有 (3,1),(3,2),(4,2),(5,2), 共 4 个。
原理
我们有以下的设定

a[]={0,3,1,4,5,2} 其中 3,1,]]></description><category></category></item><item><title><![CDATA[树状数组之前缀和]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/113772537</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/113772537</guid><author>DC_Fan</author><pubDate>Tue, 09 Feb 2021 16:45:45 +0800</pubDate><description><![CDATA[树状数组之前缀和

原理

下标ii 管辖的区域大小:ii 对应的二进制保留最低位的11, 其它位全部置0。
c[i]c[i] 的父亲的下标：用lowbit(i)lowbit(i) 表示ii 的管辖区域，那么i+lowbit(i)i+lowbit(i) 就表示ii 父亲结点的下标
c[i] 左边的仅挨着自己管辖区间的点的下标:i−lowbit(i)i−lowbit(i)

问题 1: 我们如何去求 lowbit(i)lowbit(i) :i &amp; (-i) 就会把 i 的二进制除最低位 1 外全部置 ]]></description><category></category></item><item><title><![CDATA[Balanced Lineup(RMQ问题)]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/113460284</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/113460284</guid><author>DC_Fan</author><pubDate>Sun, 31 Jan 2021 10:45:34 +0800</pubDate><description><![CDATA[RMQ区间最值(ST表)
   RMQ ( Range Minimum / Maximum Query ) 问题是指：对于长度为 n 的数列 A，回答若干询问 RMQ (A , i , j ) ( i , j ≤ n)，返回数列A中下标在 i , j 里的最小（大）值，也就是说，RMQ问题是指求区间最值的问题。
   关于RMQ问题，一般情况我们采用ST算法。
   ST算法是一种用于解决RMQ,即区间最值查询)问题的离线算法，类似于线段树和树状数组的，其功能特性差不多，当实现起来的话，显然是ST算法更为简]]></description><category></category></item><item><title><![CDATA[【线性动态规划】最长不下降子序列（LIS）]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/113114752</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/113114752</guid><author>DC_Fan</author><pubDate>Mon, 25 Jan 2021 15:31:03 +0800</pubDate><description><![CDATA[最长不下降子序列（线性动态规划）
   我们知道，递推就是按照递推公式不断往前求解的一个过程，对于当前，只有一个状态描述当前的值。若某些问题并非由一个状态而是由多个状态不断推导，那么这种方法就是动态规划，简称DP。动态规划是运筹学的一个分支，是将问题分解成各个阶段，由相邻的两个阶段根据状态转移方程推到求解的一种方法。
   所谓的线性动态规划，就是该问题模型是线性的，数据结构表现为线性表的形式。
题目
题干：
   最长不下降子序列。给定一个长度为n的序列a，求出这个序列中最长不下降子序列，所谓最长不下降子]]></description><category></category></item><item><title><![CDATA[棋盘问题(带条件的DFS)]]></title><link>https://blog.youkuaiyun.com/DC_Fan/article/details/112776721</link><guid>https://blog.youkuaiyun.com/DC_Fan/article/details/112776721</guid><author>DC_Fan</author><pubDate>Mon, 18 Jan 2021 13:40:55 +0800</pubDate><description><![CDATA[棋盘问题棋盘问题(带条件的DFS)题目InputOutputSample InputSample Output思路1.寻找条件2.应对限制条件1.棋盘大小2.棋子的数量3.下棋的位置代码
棋盘问题(带条件的DFS)
题目
    在一个给定形状的棋盘（形状可能是不规则的）上面摆放棋子，棋子没有区别。要求摆放时任意的两个棋子不能放在棋盘中的同一行或者同一列，请编程求解对于给定形状和大小的棋盘，摆放k个棋子的所有可行的摆放方案C。
Input
    输入含有多组测试数据。
    每组数据的第一行是两个正整数]]></description><category></category></item></channel></rss>