<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Y390d的博客]]></title><description><![CDATA[ACM复习笔记]]></description><link>https://blog.youkuaiyun.com/godleaf</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; godleaf]]></copyright><item><title><![CDATA[Spring Security登录认证【前后端分离】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/108318403</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/108318403</guid><author>godleaf</author><pubDate>Mon, 31 Aug 2020 11:42:22 +0800</pubDate><description><![CDATA[1. 导入依赖
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt;
    &lt;artifactId&gt;spring-boot-starter-security&lt;/artifactId&gt;
&lt;/dependency&gt;

&lt;dependency&gt;
    &lt;groupId&gt;org.springframework.security&lt;/groupId]]></description><category></category></item><item><title><![CDATA[JAVA网络编程 -UDP篇（简单实现网络聊天）]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/108189153</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/108189153</guid><author>godleaf</author><pubDate>Sun, 23 Aug 2020 21:44:38 +0800</pubDate><description><![CDATA[通过UDP实现网络聊天

多线程实现UDP网络聊天

1. 编写UDP发送线程UdpSendThread

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.*;

public class UdpSendTread implements Runnable{
    DatagramSocket datagramSocket = null;
]]></description><category></category></item><item><title><![CDATA[TCP发送实现]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/108081682</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/108081682</guid><author>godleaf</author><pubDate>Tue, 18 Aug 2020 16:52:19 +0800</pubDate><description><![CDATA[网络编程 TCP实现

TCP和UDP区别：TCP相当于打电话，双方需要同时在线连接，UDP相当于发邮件，一方发送，接收方不要求在线，在线即可接收发送方发送的消息

1. 编写发送方实体类 TcpSender（客户端）
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.Socket;

public class TcpSender {
    public]]></description><category></category></item><item><title><![CDATA[Spring JPA环境搭建]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/108061097</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/108061097</guid><author>godleaf</author><pubDate>Mon, 17 Aug 2020 18:00:05 +0800</pubDate><description><![CDATA[导入依赖
spring核心依赖
&lt;!-- https://mvnrepository.com/artifact/org.springframework/spring-beans --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;org.springframework&lt;/groupId&gt;
    &lt;artifactId&gt;spring-beans&lt;/artifactId&gt;
    &lt;version&gt;5.2.8.RELE]]></description><category></category></item><item><title><![CDATA[Codeforces Round #550 (Div. 3) E 【数学】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88959198</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88959198</guid><author>godleaf</author><pubDate>Mon, 01 Apr 2019 22:59:47 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1144

把字符串当作26进制数，通过 (L+R)/2 ，取中间值再转成字符串就是答案。

因为字符串的长度很大，算出来的数会溢出，所以需要一些技巧。

假设有两个字符串 abc, efg

那么就有 

通过不断的 % 26得到每个位的数字。我们可以发现的是，我们其实只需要对括号内的数字 %26 就能得出结果了。
...]]></description><category></category></item><item><title><![CDATA[POJ 1062 昂贵的聘礼 【最短路】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88952061</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88952061</guid><author>godleaf</author><pubDate>Mon, 01 Apr 2019 17:07:54 +0800</pubDate><description><![CDATA[题目链接：http://poj.org/problem?id=1062

假设一个起点0，根据题目给出的权值构图，答案就是从0到1之间的最短路。

这里要注意的是这个等级限制的问题。

首先等级限制不是相邻点之间的限制，而是整体路径的。

等级的限制可以通过假设一个点为最低点求最短路，我假设某个点是最短路中等级最低的，然后求最短路。每枚举一个点就求一次最短路，取最小的值。

因为你枚举的点已经是等...]]></description><category></category></item><item><title><![CDATA[POJ - 2502 Subway 【最短路】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88943386</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88943386</guid><author>godleaf</author><pubDate>Mon, 01 Apr 2019 10:51:12 +0800</pubDate><description><![CDATA[题目链接：http://poj.org/problem?id=2502

所有点用走路的速度连接，相邻站点用地铁速度连接，跑最短路。

注意输出用 %.0f，取其他精度会WA


#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;vector&gt;
#include &...]]></description><category></category></item><item><title><![CDATA[HDU Taotao Picks Apples 【二分】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88916410</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88916410</guid><author>godleaf</author><pubDate>Sat, 30 Mar 2019 18:26:37 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=6406

先离线记录从左到右的单调递增数列，记为h[]

下面分几种情况：

修改的点x不在h里面：

1，值减少，答案不变；

2，值增加，二分h数组，答案减去点x右端比修改值小或者等于的个数。

修改的点x在h里面：

1，值减少；

(1) x的值小于或者等于左端的值，答案加上x和x右端之间的最...]]></description><category></category></item><item><title><![CDATA[codeforces 1010D 【二分+交互】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88842442</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88842442</guid><author>godleaf</author><pubDate>Wed, 27 Mar 2019 13:41:11 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/problemset/problem/1011/D

题目让你在1到m之间猜一个数x，你每猜一个数，会得到三种回复，-1(x &lt; y) ，0(x == y), 1 (x &gt; y)。

而且每次回答都不一定是正确的回答，会根据一个序列p，0为错误回答，1为正确回答，的规律回复你。

首先需要确定序列p，这里的方法是问n次数字1来...]]></description><category></category></item><item><title><![CDATA[POJ 2018 【二分答案+dp求最大区间段】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88805874</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88805874</guid><author>godleaf</author><pubDate>Mon, 25 Mar 2019 21:08:19 +0800</pubDate><description><![CDATA[题目链接：http://poj.org/problem?id=2018

从0到2000000(2000*1000) 枚举平均值，让数组统一减去枚举的平均值，如果存在区间和大于等于0的，就说明答案是成立的。

关键是如果求最大的区间和。

假设不限制区间的长度，求某一个数组的最大区间和应该怎么求？

如果dp[i]表示的是某左界到右界 i 的最大区间和，那么dp[i+1] 应该如果求？

因为要求...]]></description><category></category></item><item><title><![CDATA[HDU - 2546 饭卡 【01背包+排序】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88713602</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88713602</guid><author>godleaf</author><pubDate>Thu, 21 Mar 2019 14:06:33 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=2546

题目问的是最小容量，而且容量可能会负数，我们可以换个角度解决问题，比如题目允许的容量是 5~m，我们可以把容量设置成

m~2*m-5，这样做的好处是能把可能为负数的结果变成正数，那么就可以用01背包求解问题(dp[容量])，求的是最大值。

另外需要给价格排序，比如下面这个两个数据，自己可以...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #546 (Div. 2) D. Nastya Is Buying Lunch 【思维】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88648933</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88648933</guid><author>godleaf</author><pubDate>Mon, 18 Mar 2019 20:29:24 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1136/problem/D

让所有能和最后一个点交换的点尽可能多且连续的排列在尾部，才能让最后一个点尽可能的排在前面，这个应该比较好理解。

这里我们假想存在这么一个队列P，最初的时候，队列P的个数为0，那么就有下面这种假想的情况存在。

a1, a2, a3, a4, [P], a5

首先存在这么一个判断，a4是否能和a...]]></description><category></category></item><item><title><![CDATA[HDU - 2888 Check Corners 【RMQ（二维线段树 / ST）】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88358520</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88358520</guid><author>godleaf</author><pubDate>Fri, 08 Mar 2019 21:10:04 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=2888

第一种方法是二维线段树，注意的地方在代码注释的部分。第二种方法是 ST算法，在后面。


#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cstdlib&amp;gt;
#include &amp;lt;cstdio&amp;gt;
#include &amp;lt;cstring&amp;gt;
#i...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #538 (Div. 2) C. Trailing Loves (or L'oeufs?) 【数论】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88295226</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88295226</guid><author>godleaf</author><pubDate>Thu, 07 Mar 2019 12:21:59 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1114/problem/C

一个十进制数的二进制展开式中，次幂最小的那个数就是这个二进制数中末尾0的个数，所以题目的问题可以改成求某进制数的展开式中最小的那个次幂，也就是 n! % (b^r) == 0，满足这个式子的情况下，r能取的最大值。

这道题有一个结论非常重要，如果你不知道的话，是做不出来的。

假设n！= p1...]]></description><category></category></item><item><title><![CDATA[HDU - 3486  Interviewe 【ST表】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88232541</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88232541</guid><author>godleaf</author><pubDate>Wed, 06 Mar 2019 13:53:23 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=3486

ST表模板题。

这里把题目的问题改一下。

给N个面试的人分组，每一个组安排一个面试官，每一组的人数要相同，每一组只选价值最高的，每一组价值最高的加起来要大于K，让你求出至少需要多少组才能满足题目的要求(也就是要求面试官尽可能的少)，这里要注意，假设我给N个面试的人分了5组，如果前几组价值最...]]></description><category></category></item><item><title><![CDATA[UVA - 11478 Halum 【二分答案+spfa】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88076818</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88076818</guid><author>godleaf</author><pubDate>Sat, 02 Mar 2019 16:34:10 +0800</pubDate><description><![CDATA[题目链接：https://cn.vjudge.net/problem/UVA-11478

这道题有两点收获。

1，stack的spfa的确要比queue的spfa快很多，如果发现queue的spfa超时的话，可以试试用stack。

2，之前的spfa模板给记错了，我以为松弛的次数是边的数目，今天才发现松弛的次数应该是点的数目，在搞错这个的情况下，我用stack就AC了，之前一直T，我是和别人...]]></description><category></category></item><item><title><![CDATA[POJ - 3159 Candies 【向前星+dij】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88056683</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88056683</guid><author>godleaf</author><pubDate>Fri, 01 Mar 2019 14:10:14 +0800</pubDate><description><![CDATA[题目链接：http://poj.org/problem?id=3159

差分约束问题，下面把要注意的地方讲下。

首先这道题是卡队列的，如果你用的是spfa，要把queue换成stack才能过，至于为什么就不是很清楚了（可能是因为题目的数据是稠密图，每次队列的插入和删除开销大，和下面要用向前星一样，vector比较适合用来存储稀疏图的边，而稠密图最好用向前星），要么就是dij的堆优化。

如果你...]]></description><category></category></item><item><title><![CDATA[POJ - 2983 Is the Information Reliable 【spfa解决差分约束问题】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/88029353</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/88029353</guid><author>godleaf</author><pubDate>Thu, 28 Feb 2019 15:17:11 +0800</pubDate><description><![CDATA[题目链接：http://poj.org/problem?id=2983

原理在上篇博客已经讲过了，这里把要注意的讲下。

1，因为差分约束问题都是不等式约束，以不等式为基础给题目建图，但是如果题目给出的约束条件是 d[u] - d[v] == w，怎么处理？

w &amp;lt;= d[u] - d[v] &amp;lt;=w，这样就能表示d[u] - d[v] == w这个条件，一条正向正权值，一条反向负...]]></description><category></category></item><item><title><![CDATA[POJ - 2019  Cornfields 【二维线段树】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/87989300</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/87989300</guid><author>godleaf</author><pubDate>Wed, 27 Feb 2019 20:53:46 +0800</pubDate><description><![CDATA[题目链接：https://vjudge.net/problem/POJ-2019

我写的这个二维线段树没什么技巧，就是直接开一个 node[cur][cure]，cur代表的是x轴的一维线段树，cure代表的是y轴的一维线段树。

初始化：

先从x轴开始做线段树的操作，当x轴到达叶节点时，再对y轴做线段树的操作，x轴返回到父节点时，一样要对y轴从1到N重头做一次线段树的操作，这是初始化的过程，...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #542 [Alex Lopashev Thanks-Round] (Div. 2) Toy Train 【贪心】]]></title><link>https://blog.youkuaiyun.com/godleaf/article/details/87940133</link><guid>https://blog.youkuaiyun.com/godleaf/article/details/87940133</guid><author>godleaf</author><pubDate>Tue, 26 Feb 2019 18:46:14 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1130/problem/D2

贪心的策略还算比较容易找的，但是会比较难写。

贪心策略是每次都取离当前车站最远的一颗糖，这样能多经过几个车站多取几颗糖，省时间。

但是写起来特别麻烦。

但是如果你能把这道题的问题写成一个公式，那么会简单很多。

假设5个车站，只有一个车站有3颗糖，并且这3颗糖都不是当前车站的。这个时候我们...]]></description><category></category></item></channel></rss>