<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_51178130的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_51178130</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_51178130]]></copyright><item><title><![CDATA[P2433 【深基1-2】小学数学 N 合一]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/133252385</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/133252385</guid><author>qq_51178130</author><pubDate>Sun, 24 Sep 2023 21:13:27 +0800</pubDate><description><![CDATA[【代码】P2433 【深基1-2】小学数学 N 合一。]]></description><category></category></item><item><title><![CDATA[米勒拉宾素数测试]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/130989884</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/130989884</guid><author>qq_51178130</author><pubDate>Thu, 01 Jun 2023 15:51:11 +0800</pubDate><description><![CDATA[查看了一篇热搜文章，包含费马定理，合数判定，快速幂等知识，反复思考，还是觉得记住代码最为简单，以下是nowcoder上的题目通过代码。觉得自己的通过代码耗时太长，查看了一位叫做。的一种高效率素数测试算法。同学的代码，发现了叫做。（他的码风和我好像）]]></description><category></category></item><item><title><![CDATA[动态规划总结（暂时非常简略]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/127181520</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/127181520</guid><author>qq_51178130</author><pubDate>Sun, 09 Oct 2022 21:32:31 +0800</pubDate><description><![CDATA[动态规划结合题目的一些简单总结板子]]></description><category></category></item><item><title><![CDATA[Codeforces Round #744 (Div. 3) 补题纪录]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/120675194</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/120675194</guid><author>qq_51178130</author><pubDate>Sun, 09 Oct 2022 21:30:47 +0800</pubDate><description><![CDATA[题目列表A（Ac）B  (已补)CD （已补）E1（Ac）E2F  (还不会）G (还不会）
A（Ac）
代码 ：
#include&lt;bits/stdc++.h&gt;
using namespace std;
void solve()
{
    string s;
    cin &gt;&gt; s;
    if(s.size() %2 == 0)
    {
        int k = 0;
        for(int i = 0; i &lt; s.size(); i ++ )
 ]]></description><category></category></item><item><title><![CDATA[动态规划——01背包]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/114542398</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/114542398</guid><author>qq_51178130</author><pubDate>Sat, 09 Oct 2021 22:01:15 +0800</pubDate><description><![CDATA[01背包问题==&gt;每个数只能用一次
//二维
for (int i = 1; i &lt;= n; i ++ )
{
		
	for (int j = 0; j &lt;= m; j ++ )
	{
		dp[i][j] = dp[i-1][j];
		if(j &gt;= v[i]) dp[i][j] = max(dp[i][j] , dp[i-1][j-v[i]] + w[i]);
	}
}
//一维
for (int i = 1; i &lt;= n; i ++ )
	for (int j = ]]></description><category></category></item><item><title><![CDATA[高精度学习笔记及代码模板]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/115335133</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/115335133</guid><author>qq_51178130</author><pubDate>Sat, 09 Oct 2021 22:00:06 +0800</pubDate><description><![CDATA[整数加法
需要注意的点：

倒序存储方便后续操作
采用vector容器方便操作
余数的合理处理

#include &lt;iostream&gt;
#include &lt;vector&gt;
//vector比较好用，当然也可以用数组 
using namespace std;

vector&lt;int&gt; add(vector&lt;int&gt; &amp;A, vector&lt;int&gt; &amp;B)//不是全局变量需要取址 
{
	vector&lt;int&gt; C;
	]]></description><category></category></item><item><title><![CDATA[高级语言程序设计——编程题答案]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/118267062</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/118267062</guid><author>qq_51178130</author><pubDate>Sun, 27 Jun 2021 10:57:07 +0800</pubDate><description><![CDATA[编程题在线测评第3周——从键盘中来，到键盘中去，开始输入和输出啦第4周——无处不在的抉择第5周——周而复始的循环之道第6周——函数：分工与合作的艺术第7周——《盗梦空间》的逻辑：探寻递归的奥秘第8周—— 一堆数据来了，你准备好了吗第9周——指针：C语言世界中所向披靡的“金箍棒”第10周——字符串：C语言世界中的大力水手第11周——指针的孪生兄弟第12周——海陆空齐上阵：又来了一堆数据
第3周——从键盘中来，到键盘中去，开始输入和输出啦

学分绩计算

#include&lt;stdio.h&gt;

int]]></description><category></category></item><item><title><![CDATA[STL常用——acwing——yxc]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/115430303</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/115430303</guid><author>qq_51178130</author><pubDate>Sun, 04 Apr 2021 16:45:59 +0800</pubDate><description><![CDATA[vector, 变长数组，倍增的思想
    size()  返回元素个数
    empty()  返回是否为空
    clear()  清空
    front()/back()
    push_back()/pop_back()
    begin()/end()
    []
    支持比较运算，按字典序

pair&lt;int, int&gt;
    first, 第一个元素
    second, 第二个元素
    支持比较运算，以first为第一关键字，以second为第二关键字（]]></description><category></category></item><item><title><![CDATA[哈希表]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/113922830</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/113922830</guid><author>qq_51178130</author><pubDate>Sun, 04 Apr 2021 16:41:46 +0800</pubDate><description><![CDATA[把大数据映射在小范围内
以单链表为基础知识
其实哈希表就相当于是一个h[N]数组上搭了很多条子链
#include &lt;iostream&gt;
#include&lt;cstring&gt;
using namespace std;

const int N = 100003;

int h[N], e[N], ne[N], idx;

void insert(int x)
{
	int k = (x % N + N) % N;
	
	e[idx] = x;
	ne[idx] = h[k];
	h[k]]></description><category></category></item><item><title><![CDATA[快速排序求第k小的数字]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/115313012</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/115313012</guid><author>qq_51178130</author><pubDate>Mon, 29 Mar 2021 22:17:41 +0800</pubDate><description><![CDATA[为什么要用快排求第k小的数字？
快排的特点，是先找参考值x，然后排序，最后递归。我们可以在递归的过程中，判断递归时候的子数组长度，看看与x的关系。
要知道，第k个小的数字无非就是从小到大排序后的第k个数字。
求第k大的数字及是求第n-k+1小的数字。
代码如下
注意递归条件和k的变化
#include&lt;bits/stdc++.h&gt;

using namespace std;

const int N = 8e6 + 6;

int t,n,k,q[N];

int quick_sort(int ]]></description><category></category></item><item><title><![CDATA[归并排序求逆序数代码及解释]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/115312869</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/115312869</guid><author>qq_51178130</author><pubDate>Mon, 29 Mar 2021 22:09:57 +0800</pubDate><description><![CDATA[为什么要用归并排序来求逆序数？
归并排序的特点，是先递归，再排序，在排序的过程中就可以找出逆序对的个数。
需要注意的点

ans的范围，虽然题目给的数据在int范围内，但是我们无法保证逆序数对数在int范围内，所以，不管三七二十一直接开long long。（就是因为没有开long long ，一直wa）
为什么要那样子计数：ans += mid - i + 1；（自己带一个例子看看就懂了）
通常归并求逆序数，快排求最小数
代码如下
板子可自己敲三遍以上背过

#include &lt;bits/stdc++]]></description><category></category></item><item><title><![CDATA[整数二分和浮点数二分]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/113836295</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/113836295</guid><author>qq_51178130</author><pubDate>Mon, 29 Mar 2021 18:23:11 +0800</pubDate><description><![CDATA[整数二分
在这里插入代码片

浮点数二分
在这里插入代码片


]]></description><category></category></item><item><title><![CDATA[扩展欧几里得算法]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/115275956</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/115275956</guid><author>qq_51178130</author><pubDate>Sun, 28 Mar 2021 09:13:26 +0800</pubDate><description><![CDATA[裴蜀定理
对于任意一对正整数a,b 那么一定存在非零整数x,y 使得
ax + by = (a,b);（a和b的最大公约数）
int gcd(int a,int b)
{
	if(!b)
	{
		return a;
	}
	return gcd(b,a%b);
}

代码块
#include&lt;bits/stdc++.h&gt;

using namespace std;

int exgcd(int a,int b,int &amp;x,int &amp;y)
{
	if(!b)
	{
		x = ]]></description><category></category></item><item><title><![CDATA[打印沙漏——c++]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/114778245</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/114778245</guid><author>qq_51178130</author><pubDate>Sun, 14 Mar 2021 10:35:06 +0800</pubDate><description><![CDATA[对应代码和图找规律
#include&lt;bits/stdc++.h&gt;

using namespace std;

int main()
{
	int n; string op;
	cin &gt;&gt; n;
	cin &gt;&gt; op;
	int f = (int)sqrt((n+1)/2);//层数，公式自推
	int ans = f*f*2 - 1;//实际的字符数
	//输出上一层
	for (int i = f; i &gt;= 1; i -- )
	{
		int x = (]]></description><category></category></item><item><title><![CDATA[牛客--CSL分苹果--动态规划--01背包问题]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/114547799</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/114547799</guid><author>qq_51178130</author><pubDate>Mon, 08 Mar 2021 20:31:33 +0800</pubDate><description><![CDATA[题目如下
链接：CSl分苹果
来源：牛客网
CSL手上有n个苹果，第i个苹果的质量是wi，现在他想把这些苹果分给他的好朋友wavator和tokitsukaze。但是CSL为了不让他们打架，根据质量决定尽量地均分成两堆分给他们。现在CSL想知道到底给每个人分多少质量的苹果。
注意：苹果不能劈开来，并且如果不能正好均分，tokitsukaze小姐姐会拿到重的那一堆。
输入描述：
第一行输入一个整数n(2 ≤ n ≤ 100)，第二行n个整数，表示每个苹果的质量wi(1 ≤ wi ≤ 100)。
输出描述;
输]]></description><category></category></item><item><title><![CDATA[牛客--方格取数--动态规划--四维]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/114546082</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/114546082</guid><author>qq_51178130</author><pubDate>Mon, 08 Mar 2021 20:01:26 +0800</pubDate><description><![CDATA[链接：方格取数
来源：牛客网
设有N*N的方格图(N ≤ 10,我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。如下图所示(见样例)：

某人从图的左上角的A 点出发，可以向下行走，也可以向右走，直到到达右下角的B点。在走过的路上，他可以取走方格中的数(取走后的方格中将变为数字0)。
此人从A点到B 点共走两次，试找出2条这样的路径，使得取得的数之和为最大。
输入描述:
输入的第一行为一个整数N(表示N*N的方格图)，接下来的每行有三个整数，前两个表示位置，第三个数为该位置上所放的数。一行单独]]></description><category></category></item><item><title><![CDATA[栈与队列]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/114007272</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/114007272</guid><author>qq_51178130</author><pubDate>Wed, 24 Feb 2021 08:34:00 +0800</pubDate><description><![CDATA[栈
//栈：先进后出
int stk[N], tt;
//插入
stk[ ++ tt ] = x;
//弹出
tt --;
//判断栈是否为空
if(tt &gt; 0) not empty
else empty
//栈顶
stk[tt]; 

队列
//队列：先进先出
int q[N],hh,tt = -1;
//插入
q[ ++ tt] = x;
//弹出
hh ++ ;
//判断是否为空
if(hh &lt;= tt) not empty
else empty
//取出队头元素
q[hh]; 
//取]]></description><category></category></item><item><title><![CDATA[并查集]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/113836683</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/113836683</guid><author>qq_51178130</author><pubDate>Wed, 17 Feb 2021 19:03:54 +0800</pubDate><description><![CDATA[背过
int find(int x)
{
	if(p[x] != x) p[x] = find(p[x]);
	return p[x];
 } 

全部代码
#include &lt;iostream&gt;

using namespace std;

const int N = 100010;
//M==&gt;合并
//find==&gt;查找父节点，当其下标与父节点相同即为根节点
//根节点相同则在同一个集合中
//合并即将某个集合的根节点改变为某个集合的父节点
int n, m;
int p[N]]]></description><category></category></item><item><title><![CDATA[Tire笔记]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/113836309</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/113836309</guid><author>qq_51178130</author><pubDate>Wed, 17 Feb 2021 19:02:31 +0800</pubDate><description><![CDATA[代码
int son[N][26],cnt[N],idx;
//son结点，cnt当前结点的字符串个数，idx当前位置 

插入
void insert(char str[])
{
	int  p = 0;
	for (int i = 0; str[i]; i ++ )
	{
		int  u = str[i] - 'a';
		if (!son[p][u]) son[p][u] == ++ idx;
		p = son[p][u];
	}
	cnt[p] ++; 
 } 

查找
int query(ch]]></description><category></category></item><item><title><![CDATA[快速幂板子]]></title><link>https://blog.youkuaiyun.com/qq_51178130/article/details/113836370</link><guid>https://blog.youkuaiyun.com/qq_51178130/article/details/113836370</guid><author>qq_51178130</author><pubDate>Wed, 17 Feb 2021 18:06:10 +0800</pubDate><description><![CDATA[快速幂
#include&lt;bits/stdc++.h&gt;

using namespace std;

const int N = 1000;//取模的数值 

long long n,m;

long long fastPower(long long base, long long power)
{
	long long result = 1;
	
	if(power &gt; 0)
	{
		if(power &amp; 1) result = result*base%N;
		power &]]></description><category></category></item></channel></rss>