<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cugsl的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cugsl</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cugsl]]></copyright><item><title><![CDATA[HDU 6298（找规律+思维）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/86300800</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/86300800</guid><author>cugsl</author><pubDate>Fri, 11 Jan 2019 14:44:07 +0800</pubDate><description><![CDATA[题意
给一个数正整数 nnn，问是否存在三个数x,y,z,x,y,z,x,y,z, 他们能整除nnn且x+y+z=nx+y+z=nx+y+z=n。如果不存在输出−1-1−1，否则输出x×y×zx\times y \times zx×y×z，如果有多个值，输出最大的那个。
分析
这个我们可以枚举几个例子，首先nnn最小从3开始




nnn
xxx
yyy
zzz




3
1
1
1


4
...]]></description><category></category></item><item><title><![CDATA[BZOJ 刷题计划]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/85105363</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/85105363</guid><author>cugsl</author><pubDate>Wed, 19 Dec 2018 18:55:41 +0800</pubDate><description><![CDATA[水题练手


巨水无比（4）
1214
3816


模拟/枚举/暴力（15）
4063傻子模拟；
1968小学生暴力；
1218前缀和暴力；
3856读英文；
4106直接算；
1800暴力判断；
2208暴力判断（要会邻接表）；
1028枚举；
1789&amp;amp;amp;amp;1830高能暴力；
2241暴力；
2120神奇的暴力；
4145子集暴力；
4029模拟处理；
1086DFS树；
1224暴力；...]]></description><category></category></item><item><title><![CDATA[Gym 101194H 2016 EC-Final H题]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/84938589</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/84938589</guid><author>cugsl</author><pubDate>Mon, 10 Dec 2018 13:38:01 +0800</pubDate><description><![CDATA[题意
  给一个n∗mn*mn∗m 的格子矩阵，现在要在这些格子里面填数，填的数字是 [1,k][1,k][1,k] 中的整数，每个数可以填多次。定义好格子：一个格子所在的行和列中的每个格子中的数都严格小于该格子中的数。假设 AgA_gAg​ 为矩阵中好格子数量为 ggg 时填数的方案数，现在要输出 ∑g=0n∗m(g+1)Ag\sum_{g=0}^{n*m}(g+1)A_g∑g=0n∗m​(g+...]]></description><category></category></item><item><title><![CDATA[POJ 1061 （扩展欧几里得）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/84844237</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/84844237</guid><author>cugsl</author><pubDate>Wed, 05 Dec 2018 21:55:05 +0800</pubDate><description><![CDATA[题意
有两只青蛙在圆环上，圆的周长为LLL，出生点分别为xxx,yyy。第一只青蛙每次可以跳mmm距离远，第二只青蛙每次可以跳nnn距离远，现在问你如果两只青蛙同时一直往一个方向跳，是否能过碰面。能的话输出跳的次数，不能碰面就输出“Impossible”
分析
  首先我们列几个式子分析一下，假设他们跳了ttt次且都往右边跳，那么对于第一只青蛙AAA有如下等式 la=mt+xl_a=mt+xla​...]]></description><category></category></item><item><title><![CDATA[UVA11300（数学思维题）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/84546877</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/84546877</guid><author>cugsl</author><pubDate>Mon, 26 Nov 2018 17:23:55 +0800</pubDate><description><![CDATA[题意
  nnn 个人围成一桌，每个人都有 aia_iai​ 个金币，他们可以将一部分金币分给左手边的一个人和有手边的一个人。设每个人分给其他人的金币数量为 xix_ixi​，求所有的 xxx 加起来最小是多少。注意，每个人只能将金币给他相邻的人。题目保证金币总和能被 nnn 整除。
分析
  设第iii个人给他左边伙计的金币数量为xix_ixi​，当 xi&amp;amp;amp;lt;0x_i&amp;amp;amp;lt;...]]></description><category></category></item><item><title><![CDATA[# 剑指offer 面试题（3）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/83784715</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/83784715</guid><author>cugsl</author><pubDate>Tue, 06 Nov 2018 11:50:10 +0800</pubDate><description><![CDATA[数组中重复的数字
题意
在长度为n的数组里的所有数字都在0~n-1的范围内。数组中有些数字是重复的，但不知道有几个是重复的，也不知道重复了几次。请找出数组中任意一个重复的数字。
分析
一开始没注意读题，他只让找到一个任意的重复的数字即可。最暴力的方式是枚举每一个数，看看数组中有没有其他的数与之相同。
这里的代码中，duplicate函数为solve函数，有三个 参数，numbers表示输入的数组，...]]></description><category></category></item><item><title><![CDATA[2018 徐州网络赛 Hard to prepare （递推）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82708196</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82708196</guid><author>cugsl</author><pubDate>Fri, 14 Sep 2018 20:14:43 +0800</pubDate><description><![CDATA[题意

有n个人围成一圈，现有一个k位二进制数，表示第i种帽子，所以一共有2k2k2_k种帽子。现在将这些个帽子分配给n个人，要求相邻的两个人之间的帽子所代表的二进制数，他们的同或和要大于0，问一共有多少种分配方法。



分析

看起来也像是一个高中的组合数学题目。手动模拟一下可以发现，对于每一个二进制数，有且仅有一个与之对应的二进制数跟他的同或和为0，因此如果每个人旁边只有一种帽子不能放，其他...]]></description><category></category></item><item><title><![CDATA[POJ 1426（模运算+bfs）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82683592</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82683592</guid><author>cugsl</author><pubDate>Thu, 13 Sep 2018 10:11:05 +0800</pubDate><description><![CDATA[题意

给一个数n(n&amp;lt;=200),找到一个n的倍数x，x的十进制表示形式中只有1和0



分析

如果这个倍数很小的话我们可以直接bfs每一位，然后找到能整除的即可，但显然最后的数肯定超过了范围。我们还能发现由n个1组成的数一定是满足题意的，但是题目又要求结果的长度不能超过100。

换个思路想想，整除，就是余数为0，按照最开始的bfs的思路的话，我们是存了整个数，然后将整个数去模n看余...]]></description><category></category></item><item><title><![CDATA[HDU 5883（欧拉图+模拟）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82460739</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82460739</guid><author>cugsl</author><pubDate>Thu, 06 Sep 2018 14:27:41 +0800</pubDate><description><![CDATA[题意

给一个n个结点，m条边的图，每个点都有一个值。现在让你找出一条路径使得每条边经过且只经过一次。如果路径是P1-P2-…-Pn则定义分数x=p1^p2^…^pn(异或)。问能获得最大的分数是多少。如果没有这样的路径，则输出impossible



分析

一笔画问题，如果每个结点的度数为偶数，则能找到一条欧拉回路，且起点（也是终点）是任意的的；如果只有两个结点的度数为奇数，其他所有结点的度...]]></description><category></category></item><item><title><![CDATA[HDU 4699（栈）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82385972</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82385972</guid><author>cugsl</author><pubDate>Tue, 04 Sep 2018 16:35:32 +0800</pubDate><description><![CDATA[题意

现在要求模拟一个文档编辑，有5种操作，I x：在光标后面插入一个数字x，且光标后以一位，相当于输入；D：删除光标前面的一个数字，相当于backpack；L：将光标向左移动一位；R：光标向右移动一位；Q x：查询前x个数字的最大前缀和，保证x在光标位置之前。



分析

由于每次操作都是在光标所在的位置，而且只改变一位。所以我们可以用光标模拟栈顶指针，将光标左边的数字，也就是有效数字存进一...]]></description><category></category></item><item><title><![CDATA[POJ 2484（博弈论）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82315689</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82315689</guid><author>cugsl</author><pubDate>Sun, 02 Sep 2018 15:12:09 +0800</pubDate><description><![CDATA[题意

有n个石子摆成一圈，Bob和Alice两个人轮流取，Alice先取。每次可以取一个或者连续的两个，当两个石子中间的石子被取走以后中间留下空位，中间有空位的两个石子不算连续。输入n，输出最后谁会获胜。



分析

先枚举几个看看情况。


首先n=1,2的时候Alice可以一次性拿完，肯定是Alice赢。
n=3的时候Alice无论怎么取，Bob都可以直接拿走剩下的，所以是Bob赢
n=4...]]></description><category></category></item><item><title><![CDATA[HDU 1846（巴什博奕模板）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82313746</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82313746</guid><author>cugsl</author><pubDate>Sun, 02 Sep 2018 11:03:43 +0800</pubDate><description><![CDATA[题意

假定有n个石子堆成一堆，两个人轮流取石子，最后没有石子可取的人为输，问谁最后能赢。



分析

首先0肯定是必败态，而1,2…m都是必胜态，因为他们都可以一次性取完。然后m+1是必败态，因为无论进行何种操作都是必胜态。依次类推，m+1+1…m+1+m，都是必胜态。且m+1+m+1也就是2(m+1)是必败态。所以如果n能被m+1整除，则n是必败态，否则先手必胜。



代码



#inc...]]></description><category></category></item><item><title><![CDATA[HDU 2149（巴什博奕变形）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82313605</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82313605</guid><author>cugsl</author><pubDate>Sun, 02 Sep 2018 10:50:47 +0800</pubDate><description><![CDATA[这个题和HDU 2188题意是一样的，只是输出的时候不同，具体题意和分析见这里

注意这两个题的m，n的意义是相反的，这里统一用2188的 
这个题要输出第一步出的价格，经过我们上面的分析，从n开始往下走每次减去m+1的时候都是必胜态，所以模拟一下会发现n%（m+1）得到的就是第一步走的必胜态，所以一定是这个。但是还有一点，如果n...]]></description><category></category></item><item><title><![CDATA[HDU 2188（巴什博奕）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82313207</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82313207</guid><author>cugsl</author><pubDate>Sun, 02 Sep 2018 10:15:28 +0800</pubDate><description><![CDATA[题意

开始总数为0，两个人轮流取数，最大的数不超过m，优先使总数达到n的人取胜。现在给定n和m，问谁能赢



分析

这个题跟标准的巴什博奕还是有一点点的区别，这里先讲下什么是巴什博奕。假定有n个石子堆成一堆，两个人轮流取石子，最后没有石子可取的人为输，问谁最后能赢。首先0肯定是必败态，而1,2…m都是必胜态，因为他们都可以一次性取完。然后m+1是必败态，因为无论进行何种操作都是必胜态。依次类...]]></description><category></category></item><item><title><![CDATA[POJ 2304（博弈论）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82290348</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82290348</guid><author>cugsl</author><pubDate>Sat, 01 Sep 2018 20:20:21 +0800</pubDate><description><![CDATA[题意

给定两个数a和b,每次可以选择用大的数减去小的数的k倍，得到新的数，这个数必须大于0。就是不能把他减成负数。每个人轮流操作，输出最后谁能赢。



分析

先看如果b至多可以减去两个a的情况。则如果b减去2a，也就是减的比a小是必败态，那么我就是必胜态。如果减得比a小时必败态，那么我就只减去一个a，轮到我的对手的话就到了b刚好大于a的这种情况，所以他只能选择让b减得比a小也就是必败态。同理...]]></description><category></category></item><item><title><![CDATA[Wannafly23 A（尺取法模板）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/82284355</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/82284355</guid><author>cugsl</author><pubDate>Sat, 01 Sep 2018 09:37:46 +0800</pubDate><description><![CDATA[题意

给一个字符串，问包含26个小写字母的子串中，最短的长度是多少



分析

尺取法的模板题，子串是连续的，而且题目保证了一定存在这样的子串。那么取两个指针，后一个指针往后扫。一旦有满足题意的子串，就让前面的指针也往后扫，直到后面的指针扫不够了，在这个过程中，两个指针表示的就是当前的子串。指针每次变动一个我们就check一下是否包含26个字母，然后取最小的即可。



代码



#incl...]]></description><category></category></item><item><title><![CDATA[POJ 1930（模拟+思维）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/81909069</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/81909069</guid><author>cugsl</author><pubDate>Tue, 21 Aug 2018 15:54:00 +0800</pubDate><description><![CDATA[题意

给一个小于1大于0的无限循环小数，将其化成分数，输出分母最小的情况。



分析

首先题目给定了数字最长是9位，组成是0.abcde…这样的形式，所以可以直接读取中间的数字并用ll存起来。然后遍历9种循环情况，分别求出他们的分数形式。下面说下如何化成分数。

隐约记得这个是小学课本上的东西，首先将这个数乘pow(10,循环节的长度)，然后减去这个整数，举个例子，0.923333…这里我们...]]></description><category></category></item><item><title><![CDATA[POJ 3293（素数筛变形+思维）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/81841972</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/81841972</guid><author>cugsl</author><pubDate>Sun, 19 Aug 2018 21:14:28 +0800</pubDate><description><![CDATA[题意

对于一个正整数，如果它模4得1，则称这个数为H数；如果H数是质数，则称为质H数；如果一个H数是由两个质H数相乘得到的，就称之为H-semi-prime数。现在给定一个n，求1-n有少个H-semi-prime数。



分析

利用素数筛的思想，枚举两个H数，让其从小到大相乘，一开始从5*5,5*9..取的两个数一定是质H数，得到的就是要求的数，然后打个标记。在代码中，v数组保存的信息，如...]]></description><category></category></item><item><title><![CDATA[POJ 3126（素数筛+BFS）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/81841254</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/81841254</guid><author>cugsl</author><pubDate>Sun, 19 Aug 2018 20:14:25 +0800</pubDate><description><![CDATA[题意

给两个四位质数a,b, 每次只改变a的某一位，且得到的数a’必须是素数，问最少需要操作多少次才能使a变成b,不能则输出Impossible



分析

一个很纯的BFS的题目，先用素数筛打表，每次以O(1)的时间判断是否为素数。注意两个细节，千位不能是0，各位如果是偶数的话就没有必要搜索了。



代码



#include &amp;lt;iostream&amp;gt;
#include &amp;lt;...]]></description><category></category></item><item><title><![CDATA[UVA 10006（快速幂+暴力）]]></title><link>https://blog.youkuaiyun.com/cugsl/article/details/81838305</link><guid>https://blog.youkuaiyun.com/cugsl/article/details/81838305</guid><author>cugsl</author><pubDate>Sun, 19 Aug 2018 15:25:12 +0800</pubDate><description><![CDATA[题意

给你一个数n，问你这个数是不是卡迈克尔数。如果一个数是合数且满足对于每一个比它小的数a都有an=a(模n下)an=a(模n下)a^n=a(模n下);

分析

暴力判断即可，但是要注意先判断是否是质数，如果是质数一定不是卡迈克尔数，就不需要进行费马检验了。否则亲测超时。

代码



#include &amp;lt;iostream&amp;gt;
#include &amp;lt;cmath&amp;gt;
usin...]]></description><category></category></item></channel></rss>