<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ldxxx的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/jmsyzldx</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; jmsyzldx]]></copyright><item><title><![CDATA[codeforces-939E  Maximize!]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/97760595</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/97760595</guid><author>jmsyzldx</author><pubDate>Tue, 30 Jul 2019 10:47:26 +0800</pubDate><description><![CDATA[题意
维护一个集合，两种操作：
1、向集合加入一个数，保证这个数比集合中所有数都大
2、在集合中找一个子集，使子集中最大值减平均值最大，输出这个最大值
解题思路
加入第iii个数AiAiAi后，考虑包含AiAiAi的子集对ansansans的影响。
因为所选子集中最大值已经确定为AiAiAi，只需尽可能减小子集中的平均值。
由贪心的思想，一定尽可能选较小的数，即选取的一定为序列AAA的一个前缀，于...]]></description><category></category></item><item><title><![CDATA[【bzoj 2989】数列]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/80815552</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/80815552</guid><author>jmsyzldx</author><pubDate>Tue, 26 Jun 2018 15:08:33 +0800</pubDate><description><![CDATA[传送门~



解题思路

可将A[i]A[i]A[i]抽象为二维平面上的点(i,A[i])(i,A[i])(i,A[i])，询问就是求与给定点曼哈顿距离小于等于kkk的点数，修改则是加点操作。 
把曼哈顿距离转化为切比雪夫距离，询问就变成了给定(x,y)(x,y)(x,y)，转为切比雪夫距离后为(x+y,x−y)(x+y,x−y)(x+y,x-y)，求矩形(x+y−k,x+y+k,x−y−k,x...]]></description><category></category></item><item><title><![CDATA[【bzoj 1009】GT考试]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/80765873</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/80765873</guid><author>jmsyzldx</author><pubDate>Fri, 22 Jun 2018 13:28:49 +0800</pubDate><description><![CDATA[传送门~



解题思路

求一个序列，要求其中没有任意一段与给定串匹配。 
暴力做法：f[i][j]表示枚举到序列的第i个位置，在给定串中匹配到第j个位置的方案数。在第i+1个位置放0~9时会令j发生改变，改变到多少需要用到next数组。

对于给定串的任意位置i，预处理出在第i+1个位置的十种选择方案中，转移到位置j的情况有几种， 
可以视作M+1M+1M+1行M+1M+1M+1列矩阵GGG。...]]></description><category></category></item><item><title><![CDATA[【bzoj 1008】越狱]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/80765544</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/80765544</guid><author>jmsyzldx</author><pubDate>Thu, 21 Jun 2018 20:08:16 +0800</pubDate><description><![CDATA[传送门~



解题思路

直接求越狱情况不好求，但是不越狱情况很好求，就是m*(m-1)^n。 
 然后用总情况减去就好了。 
代码：



#include&amp;lt;cstdio&amp;gt; 
#include&amp;lt;algorithm&amp;gt; 
#include&amp;lt;cmath&amp;gt; 
#include&amp;lt;iostream&amp;gt; 
#include&amp;lt;cstring&amp;gt; 
#in...]]></description><category></category></item><item><title><![CDATA[Splay模板]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/80055505</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/80055505</guid><author>jmsyzldx</author><pubDate>Mon, 23 Apr 2018 20:07:51 +0800</pubDate><description><![CDATA[【bzoj 3224】代码：

#include&amp;lt;algorithm&amp;gt;
#include&amp;lt;iostream&amp;gt;
#include&amp;lt;cstring&amp;gt;
#include&amp;lt;string&amp;gt;
#include&amp;lt;cstdio&amp;gt;
#include&amp;lt;cmath&amp;gt;
#include&amp;lt;cstdlib&amp;gt;
using namespace s]]></description><category></category></item><item><title><![CDATA[【bzoj 3489】A simple rmq problem（KD-Tree模板）]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79700592</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79700592</guid><author>jmsyzldx</author><pubDate>Mon, 26 Mar 2018 17:00:19 +0800</pubDate><description><![CDATA[传送门~ 
作为简易的K−dK−dK-d treetreetree模板 
将一个数作为一个点(x,y,z)(x,y,z)(x,y,z) 
xxx为该点位置，yyy为左面第一个和它一样的数的位置，zzz是右面第一个和他一样的数的位置 
问题转化成，给定lll和rrr，求一个权值最大的点，使 
 y&amp;lt;ly&amp;lt;lyz&amp;gt;rz&amp;gt;rz&gt;r 
  r=&amp;gt;x=&amp;gt;lr=&amp;gt;x=...]]></description><category></category></item><item><title><![CDATA[读入输出优化]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79700379</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79700379</guid><author>jmsyzldx</author><pubDate>Mon, 26 Mar 2018 16:49:37 +0800</pubDate><description><![CDATA[inline int read(){
    int f=1,x=0;char c=getchar();
    while(c&amp;lt;'0' || c&amp;gt;'9') {if(c=='-') f=-1;c=getchar();}
    while(c&amp;gt;='0' &amp;amp;&amp;amp; c&amp;lt;='9') {x=(x&amp;lt;&amp;lt;3)+(x&amp;lt;&amp;lt;1)+c-'0';c=getch...]]></description><category></category></item><item><title><![CDATA[【bzoj 2017】硬币游戏]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189886</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189886</guid><author>jmsyzldx</author><pubDate>Sun, 28 Jan 2018 21:48:39 +0800</pubDate><description><![CDATA[传送门~ 
非常棒的一道题。f[i][j]" role="presentation" style="position: relative;">f[i][j]f[i][j]f[i][j]表示剩i枚硬币时取j个最多拿到多少，sum[i]" role="presentation" style="position: relative;">sum[i]sum[i]sum[i]表示最后i枚硬币的价值和，状态转]]></description><category></category></item><item><title><![CDATA[【bzoj 1552】排序机械臂]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189790</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189790</guid><author>jmsyzldx</author><pubDate>Sun, 28 Jan 2018 21:39:14 +0800</pubDate><description><![CDATA[传送门~



解题思路

支持区间翻转。 
代码：



#include
#include
#include
#include
#include
#include
#include
using namespace std;
int n;
struct ldx{
    int x,wi; 
    bool operator < (const ldx p) const{
        ret]]></description><category></category></item><item><title><![CDATA[【bzoj 2743】采花]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189741</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189741</guid><author>jmsyzldx</author><pubDate>Sun, 28 Jan 2018 21:32:34 +0800</pubDate><description><![CDATA[传送门~



解题思路

将所有询问(x,y)" role="presentation" style="position: relative;">(x,y)(x,y)(x,y)按y" role="presentation" style="position: relative;">yyy排序，用一个树状数组维护前y" role="presentation" style="position: rel]]></description><category></category></item><item><title><![CDATA[【bzoj 3132】上帝造题的七分钟]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189656</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189656</guid><author>jmsyzldx</author><pubDate>Sun, 28 Jan 2018 21:23:12 +0800</pubDate><description><![CDATA[传送门



解题思路

二维树状数组。 
对于修改操作单开一个矩阵，修改时利用差分思想，这样每个点S[i][j]" role="presentation" style="position: relative;">S[i][j]S[i][j]S[i][j]的前缀和表示这个点修改了多少。 
对于一个查询(x,y)" role="presentation" style="position: relat]]></description><category></category></item><item><title><![CDATA[【bzoj 1070】修车]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189464</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79189464</guid><author>jmsyzldx</author><pubDate>Sun, 28 Jan 2018 21:00:13 +0800</pubDate><description><![CDATA[传送门~



解题思路

把 m" role="presentation" style="position: relative;">mmm 个技术人员拆成 n" role="presentation" style="position: relative;">nnn 个点，分别表示这个技术人员修的倒数第 i" role="presentation" style="position: relativ]]></description><category></category></item><item><title><![CDATA[【bzoj 2326】数学作业]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79138875</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79138875</guid><author>jmsyzldx</author><pubDate>Tue, 23 Jan 2018 13:56:34 +0800</pubDate><description><![CDATA[传送门~



解题思路

矩阵乘法。 
代码：



#include
#include
#include
#include
#include
#include
#include
#define ll long long
using namespace std;
ll n,p,now=0;
struct ldx{
    ll s[4][4];
    ldx() {memset(s,0,siz]]></description><category></category></item><item><title><![CDATA[【bzoj 2257】瓶子和燃料]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79137454</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79137454</guid><author>jmsyzldx</author><pubDate>Tue, 23 Jan 2018 11:14:28 +0800</pubDate><description><![CDATA[传送门~



解题思路

n" role="presentation" style="position: relative;">nnn 个数中选 k" role="presentation" style="position: relative;">kkk 个使这 k" role="presentation" style="position: relative;">kkk 个数的最大公因数尽可能大]]></description><category></category></item><item><title><![CDATA[【bzoj 1441】Min]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79137215</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79137215</guid><author>jmsyzldx</author><pubDate>Tue, 23 Jan 2018 10:59:01 +0800</pubDate><description><![CDATA[传送门~



解题思路

裴蜀定理，S大于零的最小值一定是所有数的gcd。 
代码：

#include 
#include 
#include 
#include 
#include 
#include 
#include 
using namespace std; 
int ai,n,x; 
int main() 
{ 
    scanf("%d%d",&n,&ai); 
    for(]]></description><category></category></item><item><title><![CDATA[【bzoj 2005】能量采集]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79108113</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79108113</guid><author>jmsyzldx</author><pubDate>Fri, 19 Jan 2018 16:20:50 +0800</pubDate><description><![CDATA[传送门~



解题思路

对于一个点(x,y)(x,y)，设gcd(x,y)=t\gcd(x,y)=t，点(x,y)(x,y)对答案的贡献为(t−1)×2+1=t×2−1(t-1)\times2+1=t\times2-1。 
用f[i]f[i]表示最大公因数为ii的(x,y)(x,y)有多少个。易证以ii为公因数的个数为(n÷i)×(m÷i)(n\div i)\times(m\div i)，再减]]></description><category></category></item><item><title><![CDATA[【bzoj 1013】球形空间产生器sphere]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79103641</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79103641</guid><author>jmsyzldx</author><pubDate>Fri, 19 Jan 2018 10:18:54 +0800</pubDate><description><![CDATA[传送门~解题思路用距离公式以后式子里有r2r^2，所以相邻两个式子相减消去r2r^2，之后高斯消元。 
代码#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstdio>
#include<cstring>
#include<string>
#include<cstdlib>
using namespace std;
d]]></description><category></category></item><item><title><![CDATA[【洛谷 P3389】高斯消元法（高斯消元模板）]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79102808</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79102808</guid><author>jmsyzldx</author><pubDate>Fri, 19 Jan 2018 09:23:53 +0800</pubDate><description><![CDATA[传送门~



解题思路

留着自己看的高斯消元模板。 
代码：



#include
#include
#include
#include
#include
#include
#include
using namespace std;
const double eps=1e-8;
double f[110][110];
int n;
void gauss(){
    for(int i=1;]]></description><category></category></item><item><title><![CDATA[【bzoj 4563】放棋子]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79087749</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79087749</guid><author>jmsyzldx</author><pubDate>Wed, 17 Jan 2018 17:16:45 +0800</pubDate><description><![CDATA[传送门~



解题思路

错排公式：f(n)=(n−1)∗(f(n−1)+f(n−2))f(n)=(n-1)*(f(n-1)+f(n-2))； 
特殊的：f(1)=0,f(2)=1f(1)=0,f(2)=1。 
代码：



#include
#include
#include
#include
#include
#include
#include
using namespace std;
st]]></description><category></category></item><item><title><![CDATA[【bzoj 4927】第一题]]></title><link>https://blog.youkuaiyun.com/jmsyzldx/article/details/79087443</link><guid>https://blog.youkuaiyun.com/jmsyzldx/article/details/79087443</guid><author>jmsyzldx</author><pubDate>Wed, 17 Jan 2018 16:57:36 +0800</pubDate><description><![CDATA[传送门~



解题思路

一道神题，被虐了好久才调出来。。。 
用六根拼正方形一共只有两种情况： 
 
对于情况(1)，我们先将所有数排序，然后枚举 iii 作为图(1)中紫色的边，即上面三个边中最长的边，同时记录num[x]num[x]num[x]存前 i−1i−1i-1 个数两两相加得 xxx 的方案数。再从 iii 向后枚举 jjj 作为红色边来统计答案。 
对于情况(2),先将排好序的数...]]></description><category></category></item></channel></rss>