<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[coder370的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/coder370</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; coder370]]></copyright><item><title><![CDATA[2019中国大学生程序设计竞赛（CCPC） - 网络选拔赛（部分）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/108470581</link><guid>https://blog.youkuaiyun.com/coder370/article/details/108470581</guid><author>coder370</author><pubDate>Fri, 11 Sep 2020 20:40:26 +0800</pubDate><description><![CDATA[文章目录^&amp;^(规律)array（线段树）Windows Of CCPC（模拟打表）Shuffle Card（模拟+队列）
&amp;(规律)
题意： 给出A,B ,找出C  使得式子(A^ C)&amp;(B^ C)最小，如果有多个C符合，输出最小的C ， 式子最小就是等于0，规律为下表格




A
B
C
ans




1
1
1
0


1
0
1/0
0


0
1
1/0
0


0
0
0
0


中间两行C可以等于1或0，这里选择0 ， 那么答案C就是  A&amp;B
#incl]]></description><category></category></item><item><title><![CDATA[线段树[kuangbin专题]（待更新）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/105189114</link><guid>https://blog.youkuaiyun.com/coder370/article/details/105189114</guid><author>coder370</author><pubDate>Tue, 08 Sep 2020 18:40:29 +0800</pubDate><description><![CDATA[例题：hdu1166
#include &lt;cstdio&gt;
#include &lt;iostream&gt;
using namespace std ;
const int N = 2e5+5 ; 
int a[N] , sum[N] ; 
void bulit(int node , int start, int end){
    if(start==end){
        su...]]></description><category></category></item><item><title><![CDATA[java 实现next_permutation()]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/108300316</link><guid>https://blog.youkuaiyun.com/coder370/article/details/108300316</guid><author>coder370</author><pubDate>Sat, 29 Aug 2020 22:51:01 +0800</pubDate><description><![CDATA[c++ STL中的next_permutation方法，求一下个字典序，
实现过程：

从后往前找第一个后一项大于前一项的数num[i]&gt;num[i-1]
以i-1 为基准，从后往前找第一个大于num[i-1]的数，记做num[j]，然后交换这两个数
将 i-1 后面的数全部翻转
参考博客： 参考1 、 参考2

import java.util.*;
public class Main {
	public static void reverse(int a,int b,int[] num) {
		]]></description><category></category></item><item><title><![CDATA[蓝桥杯（2019年真题）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/107886023</link><guid>https://blog.youkuaiyun.com/coder370/article/details/107886023</guid><author>coder370</author><pubDate>Mon, 17 Aug 2020 23:45:27 +0800</pubDate><description><![CDATA[文章目录糖果(状压dp)
糖果(状压dp)
题意： 现有n包糖果，每包糖果内有k颗糖果（给出糖果编号），小明要收集m种糖果，最少要买几包糖果，如果不能全部收集则输出-1
输入n,m,k ，然后是n包糖果内的糖果编号
样例输入：
6 5 3
1 1 2
1 2 3
1 1 3
2 3 5
5 4 2
5 1 2
样例输出：2
题解： 因为m的范围很小1~20 ，所以考虑状态压缩，将糖果编号转化为二进制，在有糖果的数位上标上1，然后将二进制转化为十进制，例如样例：
1 1 2  -&gt;  0 0 0 1 1]]></description><category></category></item><item><title><![CDATA[数位dp]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/103231182</link><guid>https://blog.youkuaiyun.com/coder370/article/details/103231182</guid><author>coder370</author><pubDate>Sat, 08 Aug 2020 19:47:12 +0800</pubDate><description><![CDATA[3555	Bomb
输出含49的数有几个
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
using namespace std ; 
typedef long long ll ;
const int N = 20 ; 
ll digit[20] , dp[N][2] ;
ll dfs(int len , bool is4 , bool limit...]]></description><category></category></item><item><title><![CDATA[牛客练习赛64]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/106323198</link><guid>https://blog.youkuaiyun.com/coder370/article/details/106323198</guid><author>coder370</author><pubDate>Sun, 24 May 2020 23:01:41 +0800</pubDate><description><![CDATA[比赛入口
文章目录A - 怪盗1412 （思维）B - Dis2（思维+dfs树）C-卷积和（打表找规律）*
A - 怪盗1412 （思维）
1平均分到前面和中间，4全部放中间，2放最后面，答案就是mk(n/2)*(n-n/2),要注意n要加括号！！！因为n有可能为0
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;iostream&gt;
#include &lt;cmath&gt;
#include &lt;algorithm&]]></description><category></category></item><item><title><![CDATA[第十五届中北大学算法与程序设计竞赛（公开赛）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/106321055</link><guid>https://blog.youkuaiyun.com/coder370/article/details/106321055</guid><author>coder370</author><pubDate>Sun, 24 May 2020 23:01:25 +0800</pubDate><description><![CDATA[文章目录A - 俄罗斯方块（模拟）B - 签到题C - 港口（差分）*E - 简单的线性代数（数论）- 找规律蒙的G   数位操作1（模拟）K - 签个到（思维）- 忘记特判
比赛入口
A - 俄罗斯方块（模拟）
用数组c[] 表示每一列能放方块的最大值（从下往上放的，所以从大到小），然后就是ctrl c + ctrl v的复制粘贴模拟。
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;iostream&gt;
#include &]]></description><category></category></item><item><title><![CDATA[西安邮电大学第五届ACM-ICPC校赛（同步赛）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/106308451</link><guid>https://blog.youkuaiyun.com/coder370/article/details/106308451</guid><author>coder370</author><pubDate>Sun, 24 May 2020 23:01:17 +0800</pubDate><description><![CDATA[B-烦人的依赖（字典序的拓扑排序）
#include &lt;cstdio&gt;
#include &lt;cstring&gt; 
#include &lt;iostream&gt;
#include &lt;cmath&gt;
#include &lt;queue&gt;
#include &lt;map&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
typedef long long ll ; 
using namespace std ]]></description><category></category></item><item><title><![CDATA[牛客算法周周练7]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/106226464</link><guid>https://blog.youkuaiyun.com/coder370/article/details/106226464</guid><author>coder370</author><pubDate>Thu, 21 May 2020 16:26:28 +0800</pubDate><description><![CDATA[A- 收集纸片
题意： 给出k个纸片所在的x,y，还有起点sx,sy，问从起点开始收集全部纸片并且回到起点的路径最短是多少。
题解： 因为数据很小，可以直接全排列搜索一遍取最小值。
#include &lt;cstdio&gt;
#include &lt;cstring&gt; 
#include &lt;iostream&gt;
#include &lt;queue&gt;
#include &lt;vector&gt;
#include &lt;algorithm&gt;
typedef long lo]]></description><category></category></item><item><title><![CDATA[Codeforces Round #638 (Div. 2)]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/105894733</link><guid>https://blog.youkuaiyun.com/coder370/article/details/105894733</guid><author>coder370</author><pubDate>Sun, 03 May 2020 21:39:51 +0800</pubDate><description><![CDATA[B - Phoenix and Beauty（思维）
题意： 给出一个长度为n的数组，要求构造一个数组相邻k个数的和相同
题解： 用set存放出现的数字，如果多于k就不能构造，否则就n*k构造即可，挺水的一道题然后突然被自己蠢到了。（掉分┭┮﹏┭┮）
#include &lt;cstdio&gt;
#include &lt;iostream&gt;
#include &lt;cstring&gt;...]]></description><category></category></item><item><title><![CDATA[Educational Codeforces Round 86 (Rated for Div. 2)]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/105802640</link><guid>https://blog.youkuaiyun.com/coder370/article/details/105802640</guid><author>coder370</author><pubDate>Mon, 27 Apr 2020 23:29:43 +0800</pubDate><description><![CDATA[C - Yet Another Counting Problem（打表+周期）
题意： 给出a，b，q，如果x%a%b!=x%b%a那么x为特殊数，在q次询问的时候给出区间[l,r]，问在此区间内特殊数的个数是多少。
题解： 在1~a*b区间为一个周期，然后每个周期个数都相同，所以用前缀和统计一个周期然后计算即可
#include &lt;cstdio&gt;
#include &lt;cmath...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #635 (Div. 2)]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/105616795</link><guid>https://blog.youkuaiyun.com/coder370/article/details/105616795</guid><author>coder370</author><pubDate>Sun, 19 Apr 2020 16:17:23 +0800</pubDate><description><![CDATA[C. Linova and Kingdom（贪心+树）
题意： 给出有n个点的数，选择k个点，问选择的k个点到根节点1路程中没有被选中的节点（价值）最多有多少。
题解： 要使得节点尽可能多那么就要尽量选择叶节点，那么此时的每个节点的价值为本身节点的深度，但是有可能给出的k大于叶节点的个数，那就贪心往上取，若选择一个节点，那么它的子节点都要减1，所以本身价值为val=dep-cnt（深度-子节点的价...]]></description><category></category></item><item><title><![CDATA[Educational Codeforces Round 82 (Rated for Div. 2)]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/104595788</link><guid>https://blog.youkuaiyun.com/coder370/article/details/104595788</guid><author>coder370</author><pubDate>Sun, 08 Mar 2020 09:41:43 +0800</pubDate><description><![CDATA[B - National Project
题意： 有一群工人在铺沥青，在好日子的时候铺出来是高质量的，现在有n段路，每天铺一段，好日子g坏日子b，只要铺出来一半的路是高质量的就行，问最少多少天能铺完。
题解： 直接算利用好日子会不会出，如果刚好就不用算后面的b，否则算上b之后加上剩余的（还是看代码比较直观吧）
#include &lt;cstdio&gt;
#include &lt;algorit...]]></description><category></category></item><item><title><![CDATA[Codeforces Round #624 (Div. 3)]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/104508732</link><guid>https://blog.youkuaiyun.com/coder370/article/details/104508732</guid><author>coder370</author><pubDate>Sun, 08 Mar 2020 09:41:24 +0800</pubDate><description><![CDATA[B - WeirdSort（思维模拟）
题意： 给出一个长度为n的数组a[]，还有一个长度为m的数组p[]，pi表示能将数组a位置为pi和pi+1互换，问能否将数组a变为一个不下降的数组。
题解： 用结构体记录下数的值和下标，按值sort一遍，然后遍历，如果有排序后下标和之前的下标不同的，两个下标之间是否都能进行操作，如果不行则不能达到目的输出NO ， 如果当前的值和两下标之间的值有相同的时候则跳...]]></description><category></category></item><item><title><![CDATA[逆元法求组合数]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/104120220</link><guid>https://blog.youkuaiyun.com/coder370/article/details/104120220</guid><author>coder370</author><pubDate>Thu, 30 Jan 2020 23:42:36 +0800</pubDate><description><![CDATA[##### 费小马定律
若a 与 p互质且p为质数时 ，a^(p-1)^== 1%p ;]]></description><category></category></item><item><title><![CDATA[洛谷普及综合练习1&2]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/104041283</link><guid>https://blog.youkuaiyun.com/coder370/article/details/104041283</guid><author>coder370</author><pubDate>Wed, 22 Jan 2020 22:26:00 +0800</pubDate><description><![CDATA[P1108 低价购买
题意：求最长下降子序列和以及其方案数
题解：最长下降子序列就是经典的dp了，主要是这个方案数，其实就是在求出最长下降子序列dp[]的基础上求各个方案数f[] ， 首先将dp[i]==1的赋值为1（单独一个是一个方案），如果后一个的长度为前一个的长度加一并且其值小于前一个(dp[i]==dp[j]+1&amp;&amp;a[i]&lt;a[j])这个就是可以替换的方案所以f[i...]]></description><category></category></item><item><title><![CDATA[洛谷    数论+其他数学问题（提高场）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/104012156</link><guid>https://blog.youkuaiyun.com/coder370/article/details/104012156</guid><author>coder370</author><pubDate>Fri, 17 Jan 2020 11:26:43 +0800</pubDate><description><![CDATA[阶乘问题
题意：输出n的阶乘最靠右且不为0的数
题解：一开始我是每次只保留最右一个不为0的数，但是这样子会有误差，其实每次保留不为0最靠右的8位数然后在最后输出的时候保留一位。
#include &lt;cstdio&gt;
#include &lt;cmath&gt;
#include &lt;algorithm&gt;
#include &lt;iostream&gt;
using names...]]></description><category></category></item><item><title><![CDATA[湖南大学程序设计竞赛新生赛（重现赛）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/103981911</link><guid>https://blog.youkuaiyun.com/coder370/article/details/103981911</guid><author>coder370</author><pubDate>Wed, 15 Jan 2020 10:55:54 +0800</pubDate><description><![CDATA[A The GCD of Fibonacci Numbers
题意： 求gcd(fn,fm)
题解： 主要是题意提示的比较明显，题意gcd(fn,fm)&lt;=45,所以先求出前45项的斐波那契数列然后输出f[gcd(n,m)]
#include &lt;cstdio&gt;
#include &lt;cmath&gt;
#include &lt;algorithm&gt;
using name...]]></description><category></category></item><item><title><![CDATA[2019河北省大学生程序设计竞赛（重现赛）]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/103907416</link><guid>https://blog.youkuaiyun.com/coder370/article/details/103907416</guid><author>coder370</author><pubDate>Fri, 10 Jan 2020 20:19:58 +0800</pubDate><description><![CDATA[B-Icebound and Sequence
题意：给出q，n，p要求
#include &lt;cstdio&gt;
#include &lt;cstring&gt;
#include &lt;iostream&gt;
#include &lt;algorithm&gt;
#include &lt;map&gt;
using namespace std ;
typedef long long ...]]></description><category></category></item><item><title><![CDATA[区间dp]]></title><link>https://blog.youkuaiyun.com/coder370/article/details/102961454</link><guid>https://blog.youkuaiyun.com/coder370/article/details/102961454</guid><author>coder370</author><pubDate>Thu, 09 Jan 2020 22:40:49 +0800</pubDate><description><![CDATA[区间dp
石子合并
两堆石子的合并：
例如：dp[1][2] = dp[1][1] + dp[2][2] + sum[1][2];
总结：dp[i][i+1] = dp[i][i] + dp[i+1][i+1] + sum[i][i+1];
三堆石子的合并：
dp[1][3] = min(dp[1][1]+dp[2][3],dp[1][2]+dp[3][3])+sum[1][3];
总结：dp[i...]]></description><category></category></item></channel></rss>