看到网上有许多快速排序和快速选择的代码,但是相当一部分都有些错误,这里放一下自己的写法 
快速排序模板题:https://www.luogu.com.cn/problem/P1177 
快速选择模板题:https://vjudge.net/problem/POJ-2388   
#include <cstdio>#include <cstdlib>#include <algorithm>using namespace std;const int maxn = 1e6 + 5;int n, a[maxn];void kth_element(int * l,
		
			
	 
	
		
		
		
			链接标题 
复习最小路径覆盖 
最小路径覆盖是指对于给定的DAG,用最少的路径将其所有点覆盖,路径不相交。最小路径覆盖建图如下: 
 
变式1:最小链覆盖 
用最少的路径将其所有点覆盖,路径可以相交 
做法:使用floyd传递闭包重连边,然后进行最小路径覆盖 
变式2:最长反链 
指选择最多的点,使得两两之间不能互相到达 
做法:对偶问题:最长反链等于最小链覆盖 
本题中发现球是依次加入的,如果有两个球和为完全平方数那么小的向大的连接单向边,一个柱子就相当于一条路径。那么可以知道K" role="presentation" style="position: relative;"&
		
			
	 
	
		
		
		
			https://ac.nowcoder.com/acm/contest/7502/J 
  
题目大意:
定义串 
S1=[1]Sm=Sm−1+[m]+Sm−1" role="presentation" style="width: 100%; position: relative;">S1=[1]Sm=Sm−1+[m]+Sm−1S1=[1]Sm=Sm−1+[m]+Sm−1 S^1=[1]\\
S^m=S^{m-1}+[m]+S^{m-1} 
其中′+′" role="presentation" 
		
			
	 
	
		
		
		
			https://ac.nowcoder.com/acm/contest/7502/G 
  
题目大意:
给定一个长度为n" role="presentation" style="position: relative;">nnn数组,每一次可以进行如下操作: 
1、将数组划分为前后两段 
2、将这两段分别翻转 
问最后可能得到多少种数组? 
多组数据 
Σn≤2×106" role="presentation" style="position: relative;">Σn≤2×106Σn≤2×106\Sigma
		
			
	 
	
		
		
		
			传送门 
题意:计算σ0(i3)" role="presentation" style="position: relative;">σ0(i3)σ0(i3)\sigma_0(i^3)的前缀和 
以前雅礼集训的时候就听说过这题,好像是洲阁筛板子? 
但是如今世道不同了,Min_25" role="presentation" style="position: relative;">Min_25Min_25Min\_25筛可以把这种东西吊起来筛! 
当p∈Prime,f(pc)=3c+1" role="present
		
			
	 
	
		
		
		
			传送门 
题意:计算σ0(ik)\sigma_0(i^k)的前缀和 
一道牛逼题目,Min_25Min\_25筛写的很简短。 
当p∈Prime,f(pc)=ck+1p\in Prime,f(p^c)=ck+1 
且当p∈Prime,f(p)=k+1p\in Prime,f(p)=k+1 
又因为前缀和∑ni=1k+1=n(k+1)\sum^n_{i=1}k+1=n(k+1)可以O(1)O(1) 
直接Min_25Min\_25筛就行了,复杂度O(1011)O(10^{11})能过。   
#include<cstdio>#include<algorithm>#
		
			
	 
	
		
		
		
			A - Colorful Subsequence
简化版题意:输入一个字符串,输出每种字母的个数+1" role="presentation" style="position: relative;">+1+1+1的乘积的结果−1" role="presentation" style="position: relative;">−1−1-1。 |S|≤105" role="presentation" style="position: relative;">|S|≤105|S|≤105|S| \le 10^5 
题解:按照题意模拟就
		
			
	 
	
		
		
		
			题目描述
给你一棵n个点的树,每一个点有个颜色ci" role="presentation" style="position: relative;">cicic_i。定义一种颜色的树是:把该颜色的点两两路径上的点和边都拿出来构成的图形。你可以选出k" role="presentation" style="position: relative;">kkk种颜色来,求:有多少种方案可以使每种颜色交集产生的树非空。对k∈[1,m]" role="presentation" style="position: relative;">k∈[1,m]k∈[1,m]k
		
			
	 
	
		
		
		
			传送门 
题解: 
考虑怎么做这道题。 
首先发现性质: 
改变次数=2×总操作数−答案中′1′的个数" role="presentation">改变次数=2×总操作数−答案中′1′的个数改变次数
		
			
	 
	
		
		
		
			GTW likes tree
Time Limit: 7000/3500 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) 
Total Submission(s): 191    Accepted Submission(s): 38 
  
Problem Description
GTW has a tree of n nodes, in which m nodes are special nodes. The value of node i is vi. 
Dis(x,y) is defined as