<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[sortmin的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/sortmin</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; sortmin]]></copyright><item><title><![CDATA[Google kickstart 2020 Round A题解]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/105096276</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/105096276</guid><author>sortmin</author><pubDate>Wed, 25 Mar 2020 15:39:10 +0800</pubDate><description><![CDATA[A题题意：给定n个房子及其价格，自己有B美元，求最多能买多少个房子

题解：将房子价钱排序后从小到大购买即可。

AC代码：


#include&lt;bits/stdc++.h&gt;
using namespace std;
int main() {
    int t;
    int n;
    int budgt;
    cin&gt;&gt;t;
    for (int j =...]]></description><category></category></item><item><title><![CDATA[Leetcode常用模板-字典树]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/104068848</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/104068848</guid><author>sortmin</author><pubDate>Wed, 22 Jan 2020 11:45:12 +0800</pubDate><description><![CDATA[const int char_size = 26;

struct charTreeNode {
    int check;
    charTreeNode* children[char_size];
    charTreeNode() {
        check = 0;
        for (int i = 0; i &lt; char_size ; i++) {
      ...]]></description><category></category></item><item><title><![CDATA[Leetcode常用小模板]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/104035657</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/104035657</guid><author>sortmin</author><pubDate>Sun, 19 Jan 2020 02:24:19 +0800</pubDate><description><![CDATA[常用数字转字符串：


const string one[21] = {"", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "E...]]></description><category></category></item><item><title><![CDATA[Leetcode 1278. Palindrome Partitioning III]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/103482740</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/103482740</guid><author>sortmin</author><pubDate>Tue, 10 Dec 2019 20:49:52 +0800</pubDate><description><![CDATA[题意：给定一个字符串s和一个整数k，可以将字符串的某个字母更改为任意字母，求将s分割为k段，每段都为回文串的最少改动次数。

题解：dp[i][j]表示从i-j的字符串变为回文串的最少修改次数。然后记忆化搜索即可。

AC代码：


class Solution {
public:
    map&lt;pair&lt;int, int&gt;, int&gt; Q;
    int dp[107...]]></description><category></category></item><item><title><![CDATA[Leetcode 1284 Minimum Number of Flips to Convert Binary Matrix to Zero Matrix]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/103482646</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/103482646</guid><author>sortmin</author><pubDate>Tue, 10 Dec 2019 20:43:37 +0800</pubDate><description><![CDATA[题意：给定一个01矩阵，每次可以翻转一个数字，同时它的上下左右也会翻转，求最少翻转次数使得矩阵全为1

题解：n &lt;=3, m &lt;= 3，状压dp表示第i,j个坐标是否翻转，求最小次数即可。

AC代码：


class Solution {
public:
    int minFlips(vector&lt;vector&lt;int&gt;&gt;&amp; mat) {
   ...]]></description><category></category></item><item><title><![CDATA[字符串系列之回文树（模板+例题）（未更完）]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/82355371</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/82355371</guid><author>sortmin</author><pubDate>Tue, 04 Sep 2018 02:36:26 +0800</pubDate><description><![CDATA[回文树网上比较经典的模板为：Palindromic Tree——回文树【处理一类回文串问题的强力工具】，个人见过的也多为这个，网上还有一个邻接表的模板，较为省空间。原地址为回文树（附模板题URAL-1960）。回文树的有关视频讲解成电在B站的算法讲堂也有。

例题Ural1960：题目链接：http://acm.timus.ru/problem.aspx?space=1&amp;amp;num=1960
...]]></description><category></category></item><item><title><![CDATA[HDU 2609 How many（最小表示法模板+set判重）]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/82195143</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/82195143</guid><author>sortmin</author><pubDate>Thu, 30 Aug 2018 03:01:01 +0800</pubDate><description><![CDATA[题目链接： http://acm.hdu.edu.cn/showproblem.php?pid=2609

题意：

给定n个01组成的字符串，每个字符串是一个环状的结构，求可以经过循环旋转，最后不同的串有多少个。

题解：

求出每个字符串的最小表示，然后求hash值，set去重即可。

AC代码：


#include&amp;lt;iostream&amp;gt;
#include &amp;lt;algorith...]]></description><category></category></item><item><title><![CDATA[bzoj1031 [JSOI2007]字符加密Cipher]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/82194953</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/82194953</guid><author>sortmin</author><pubDate>Thu, 30 Aug 2018 01:18:15 +0800</pubDate><description><![CDATA[题目链接：https://www.lydsy.com/JudgeOnline/problem.php?id=1031

题目

喜欢钻研问题的JS 同学，最近又迷上了对加密方法的思考。一天，他突然想出了一种他认为是终极的加密办法：把需要加密的信息排成一圈，显然，它们有很多种不同的读法。例如下图，可以读作：

 

JSOI07 SOI07J OI07JS I07JSO 07JSOI 7JSOI0 ...]]></description><category></category></item><item><title><![CDATA[后缀数组模板]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/82194949</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/82194949</guid><author>sortmin</author><pubDate>Thu, 30 Aug 2018 00:30:44 +0800</pubDate><description><![CDATA[
#include&amp;lt;bits/stdc++.h&amp;gt;
const int maxn=100008;
int n,k;
int s[maxn];
int sa[maxn],rk[maxn],height[maxn],a[maxn],b[maxn],cnt[maxn];
inline void get_sa()
{
    int m=1000;
    int *rk_1=a,*sa_2=b...]]></description><category></category></item><item><title><![CDATA[2018杭电多校第三场（2018 Multi-University Training Contest 3）]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81293892</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81293892</guid><author>sortmin</author><pubDate>Mon, 30 Jul 2018 23:15:27 +0800</pubDate><description><![CDATA[                   2018 Multi-University Training Contest 3

题目链接：http://acm.hdu.edu.cn/contests/contest_show.php?cid=804

A题题解：每次取长度为m的子区间，找最大值和起点的最长递增序列。很明显是一个滑块区间维护最大值问题，但是正向维护很难处理count的问题，那么从后往前单调...]]></description><category></category></item><item><title><![CDATA[Ural 1416 Confidential（次小生成树）]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81160319</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81160319</guid><author>sortmin</author><pubDate>Sun, 22 Jul 2018 23:07:16 +0800</pubDate><description><![CDATA[题目链接：http://acm.timus.ru/problem.aspx?space=1&amp;amp;num=1416

题意：求最小生成树和次小生成树，没有输出-1

题解：次小生成树的其中一种求法是标记每一个点互相连接的最大边，标记最小生成树都用了那些边，然后遍历那些没用到的边，多链接一条边后去掉其中最大的一条边，找其中的最小值。

AC代码：


#include &amp;lt;iostream&amp;g...]]></description><category></category></item><item><title><![CDATA[Ural - 1028. Stars(二维树状数组)]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81134192</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81134192</guid><author>sortmin</author><pubDate>Fri, 20 Jul 2018 16:11:46 +0800</pubDate><description><![CDATA[题目链接；http://acm.timus.ru/problem.aspx?space=1&amp;amp;num=1028

题意：给定N个点，定义一个点的level为x，y坐标都比他小的点的数量，求level为0，1……n-1的点的数量。

题解：按x坐标排序，然后对y坐标进行树状数组统计即可。需要离散化。

AC代码：


#include &amp;lt;iostream&amp;gt;
#include &amp;lt...]]></description><category></category></item><item><title><![CDATA[SGU180  Inversions 离散 + 树状数组]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81130384</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81130384</guid><author>sortmin</author><pubDate>Fri, 20 Jul 2018 12:58:27 +0800</pubDate><description><![CDATA[There are N integers (1&amp;lt;=N&amp;lt;=65537) A1, A2,.. AN (0&amp;lt;=Ai&amp;lt;=10^9). You need to find amount of such pairs (i, j) that 1&amp;lt;=i&amp;lt;j&amp;lt;=N and A[i]&amp;gt;A[j].Input

The first line of the input cont...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #498 (Div. 3)(A,B,C,D,E,F)题解]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81091231</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81091231</guid><author>sortmin</author><pubDate>Wed, 18 Jul 2018 01:24:49 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1006

A题题意：给n个数，然后经过一系列操作，操作是依次将所有2*i-1换为2*i，然后再将2*i换为2*i-1。问最后的数组。

A题题解：其实就是把所有的偶数-1即可。

AC代码：


#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cmath&amp;gt;
#include &amp;lt;algo...]]></description><category></category></item><item><title><![CDATA[SGU - 271. Book Pile(双端队列)]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81091215</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81091215</guid><author>sortmin</author><pubDate>Wed, 18 Jul 2018 01:08:42 +0800</pubDate><description><![CDATA[题目链接：http://acm.sgu.ru/problem.php?contest=0&amp;amp;problem=271

There is a pile of N books on the table. Two types of operations are performed over this pile: 
- a book is added to the top of the pile, ...]]></description><category></category></item><item><title><![CDATA[UVa-1347 -Tour(DP)]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81063541</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81063541</guid><author>sortmin</author><pubDate>Mon, 16 Jul 2018 14:29:22 +0800</pubDate><description><![CDATA[题意：给定二维平面上的n个坐标，然后找到一条线路，从最左边的点出发，然后到最右边的点，然后再返回，只有起点和终点的点可以经过两次。找一条最短路。题解：走过去再走回来不经过相同的点可以转换为两个人分别走两条路去到达终点，用dp[i][j]表示两人最远的走到max(i,j)的情况，那么下一个决策就是看谁去走下一个点，即d[i][j]=min(dp[i+1][j]+dist[i][j],dp[i+1][...]]></description><category></category></item><item><title><![CDATA[The Tower of Babylon (UVA-437)]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/81058992</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/81058992</guid><author>sortmin</author><pubDate>Mon, 16 Jul 2018 01:10:19 +0800</pubDate><description><![CDATA[题目链接：https://vjudge.net/problem/UVA-437题意：给定N种立方体，每种无限个，可以任意旋转，问最高能立起来多少个，即上一个的长宽均小于下面的长宽。题解：每种旋转一共有6种情况，然后按排序从最大的往下找即可。AC代码：#include &amp;lt;iostream&amp;gt;
#include &amp;lt;algorithm&amp;gt;
#include &amp;lt;string&amp;gt...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #496 (Div. 3)(A,B,C,D,E1,E2)题解]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/80990791</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/80990791</guid><author>sortmin</author><pubDate>Tue, 10 Jul 2018 19:45:46 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1005A题题意：Tanya每次爬不定数目的楼梯，每走一步喊一次，求出每次爬的数目。A题题解：没碰见1就把上一次的数存进去最后输出即可。AC代码：#include&amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define _for(i,a,b) for(int i=a;i&amp;lt;=b;i...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #495 (Div. 2) (ABCE) 题解]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/80948098</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/80948098</guid><author>sortmin</author><pubDate>Sat, 07 Jul 2018 02:23:34 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1004A题题意：Sonya想在N个城市之间开店，他的每个店到城市的距离为d，求最多能开多少家店。A题题解：遍历相邻两城市距离，大于2*d就可以开两家，等于开一家，小于不能开即可。AC代码：#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define _for(i,a,b...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #494 (Div. 3) (ABCDE) 题解]]></title><link>https://blog.youkuaiyun.com/sortmin/article/details/80906606</link><guid>https://blog.youkuaiyun.com/sortmin/article/details/80906606</guid><author>sortmin</author><pubDate>Wed, 04 Jul 2018 04:14:12 +0800</pubDate><description><![CDATA[题目链接：http://codeforces.com/contest/1003A题题意：给定N个值，每个集合只能放不相同的数，问把所有值放进去最少需要多少个集合。A题题解：直接暴力统计最多出现的数的次数即可。AC代码：#include &amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
#define _for(i,a,b) for(int i=a;i&amp;lt;=b...]]></description><category></category></item></channel></rss>