<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[struct_liao的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/struct_liao</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; struct_liao]]></copyright><item><title><![CDATA[FFT]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/104525742</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/104525742</guid><author>struct_liao</author><pubDate>Sun, 28 Jun 2020 12:59:15 +0800</pubDate><description><![CDATA[想法：

FFT用来解决多项式相乘，A(x)=(a1*x^1+a2*x2^2.......+an*x^n)比如两个1000000位的数相乘可以看作两个n=1000000项的x=10的多项式相乘。

我们用点来代表多项式，n个点能解出n项多项式方程的系数，比如面两个1e6项多项式称出来我们就有2e6项，那么我们两边多项式都弄2e6个点然后y相乘就行了。

然鹅这样无论是造点还是解系数方程复杂度都是n...]]></description><category></category></item><item><title><![CDATA[BZOJ1010-玩具装箱toys]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/77996087</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/77996087</guid><author>struct_liao</author><pubDate>Fri, 15 Sep 2017 21:44:00 +0800</pubDate><description><![CDATA[落谷传送门 
题目描述P教授要去看奥运，但是他舍不下他的玩具，于是他决定把所有的玩具运到北京。他使用自己的压缩器进行压缩，其可以将任意物品变成一堆，再放到一种特殊的一维容器中。P教授有编号为1…N的N件玩具，第i件玩具经过压缩后变成一维长度为Ci.为了方便整理，P教授要求在一个一维容器中的玩具编号是连续的。同时如果一个一维容器中有多个玩具，那么两件玩具之间要加入一个单位长度的填充物，形式地说如果将第]]></description><category></category></item><item><title><![CDATA[浅谈关于斜率优化中为什么能转换为横截式]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/77995991</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/77995991</guid><author>struct_liao</author><pubDate>Fri, 15 Sep 2017 21:32:25 +0800</pubDate><description><![CDATA[通常的dp转移为现在处理到的dp[i]，要在前面的dp状态中找到一个最优的状态dp[k]转移过来。 
设转移方程为dp[i]=max{dp[i]，a[i]*x[k]+b[i]*y[k]} 
相当于在二维坐标系中有很多点，要选取最优的点，产生最优的价值。 
 
而几乎每个点的X坐标和Y坐标都不相同，怎么比较最优？ 
相信大部分人都已经猜到了。 
X和Y是存在转换比例的，且X转换到Y的比例就是a[i]/]]></description><category></category></item><item><title><![CDATA[最大网络流dinic算法—【hdoj1532】Drainage Ditches]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/75138969</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/75138969</guid><author>struct_liao</author><pubDate>Fri, 14 Jul 2017 23:44:33 +0800</pubDate><description><![CDATA[题目hdoj1532传送门 
落谷传送门 
题意：给出n个河流，m个点，以及每个河流的流量，求从1到m点的最大流量。 
Sample Input： 
5 4 
1 2 40 
1 4 20 
2 4 20 
2 3 30 
3 4 10Sample Output： 
50dinic算法每次都先bfs一遍，处理出一个层次图，然后dfs就可以多次用到这个图，相比EK每次都建一个图要快。并且层次图是最短路]]></description><category></category></item><item><title><![CDATA[莫队算法—【清ojA1206】【bzoj2038】小Z的袜子]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/75103658</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/75103658</guid><author>struct_liao</author><pubDate>Fri, 14 Jul 2017 12:10:48 +0800</pubDate><description><![CDATA[清橙oj传送门 
问题描述： 
　　作为一个生活散漫的人，小Z每天早上都要耗费很久从一堆五颜六色的袜子中找出一双来穿。终于有一天，小Z再也无法忍受这恼人的找袜子过程，于是他决定听天由命…… 
　　具体来说，小Z把这N只袜子从1到N编号，然后从编号L到R(L 尽管小Z并不在意两只袜子是不是完整的一双，甚至不在意两只袜子是否一左一右，他却很在意袜子的颜色，毕竟穿两只不同色的袜子会很尴尬。 
　　你的任务]]></description><category></category></item><item><title><![CDATA[后缀数组裸题-poj2774 Long Long Message]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/70162278</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/70162278</guid><author>struct_liao</author><pubDate>Thu, 13 Apr 2017 21:26:27 +0800</pubDate><description><![CDATA[多组数据，求两个字符串最长连续匹配的任意子串。 
连接两个字符串，在衔接处加一个比任意字符都大的一个字符，这样第一个串越靠近衔接处的开头的后缀就会在sa里面离你要匹配的串更远，因为是按字典序排序的，这样就可以保证答案的正确性了。 
sa里面和你相邻的绝对是和你相似度最高的，就是连续匹配前缀最长的。#include<stdio.h>
#include<stdlib.h>
#include<string]]></description><category></category></item><item><title><![CDATA[LCT裸题-[BZOJ2049][Sdoi2008]Cave 洞穴勘测]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/69005149</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/69005149</guid><author>struct_liao</author><pubDate>Mon, 03 Apr 2017 20:24:06 +0800</pubDate><description><![CDATA[我还是太naive了，splay循环的时候把更新f和g写到外面赋初值去了，然后就果不其然的T了。 
PS：我曾一度迷信科学，直到长者出现。 
两组样例，第一组是没问题的，第二组的空格是假的！是假的~假的~的。 
3 5 
Connect 1 2 
Connect 3 1 
Query 2 3 
Destroy 1 3 
Query 2 33 5 
Connect 1 2 
Connect 3 1]]></description><category></category></item><item><title><![CDATA[splay tree-hnoi2002 营业额统计]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/54808188</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/54808188</guid><author>struct_liao</author><pubDate>Wed, 01 Feb 2017 12:33:19 +0800</pubDate><description><![CDATA[多组数据，读到EOF的时候X=0//贼坑 
n个点，每插入一个点找到之前插入的点之中和它相差最小的点，ans+=两者之差。#include<stdio.h>
#include<stdlib.h>
#include<math.h>
const int oo=100000010;
int root,top,ans;
struct node{
    int l,r,f,w;
}tree[100010];]]></description><category></category></item><item><title><![CDATA[线段树+lazy-poj3468-A Simple Problem with Integers]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/54766914</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/54766914</guid><author>struct_liao</author><pubDate>Sat, 28 Jan 2017 14:32:10 +0800</pubDate><description><![CDATA[这道题贼坑爹，change的时候也要pushdown，不然回溯的时候会有问题。#include<stdio.h>
#include<stdlib.h>
#define lld long long
lld ans,a[100010];
int z;
struct node{
    int l,r;
    lld s,s1;
}tree[1000010];
void pushdown(int l,i]]></description><category></category></item><item><title><![CDATA[树链剖分-spoj375]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/54695296</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/54695296</guid><author>struct_liao</author><pubDate>Mon, 23 Jan 2017 18:57:00 +0800</pubDate><description><![CDATA[小心x==y的时候特判下#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
const int oo=10000010;
struct node{
    int w,u,v,next;
}a[40010];
int siz[20010],son[20010],begin[20010];
int deep[20010],top[20010]]></description><category></category></item><item><title><![CDATA[LCA-并查集+tarjan-poj2874]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/54633362</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/54633362</guid><author>struct_liao</author><pubDate>Fri, 20 Jan 2017 19:50:13 +0800</pubDate><description><![CDATA[要先加距离再回溯，多组数据是真的坑。#include<stdio.h>
#include<stdlib.h>
struct node{
    int to,next,w;
}a[20010];
struct node1{
    int to,next,ans;
}b[2000010];
int top,jl[10010],begin[10010],wenti[10010];
int fa[100]]></description><category></category></item><item><title><![CDATA[LCA之ST算法模板 poj-1986]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/54614430</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/54614430</guid><author>struct_liao</author><pubDate>Thu, 19 Jan 2017 12:04:44 +0800</pubDate><description><![CDATA[LCA之ST算法模板 poj-1986]]></description><category></category></item><item><title><![CDATA[poj2104-基础主席树]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/52196549</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/52196549</guid><author>struct_liao</author><pubDate>Sat, 13 Aug 2016 00:10:36 +0800</pubDate><description><![CDATA[//因为保证了树的相同所以可以线段树树加减从而求出欲求区域
#include
#include
#include
using namespace std;
const int oo=2000000010;
int s,ans,a[100010],b[100010],begin[100010];
struct node{
    int l,r,s;
}tree[2000010];]]></description><category></category></item><item><title><![CDATA[poj2155-二维线段树(树套树)]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/52196544</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/52196544</guid><author>struct_liao</author><pubDate>Sat, 13 Aug 2016 00:07:40 +0800</pubDate><description><![CDATA[//先确定x线段树再确定y线段树
#include
#include
int n,ans,x1,x2,y1,y2;
struct node{
    int l,r;
    struct node1{
        int l,r,s;
    }treey[4010];
}treex[4010];
void home2(int l,int r,int d,int p){]]></description><category></category></item><item><title><![CDATA[poj2706-麦森数-高精度快速幂]]></title><link>https://blog.youkuaiyun.com/struct_liao/article/details/52196537</link><guid>https://blog.youkuaiyun.com/struct_liao/article/details/52196537</guid><author>struct_liao</author><pubDate>Sat, 13 Aug 2016 00:05:08 +0800</pubDate><description><![CDATA[#include
#include
#include
int a[610],b[610],c[610],d,n,i,j,ldy;
int main(){
    scanf("%d",&n);
    int ldy=ceil( n* log10(2) );
    printf("%d\n",ldy);
    a[1]=2;
    b[1]=1;
    while(n!]]></description><category></category></item></channel></rss>