<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaotutuyahttp_的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaotutuyahttp_</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaotutuyahttp_]]></copyright><item><title><![CDATA[MQ保证消息幂等]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/147103230</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/147103230</guid><author>xiaotutuyahttp_</author><pubDate>Wed, 09 Apr 2025 22:22:13 +0800</pubDate><description><![CDATA[rocketmq可以在生产者发送消息时附带一个业务ID。而rabbitmq中消息可以有message-id字段，需要生产者主动设置message-id。所以如果要保证消息的幂等性，可以通过记录表（去重表）来判断当前的业务id是否存在，然后在消费端来实现幂等。]]></description><category></category></item><item><title><![CDATA[A 进攻（牛客小白月赛）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109701456</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109701456</guid><author>xiaotutuyahttp_</author><pubDate>Sun, 15 Nov 2020 11:06:07 +0800</pubDate><description><![CDATA[题目链接：
https://ac.nowcoder.com/acm/contest/8564/A
注意判断时巧妙得操作
#include &lt;iostream&gt;
#include &lt;algorithm&gt;
using namespace std;
typedef long long ll;
const int N = 1e6+10;
ll a[N],d[N];
int v[N];
struct Node{
	ll d;
	int v;
}node[N];
bool cmp1(Node n]]></description><category></category></item><item><title><![CDATA[J - Sum（南京预选赛周末训练赛）补题]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109564758</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109564758</guid><author>xiaotutuyahttp_</author><pubDate>Sun, 08 Nov 2020 21:21:50 +0800</pubDate><description><![CDATA[题意：（square-free integer ）无平方整数是除了1以外不被其它整数除的数.
一个数n = ab,问你有多少个a,b的组合，a,b都是无平方整数，用f(n)表示，让你求
思路：首先需明白欧拉筛，利用欧拉筛来求解每个的f(i)。
①欧拉筛首先是确定是否为素数，如果为素数，那么f(i)肯定就只有两个(（1，i），（i，1）)。
②然后欧拉筛就利用素数来筛去非素数，筛的每一步都是筛掉 i * primes[j], 那么这里就对 i*primes[j] 进行判断。
分为以下情况
Ⅰ  如果i%pr.]]></description><category></category></item><item><title><![CDATA[L Clock Master(2020 China Collegiate Programming Contest Weihai Site)补题]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109550385</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109550385</guid><author>xiaotutuyahttp_</author><pubDate>Sat, 07 Nov 2020 18:34:09 +0800</pubDate><description><![CDATA[题意：给你一个数b,求ans = b1 * b2 * b3 …最大,且b = b1+b2+b3…
其实就是求b1 ,b2, b3, b4 的最小公倍数的最大值。
思路：
任意一个数都可以质因数分解成
N = p1a1 *  p2a2  * p3a3…
所以我们可以这样来想这个问题
j将b看成是一个容量为b的背包；p1a1, p2a2,p3a3…不同的质数的不同次方看成是分成了一个组；这就是一个分组背包的问题了，从质数组中去选择，它们的和不超过b，求它们乘积的最大值。
注意：
①数据范围较大，需要将二维的d.]]></description><category></category></item><item><title><![CDATA[dp（背包问题，学习中......）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109536751</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109536751</guid><author>xiaotutuyahttp_</author><pubDate>Fri, 06 Nov 2020 18:06:55 +0800</pubDate><description><![CDATA[状态表示和状态计算
DP优化一般是对状a态方程进行优化
DP思考结构:
Dp 状态表示 – 集合 ---- 条件
---- 所有选法
– 属性 （max，min,  number）
状态计算------集合的划分
01背包
//01背包 
#include &lt;bits/stdc++.h&gt;
using namespace std;
int v[1010];
int w[1010];
int dp[1010][1010];
int main(){
	int n,V;
	cin&gt;&gt;n&gt]]></description><category></category></item><item><title><![CDATA[Kitchen Plates(暴力写法和学习拓扑排序)]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109209570</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109209570</guid><author>xiaotutuyahttp_</author><pubDate>Wed, 21 Oct 2020 20:53:02 +0800</pubDate><description><![CDATA[太暴力了！！！！！！!  !
关于next_permutation 的用法：头文件#include 
https://blog.youkuaiyun.com/sgsyacm/article/details/80139089
！！！
#include &lt;bits/stdc++.h&gt;
#include &lt;algorithm&gt;
using namespace std;
string q,w,e,r,t;
bool b1,b2,b3,b4,b5;
//string a;
char a[5] = {'A']]></description><category></category></item><item><title><![CDATA[Mental Rotation]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109207630</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109207630</guid><author>xiaotutuyahttp_</author><pubDate>Wed, 21 Oct 2020 19:10:03 +0800</pubDate><description><![CDATA[#include &lt;bits/stdc++.h&gt;
using namespace std;
char tu[1010][1010];
int main()
{
    int n,l=0,r=0;
    string a;
    cin&gt;&gt;n&gt;&gt;a;
    for(int i =1;i&lt;=n;i++){
        for(int j =1;j&lt;=n;j++){
            cin&gt;&gt;tu[i][j];
        }
 ]]></description><category></category></item><item><title><![CDATA[Non-Zero Segments]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109108090</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109108090</guid><author>xiaotutuyahttp_</author><pubDate>Fri, 16 Oct 2020 00:05:11 +0800</pubDate><description><![CDATA[//前缀和
#include &lt;bits/stdc++.h&gt;
using namespace std;
const int maxn = 2e5+10;
typedef long long ll;
ll a[maxn];
ll sum;
ll ans;
map&lt;ll,bool&gt; mp;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    sum = ans = 0;
    mp]]></description><category></category></item><item><title><![CDATA[Rock,Paper,Scissors]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109107794</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109107794</guid><author>xiaotutuyahttp_</author><pubDate>Thu, 15 Oct 2020 23:42:13 +0800</pubDate><description><![CDATA[//前缀和
#include &lt;bits/stdc++.h&gt;
using namespace std;
const int maxn = 2e5+10;
typedef long long ll;
ll a[maxn];
ll ans1,ans2;
map&lt;ll,bool&gt; mp;
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);cout.tie(0);

    ll n;
    ll a1,a2,a3,b]]></description><category></category></item><item><title><![CDATA[Increase and Copy]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109103437</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/109103437</guid><author>xiaotutuyahttp_</author><pubDate>Thu, 15 Oct 2020 19:17:17 +0800</pubDate><description><![CDATA[借鉴学习代码：
#include &lt;bits/stdc++.h&gt;
using namespace std;
typedef long long ll;
int main()
{
    int t;
    ll n;
    cin&gt;&gt;t;
    while(t--){
        cin&gt;&gt;n;
        int x = sqrt(n);
        int ans = x-1;
        ll sum = x;
        while(su]]></description><category></category></item><item><title><![CDATA[2020_9_17_(Digits Are Not Just Characters)]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108635825</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108635825</guid><author>xiaotutuyahttp_</author><pubDate>Thu, 17 Sep 2020 09:33:04 +0800</pubDate><description><![CDATA[直接一个一个比较（在边界判断的时候出错了。。。。。。）
#include &lt;bits/stdc++.h&gt;
using namespace std;
string a;
string b;
//判断数字的函数
//数字串如何解决呢
bool judgeNum(int i){
    if(a[i]&gt;='0' &amp;&amp; a[i] &lt;= '9' &amp;&amp; b[i]&gt;='0' &amp;&amp; b[i] &lt;= '9' ){
    //转换为数字
  ]]></description><category></category></item><item><title><![CDATA[1005 Number Sequence（周期规律）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108284152</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108284152</guid><author>xiaotutuyahttp_</author><pubDate>Fri, 28 Aug 2020 22:54:03 +0800</pubDate><description><![CDATA[题目链接：
http://acm.hdu.edu.cn/showproblem.php?pid=1005
Memory Limit Exceeded（内存超限）的代码 ：
错误示范，用的递归但是超时了。
#include &lt;bits/stdc++.h&gt;
using namespace std;
int A,B,n;
const int maxn = 1e8;
int a[maxn];
void fn(){
	a[1] = a[2] = 1;
	for(int i =3;i&lt;=maxn;i+]]></description><category></category></item><item><title><![CDATA[dp（数塔2084+免费馅饼1176+最长回文子串）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108270650</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108270650</guid><author>xiaotutuyahttp_</author><pubDate>Fri, 28 Aug 2020 00:40:30 +0800</pubDate><description><![CDATA[数塔问题
题目链接：
http://acm.hdu.edu.cn/showproblem.php?pid=2084
数塔问题是很典型的dp问题。
该题大概的思路为：
因为从上往下算的话只知道局部最大，但局部最大不能保证整体最大，则需要从下往上面推。
具体看图：

假设这时在倒数第二层，那么可以根据下一层算出这层每个放歌的最大值，接着是倒数第三层，依次往上推，就可以获得最大值。
公式为：
a[i][j] = max(a[i+1][j]+a[i][j],a[i+1][j+1]+a[i][j]);
#includ]]></description><category></category></item><item><title><![CDATA[深度优先搜索（DFS）和广度优先搜索（BFS）（学习总结)]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108089244</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108089244</guid><author>xiaotutuyahttp_</author><pubDate>Wed, 26 Aug 2020 23:46:13 +0800</pubDate><description><![CDATA[深度优先搜索：
①定义：是一种枚举所有完整路径以遍历所有情况的搜索方法。
②如何实现DFS：
使用栈较麻烦。
类比斐波那契数列，可以使用递归这种方式来实现DFS。使用递归系统会调用叫系统栈的东西存放递归中的每一层状态，本质还是栈实现。
③例子
（1）全排列
求1 2 3或1 2 3 4全排列可以使用几个for循环解决，但当求1到n（n小于等于10）用for不能解决则利用递归。
#include &lt;iostream&gt;
using namespace std;
int n;
int book[20]]]></description><category></category></item><item><title><![CDATA[大整数运算（算法笔记学习总结）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108069380</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108069380</guid><author>xiaotutuyahttp_</author><pubDate>Wed, 26 Aug 2020 23:45:57 +0800</pubDate><description><![CDATA[①什么是大整数：高精度整数，用基本数据类型无法存储其精度的整数，例如有1000个位数的整数。
②存储：用数组，整数的高位存储在数组的高位，整数的低位存储在数组的低位。输出的时候逆序输出。
（1）大整数结构体：
struct bign{
	int d[1000];
	int len;//方便获取大整数的长度
	//构造函数（函数名与结构体相同，无返回值）初始化结构体 
	bign(){
		memset(d,0,sizeof(d));
		len = 0; 
	} 
}; 

（2）输入大整数，运用字符串，再]]></description><category></category></item><item><title><![CDATA[1003航电Max Sum]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108244050</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108244050</guid><author>xiaotutuyahttp_</author><pubDate>Wed, 26 Aug 2020 23:45:35 +0800</pubDate><description><![CDATA[题目链接：
http://acm.hdu.edu.cn/showproblem.php?pid=1003

]]></description><category></category></item><item><title><![CDATA[A + B Problem II（大整数运算）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108066267</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108066267</guid><author>xiaotutuyahttp_</author><pubDate>Tue, 25 Aug 2020 22:39:07 +0800</pubDate><description><![CDATA[题目链接：http://acm.hdu.edu.cn/showproblem.php?pid=1002

]]></description><category></category></item><item><title><![CDATA[Task Scheduler（十，学习总结）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108175436</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108175436</guid><author>xiaotutuyahttp_</author><pubDate>Mon, 24 Aug 2020 18:11:05 +0800</pubDate><description><![CDATA[题意：有n个任务，m个工作者，存在k个人不在，第i个任务需要ti个工作者，被选的概率相同，求出分配次数期望值最小的分配方法。
思路：
#include &lt;bits/stdc++.h&gt;
using namespace std;
int main(){
	int tcase;
	cin&gt;&gt;tcase;
	while(tcase--){
		int n,k;
		cin&gt;&gt;n&gt;&gt;k;
		vector&lt;int&gt; t(n),idx(n);
		for(i.]]></description><category></category></item><item><title><![CDATA[Permutation Counting（十，学习总结）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108168558</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108168558</guid><author>xiaotutuyahttp_</author><pubDate>Sun, 23 Aug 2020 18:21:16 +0800</pubDate><description><![CDATA[题意：有一长度为n的排列（ai）来形成另一长度为n-1的序列(bi），形成方式为
现在直到b的序列，求存在多少个a满足b的条件。
思路：
#include &lt;bits/stdc++.h&gt;
using namespace std;
const int maxn = 5010;
const int mod = 1e9+7;
int b[maxn];
int f[maxn][maxn],g[maxn][maxn];
void add(int &amp;x,int y){
	x+=y;
	if(x&g.]]></description><category></category></item><item><title><![CDATA[Tree（九，学习总结）]]></title><link>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108088606</link><guid>https://blog.youkuaiyun.com/xiaotutuyahttp_/article/details/108088606</guid><author>xiaotutuyahttp_</author><pubDate>Sat, 22 Aug 2020 14:43:44 +0800</pubDate><description><![CDATA[题意：有一棵由n个点构成的树，只能从父节点走向子节点，在书中
思路：

]]></description><category></category></item></channel></rss>