<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[maze_illusion的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Game_Acm</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Game_Acm]]></copyright><item><title><![CDATA[dijkstra优化的最小费用最大流]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/97794862</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/97794862</guid><author>Game_Acm</author><pubDate>Tue, 30 Jul 2019 16:33:52 +0800</pubDate><description><![CDATA[const int inf = 0x3f3f3f3f;
int tol,head[4010];
struct edge{
    int to,next,cap,flow,cost;
}es[8000010];
void init(){
    tol = 0; memset( head , -1 , sizeof(head) );
}
void addedge( int u , int v ,...]]></description><category></category></item><item><title><![CDATA[ICPC2018 青岛站 有关题目题解]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83745455</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83745455</guid><author>Game_Acm</author><pubDate>Mon, 05 Nov 2018 15:28:56 +0800</pubDate><description><![CDATA[热身赛D题

题意：

第一行给n个数，第二行给m个数，m&amp;lt;=n，从n个数中取m个数和第二行的m个数匹配，匹配花费abs(ai-bj)，求最小匹配花费。

思路：

建立三个堆，A堆存放第一行的数，B堆存放第二行中未被匹配过的数，C堆存放第二行中被匹配过的数。将n+m个数进行混合排序，从前向后扫描数组。

遇到第一行的数：

1.若B堆非空，则与B堆中花费最小的进行匹配

2.若B堆空的，则...]]></description><category></category></item><item><title><![CDATA[ICPC2018 青岛站 赛后总结]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83743383</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83743383</guid><author>Game_Acm</author><pubDate>Mon, 05 Nov 2018 10:07:15 +0800</pubDate><description><![CDATA[10.2：起一大早打滴滴到东站坐动车到了青岛，青岛站离海真的好近，一下车就感觉空气里有一点咸咸的味道。发现第一天不能报道，于是去栈桥和八大关走了一波。在栈桥上看到一种快艇（还是游轮不太记得清了）体验项目，最便宜的800/位，最贵的4800/位。嗯，有钱真好。必须吐槽一下八大关的路，非常的不平，不是上坡就是下坡，走起来累到爆。里面老别墅好多，名人故居好多，还有特别好看的花石楼和公主楼，异域风情浓厚，...]]></description><category></category></item><item><title><![CDATA[线段规范相交与非规范相交]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83619592</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83619592</guid><author>Game_Acm</author><pubDate>Thu, 01 Nov 2018 14:12:21 +0800</pubDate><description><![CDATA[
bool norm_Inter( Line l1 , Line l2 )
{
    double c1 = (l1.e-l1.s)^(l2.s-l1.s);
    double c2 = (l1.e-l1.s)^(l2.e-l1.s);
    double c3 = (l2.e-l2.s)^(l1.s-l2.s);
    double c4 = (l2.e-l2.s)^(l1.e-l2....]]></description><category></category></item><item><title><![CDATA[多边形旋转模板]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83474904</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83474904</guid><author>Game_Acm</author><pubDate>Sun, 28 Oct 2018 15:20:01 +0800</pubDate><description><![CDATA[
const double eps = 1e-8;
const double pi  = acos(-1);
int sgn( double x )
{
    if ( fabs(x)&amp;lt;eps ) return 0;
    if ( x&amp;lt;0 ) return -1;
    if ( x&amp;gt;0 ) return  1;
}
struct point
{
    double x...]]></description><category></category></item><item><title><![CDATA[10月21日 训练记录 GYM 101908]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83245034</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83245034</guid><author>Game_Acm</author><pubDate>Sun, 21 Oct 2018 21:15:42 +0800</pubDate><description><![CDATA[B题：

题意：博弈，二维平面上n个点，每次可以下移，左移或对角线移动任意步，将任意点移到原点即胜利

思路：SG函数，初始有在对角线上的点则先手必胜。有三个禁区x轴，y轴和对角线，一旦移动到这些地方对手就赢了。所以相应得（1，2）和（2，1）就成为必败点了，这两个点无论如何移动都会进入到禁区。任意点最终都会移到（1，2）和（2，1），所以以（1，2）和（2，1）为起点并躲避禁区SG博弈就出结果了...]]></description><category></category></item><item><title><![CDATA[10月20日 训练记录 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Team]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83240663</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83240663</guid><author>Game_Acm</author><pubDate>Sun, 21 Oct 2018 13:05:02 +0800</pubDate><description><![CDATA[A题

题意：求数位总和为s且是d的倍数的最小值，若无解输出-1

思路：s&amp;lt;=5000,d&amp;lt;=500说明状态数&amp;lt;=s*d=5000*500，bfs搜索

代码：


#include&amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
struct node
{
    int mod;
    int sum;
    string num;
...]]></description><category></category></item><item><title><![CDATA[10月20日 训练记录 GYM 101889]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83240473</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83240473</guid><author>Game_Acm</author><pubDate>Sun, 21 Oct 2018 12:42:53 +0800</pubDate><description><![CDATA[训练题目集

B题：

题意：给一段字符串，它是由挨个添加字符生成，生成时当添加元音时会使得整个字符串翻转，给目标字符串求生成方案数

思路：计算整个字符串的元音数并找到不翻转原串的首个元音所在位置，若元音数为奇数答案为首个元音向后到下个元音或结尾的长度，若元音数为偶数答案则为向前到上个元音或开头的长度

代码：


#include&amp;lt;bits/stdc++.h&amp;gt;
using  nam...]]></description><category></category></item><item><title><![CDATA[10月19日训练记录 CF GYM 101911]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83186501</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83186501</guid><author>Game_Acm</author><pubDate>Fri, 19 Oct 2018 19:25:11 +0800</pubDate><description><![CDATA[A题

题意：喝n杯咖啡，但两杯咖啡的间隔时间要大于d，问最少需要几天才能喝上n杯咖啡

思路：贪心喝咖啡，每一杯都选时间符合要求的，如果找不到时间符合要求的就加一天

代码：数据结构减智力，可以用set简单维护。。。


#include&amp;lt;bits/stdc++.h&amp;gt;
using  namespace std;
#define lson rt&amp;lt;&amp;lt;1
#define rso...]]></description><category></category></item><item><title><![CDATA[10月17日训练记录 CF GYM 101915]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/83115183</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/83115183</guid><author>Game_Acm</author><pubDate>Wed, 17 Oct 2018 18:52:17 +0800</pubDate><description><![CDATA[A题

题意：求从X开始向后数多少数字可以使得这些数的数位和恰好为N，若无解输出-1

思路：二分答案

代码：


#include&amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long long LL;
int Max( int a , int b ){ return a&amp;gt;b?a:b; }
LL ten[20];
LL num( L...]]></description><category></category></item><item><title><![CDATA[ZOJ 4009]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82924934</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82924934</guid><author>Game_Acm</author><pubDate>Tue, 02 Oct 2018 11:37:29 +0800</pubDate><description><![CDATA[题目链接

题意：

维护一个数列，数列有两种操作：

1.将区间[L,R]中的每个数都变成3次方，即a[i] --&amp;gt; a[i]*a[i]*a[i]

2.询问区间[L,R]的和（取模99971)

思路：

打表可以发现所有数字在取模的情况下循环节的最小公倍数为48，故维护一个48倍内容的线段树。

更新可以在对应区间节点处打上更新标记，向上维护时可以将其看出更新偏转，向下询问定义一个变量...]]></description><category></category></item><item><title><![CDATA[JAVA牛顿迭代法求大数开方]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82886447</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82886447</guid><author>Game_Acm</author><pubDate>Fri, 28 Sep 2018 16:39:15 +0800</pubDate><description><![CDATA[
import java.io.*;
import java.math.*;
import java.util.*;

public class Main 
{
	public static void main( String[] args ) throws Exception
	{
		Scanner cin = new Scanner(System.in); 
		String nStr = ...]]></description><category></category></item><item><title><![CDATA[黑科技开根号]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82881405</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82881405</guid><author>Game_Acm</author><pubDate>Fri, 28 Sep 2018 13:09:54 +0800</pubDate><description><![CDATA[ 


int my_sqrt( float x )
{
    if ( x==0 ) return 0;
    float result = x;
    float xhalf = 0.5f*result;
    int i = *(int*)&amp;amp;result;
    i = 0x5f375a86-(i&amp;gt;&amp;gt;1);
    result = *(float*)&amp;amp;...]]></description><category></category></item><item><title><![CDATA[COGS 2639 多维偏序 分块+bitset解决偏序问题]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82711311</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82711311</guid><author>Game_Acm</author><pubDate>Sat, 15 Sep 2018 10:08:54 +0800</pubDate><description><![CDATA[编程思路：

以bitset的01表示来代替此维有多少符合偏序，最后取k维偏序的交集即是答案

使用分块加速原理，可以根据此维数字大小排名来分块预处理每一小块，查询时使用二分得到快速定位属于的块号，最后再暴力计算剩余的&amp;lt;=sqrt(n)个数字

模板代码：


#include&amp;lt;bits/stdc++.h&amp;gt;
using namespace std;
typedef long lo...]]></description><category></category></item><item><title><![CDATA[cdq分治（cdq分治套cdq分治套cdq分治）]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82702266</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82702266</guid><author>Game_Acm</author><pubDate>Fri, 14 Sep 2018 14:22:14 +0800</pubDate><description><![CDATA[COGS 2580（cdq分治求五维偏序）

第一维：排序

第二维：分治后标号处理

第三维：分治后标号处理

第四维：分治

第五维：树状数组

模板代码：


#include&amp;lt;map&amp;gt;
#include&amp;lt;set&amp;gt;
#include&amp;lt;ctime&amp;gt;
#include&amp;lt;stack&amp;gt;
#include&amp;lt;cmath&amp;gt;
#include&amp;lt...]]></description><category></category></item><item><title><![CDATA[莫队算法]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82660126</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82660126</guid><author>Game_Acm</author><pubDate>Wed, 12 Sep 2018 20:14:19 +0800</pubDate><description><![CDATA[简单版本：将区间分成sqrt(n)块并将询问按照左端点的所在块序号排序，左端点块序号一样则按照右端点排序


LL Gcd( LL a , LL b ){ return b==0?a:Gcd( b , a%b ); }
struct Query
{
    int L,R,id;
}Q[maxm];
struct Ans
{
    LL a,b;
    void reduce()
    {
...]]></description><category></category></item><item><title><![CDATA[DLX重复覆盖]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82659600</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82659600</guid><author>Game_Acm</author><pubDate>Wed, 12 Sep 2018 12:25:20 +0800</pubDate><description><![CDATA[
const int maxn = 15*15+10;
const int maxm = 15*15+10;
const int maxnode = maxn*maxm;
const int inf  = 0x3f3f3f3f;
struct DLX
{
    int n,m,sizes,H[maxn],S[maxm],ansd;
    int U[maxnode],D[maxnode],L[...]]></description><category></category></item><item><title><![CDATA[DLX精确覆盖]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82658544</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82658544</guid><author>Game_Acm</author><pubDate>Wed, 12 Sep 2018 11:15:02 +0800</pubDate><description><![CDATA[DLX精确覆盖：对于给定的01矩阵，是否能找到一个行的集合，使得集合中每一列都恰好包含一个1
数独转换为DLX精确覆盖求解：
每个格子都要填入数字---001到081列，表示数独中9*9=81个格子是否填入数字。如果是，则选取的行在该列上为1。
每一行都要有1~9填入---082到162列，每9列就代表数独中的一行，如果该行有某个数字，则其对应的列上为1
每一列都要有1~9填入---163到243...]]></description><category></category></item><item><title><![CDATA[分块]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82656836</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82656836</guid><author>Game_Acm</author><pubDate>Wed, 12 Sep 2018 09:59:53 +0800</pubDate><description><![CDATA[
int block;//每块大小
int num;//块数
int l[maxn];//第i块的左边界
int r[maxn];//第i块的右边界
int belong[maxn];//第i个位置属于那块
void Build()
{
    block = sqrt(n); num = n/block; if ( n%block ) num++;
    for ( int i=1 ; i&amp;l...]]></description><category></category></item><item><title><![CDATA[计算几何知识补充]]></title><link>https://blog.youkuaiyun.com/Game_Acm/article/details/82632183</link><guid>https://blog.youkuaiyun.com/Game_Acm/article/details/82632183</guid><author>Game_Acm</author><pubDate>Wed, 12 Sep 2018 09:43:10 +0800</pubDate><description><![CDATA[1.以格子点为顶点的线段，覆盖的点的个数为GCD(dx,dy)
2.Pick公式：顶点坐标均是整点的简单多边形：面积=内部格点数目+边上格点数目/2-1
3.任意一个多边形的面积等于按顺序求相邻两个点与原点组成的向量的叉积之和

三点求圆心坐标（三角形外心）


//三点求圆心坐标（三角形外心）
Point waixin( Point a , Point b , Point c )
{
    d...]]></description><category></category></item></channel></rss>