<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[dong_pope的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/dong_pope</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; dong_pope]]></copyright><item><title><![CDATA[半平面交]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/108456341</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/108456341</guid><author>dong_pope</author><pubDate>Mon, 07 Sep 2020 21:10:04 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cmath&gt;
#include &lt;algorithm&gt;

using namespace std;

const double eps = 1e-8;

int Sign(double x) {
    if (fabs(x) &lt; eps)return 0;
    return x &lt; 0 ? -1 : 1;
}

struct Point {
    double x, y;
} ans[505];.]]></description><category></category></item><item><title><![CDATA[树状数组求最值+单点修改]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/108351132</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/108351132</guid><author>dong_pope</author><pubDate>Tue, 01 Sep 2020 21:27:19 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;algorithm&gt;

using namespace std;

const int max_n = 200005;

int n, a[max_n], tree[max_n];

inline int low_bit(int x) { return x &amp; -x; }

inline void Change(int p, int x) {
    a[p] = x;
    for (int i = p; i &l.]]></description><category></category></item><item><title><![CDATA[可持久化fhq]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/108220700</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/108220700</guid><author>dong_pope</author><pubDate>Tue, 25 Aug 2020 14:35:49 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;algorithm&gt;

using namespace std;

const int max_n = 5e5 + 5;

struct Fhq {
    int ch[2], val, key, sze;
} fhq[max_n * 50];

int tot = 0, root[max_n];

inline int New_Code(int val) {
    int.]]></description><category></category></item><item><title><![CDATA[极角排序+凸包]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/108053744</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/108053744</guid><author>dong_pope</author><pubDate>Mon, 17 Aug 2020 13:05:54 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
#include &lt;cmath&gt;

using namespace std;

int n;
const int MAXN = 1e5 + 5;

struct Point {
    double x, y;
} p[MAXN], Stack[MAXN];

int Top = 0;

bool cmp1(Point u, Point v) {
    if (u.y == v.y)retu.]]></description><category></category></item><item><title><![CDATA[海伦秦九韶]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/108027314</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/108027314</guid><author>dong_pope</author><pubDate>Sat, 15 Aug 2020 19:45:25 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cmath&gt;

using namespace std;

const double eps = 1e-8;

struct Point {
    double x, y;
};

struct Vector {
    double x, y;
};

double Distance(Point A, Point B) {
    double dx = A.x - B.x;
    double dy = A.y - B.]]></description><category></category></item><item><title><![CDATA[模拟退火]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/108013499</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/108013499</guid><author>dong_pope</author><pubDate>Fri, 14 Aug 2020 20:54:28 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cmath&gt;
#include &lt;algorithm&gt;

using namespace std;

const double delta = 0.996;
const double eps = 1e-15;

double X, Y;

struct Point {
    double x, y;
} a[1005], ans;
int n;
double ans_val = 0;

double Min_Va.]]></description><category></category></item><item><title><![CDATA[两圆相交面积]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/108008740</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/108008740</guid><author>dong_pope</author><pubDate>Fri, 14 Aug 2020 16:50:14 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cmath&gt;

using namespace std;

const double PI = acos(-1);

struct Point {
    double x, y;
};

struct Round {
    Point o;
    double r;
};

double Cos(double a, double b, double c) {
    return (a * a + b * b - c *.]]></description><category></category></item><item><title><![CDATA[逆矩阵]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/107966135</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/107966135</guid><author>dong_pope</author><pubDate>Wed, 12 Aug 2020 20:35:55 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;algorithm&gt;

using namespace std;

#define int long long

const int mod = 1e9 + 7;

int n, a[405][405], b[405][405];

int Power(int q, int c) {
    if (c == 0)return 1;
    if (q == 0)return 0;
    int ans = Power(q .]]></description><category></category></item><item><title><![CDATA[点分治]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/107868981</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/107868981</guid><author>dong_pope</author><pubDate>Fri, 07 Aug 2020 19:19:23 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;algorithm&gt;

using namespace std;

const int max_n = 1e4 + 5;

int n, k;

struct Edge {
    int to, next, val;
} edge[max_n * 2];
int head[max_n];

int ans = 0;
bool vis[max_n];

int mx_son[max_n], sze[max_n];

int F.]]></description><category></category></item><item><title><![CDATA[三点确定一个圆]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/107772341</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/107772341</guid><author>dong_pope</author><pubDate>Mon, 03 Aug 2020 20:09:54 +0800</pubDate><description><![CDATA[struct Point {
    double x, y;
} a[max_n];

struct Round {
    double r;
    Point o;

    bool On_Round(Point p) {
        return (p.x - o.x) * (p.x - o.x) + (p.y - o.y) * (p.y - o.y) &lt;= r * r;
    }
};

Round Make_Round(Point p) {
    return {0, p};.]]></description><category></category></item><item><title><![CDATA[后缀数组]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/107417615</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/107417615</guid><author>dong_pope</author><pubDate>Fri, 17 Jul 2020 20:56:56 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;algorithm&gt;

using namespace std;

const int max_n = 1e5 + 5;

int n, m;
char s[max_n];

int des[max_n], d = 0;

int Rank[max_n], Sa[max_n], Height[max_n], tax[max_n], tp[max_n];

void Rank_S.]]></description><category></category></item><item><title><![CDATA[广义后缀自动机]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/107225482</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/107225482</guid><author>dong_pope</author><pubDate>Thu, 09 Jul 2020 12:01:30 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;algorithm&gt;
#include &lt;queue&gt;

using namespace std;
const int max_n = 1e6 + 5;

char s[max_n];

struct Trie {
    int ch[26]{}, fth, pos;

    Trie() {
        for (int &amp;i:ch)i = 0;
.]]></description><category></category></item><item><title><![CDATA[Manacher]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/106504315</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/106504315</guid><author>dong_pope</author><pubDate>Tue, 02 Jun 2020 20:33:00 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;algorithm&gt;

using namespace std;

const int max_n = 1e5 + 5;

char s[max_n], a[max_n * 2];
int n = 0, t, len[max_n * 2], pre[max_n], suf[max_n];

signed main() {
//    freopen("in", "r", std.]]></description><category></category></item><item><title><![CDATA[回文自动机]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/106223660</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/106223660</guid><author>dong_pope</author><pubDate>Tue, 19 May 2020 21:38:00 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cstring&gt;

using namespace std;

const int max_n = 500005;

struct Palindromic_Tree {
    int next[max_n][26]{}, fail[max_n]{};
    //next指针，next指针和字典树类似，指向的串为当前串两端加上同一个字符构成
    //fail指针，失配后跳转到fail指针指向的节点
    int cnt.]]></description><category></category></item><item><title><![CDATA[大整型]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/106143078</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/106143078</guid><author>dong_pope</author><pubDate>Fri, 15 May 2020 15:27:54 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;algorithm&gt;

using namespace std;

#define int long long

const int base = 1e18;

struct BigInt {
    int num[1000]{}, len;

    BigInt() { len = 0; }

    void Assign(int x) {
        len = .]]></description><category></category></item><item><title><![CDATA[高斯消元]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/106138271</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/106138271</guid><author>dong_pope</author><pubDate>Fri, 15 May 2020 11:28:13 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;

using namespace std;

int n;
double a[105][105], b[105];

signed main() {
    scanf("%d", &amp;n);//NOLINT
    for (int i = 1; i &lt;= n; i++) {
        for (int j = 1; j &lt;= n; j++)scanf("%lf", &amp;a[i][j]);//NOLINT
        sc.]]></description><category></category></item><item><title><![CDATA[高次同余方程]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/105774732</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/105774732</guid><author>dong_pope</author><pubDate>Sun, 26 Apr 2020 18:38:22 +0800</pubDate><description><![CDATA[int Power(int q, int n, int p) {
    if (n == 0)return 1 % p;
    if (q == 0)return 0;
    int ans = Power(q * q % p, n / 2, p);
    if (n &amp; 1)ans *= q;//NOLINT
    return ans % p;
}

int BSGS(in...]]></description><category></category></item><item><title><![CDATA[最小斯坦纳树]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/105717769</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/105717769</guid><author>dong_pope</author><pubDate>Thu, 23 Apr 2020 21:29:32 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;algorithm&gt;
#include &lt;queue&gt;

using namespace std;

const int INF = 0x3f3f3f3f;

int n, m, k, start[105], a[15], dp[105][1 &lt;&lt; 10];//NOLINT;
struct E...]]></description><category></category></item><item><title><![CDATA[线段树合并]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/105667333</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/105667333</guid><author>dong_pope</author><pubDate>Tue, 21 Apr 2020 20:49:46 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
#include &lt;queue&gt;

using namespace std;
const int MAXN = 1e5 + 5;

int n, m;
struct Edge {
    int to, next;
} edge[MAX...]]></description><category></category></item><item><title><![CDATA[后缀自动机]]></title><link>https://blog.youkuaiyun.com/dong_pope/article/details/105576596</link><guid>https://blog.youkuaiyun.com/dong_pope/article/details/105576596</guid><author>dong_pope</author><pubDate>Fri, 17 Apr 2020 11:31:28 +0800</pubDate><description><![CDATA[#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;algorithm&gt;

using namespace std;
const int MAXN = 1e6 + 5;

char s[MAXN];
int n = 0;
int tot = 1, last = 1;

struct Suffix_Automaton {...]]></description><category></category></item></channel></rss>