From 9916640abe5bd522177ed83af23f272d7a84f797 Mon Sep 17 00:00:00 2001 From: hkr04 Date: Fri, 1 May 2020 01:06:56 +0800 Subject: [PATCH] update from gridea: 2020-05-01 01:06:56 --- 00iKSZT709/index.html | 6 +- 0YiuqRXga/index.html | 6 +- AUx6Qb151/index.html | 6 +- AUx6Qb151/page/2/index.html | 6 +- Aho-Corasick-automaton/index.html | 4 +- BHy59ue1j/index.html | 6 +- BHy59ue1j/page/2/index.html | 6 +- Dinic/index.html | 4 +- Edmunds-Karp/index.html | 4 +- Integer-valued-function/index.html | 4 +- LIS/index.html | 8 +- NOI-Online-2-color/index.html | 8 +- OTgD04CC8/index.html | 6 +- about/index.html | 4 +- archives/index.html | 19 +-- atom.xml | 183 +++++++++++++++++++---------- cGGNrEnTv/index.html | 6 +- fenwick-tree-plus/index.html | 4 +- index.html | 115 +++++++++++------- magic-balls-problem/index.html | 4 +- network-flows/index.html | 4 +- page/2/index.html | 84 ++++++------- page/3/index.html | 73 +----------- pilots-matching/index.html | 4 +- qkZ2mtZDC/index.html | 6 +- raraufvM1/index.html | 6 +- rbBIcRlbH/index.html | 6 +- rdrsFYwkR/index.html | 6 +- rdrsFYwkR/page/2/index.html | 6 +- round-table-problem/index.html | 4 +- segment-tree/index.html | 4 +- tags/index.html | 24 +--- the-smallest-path-cover/index.html | 4 +- 33 files changed, 299 insertions(+), 341 deletions(-) diff --git a/00iKSZT709/index.html b/00iKSZT709/index.html index fb86b0a..5ba4a98 100644 --- a/00iKSZT709/index.html +++ b/00iKSZT709/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/0YiuqRXga/index.html b/0YiuqRXga/index.html index cb67a24..2eb4589 100644 --- a/0YiuqRXga/index.html +++ b/0YiuqRXga/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/AUx6Qb151/index.html b/AUx6Qb151/index.html index ef24c89..c88237d 100644 --- a/AUx6Qb151/index.html +++ b/AUx6Qb151/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -196,8 +196,6 @@

- - diff --git a/AUx6Qb151/page/2/index.html b/AUx6Qb151/page/2/index.html index ef24c89..c88237d 100644 --- a/AUx6Qb151/page/2/index.html +++ b/AUx6Qb151/page/2/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -196,8 +196,6 @@

- - diff --git a/Aho-Corasick-automaton/index.html b/Aho-Corasick-automaton/index.html index a3f1933..418e9ce 100644 --- a/Aho-Corasick-automaton/index.html +++ b/Aho-Corasick-automaton/index.html @@ -7,7 +7,7 @@ AC自动机 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/BHy59ue1j/index.html b/BHy59ue1j/index.html index 18ea472..adea8f8 100644 --- a/BHy59ue1j/index.html +++ b/BHy59ue1j/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/BHy59ue1j/page/2/index.html b/BHy59ue1j/page/2/index.html index 18ea472..adea8f8 100644 --- a/BHy59ue1j/page/2/index.html +++ b/BHy59ue1j/page/2/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/Dinic/index.html b/Dinic/index.html index 8de6d54..baab20b 100644 --- a/Dinic/index.html +++ b/Dinic/index.html @@ -7,7 +7,7 @@ Dinic算法 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/Edmunds-Karp/index.html b/Edmunds-Karp/index.html index 69af35f..dccce95 100644 --- a/Edmunds-Karp/index.html +++ b/Edmunds-Karp/index.html @@ -7,7 +7,7 @@ Edmunds-Karp算法 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/Integer-valued-function/index.html b/Integer-valued-function/index.html index 5b47ee9..15d49eb 100644 --- a/Integer-valued-function/index.html +++ b/Integer-valued-function/index.html @@ -7,7 +7,7 @@ 取整函数的性质 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/LIS/index.html b/LIS/index.html index 39a7709..8d95ac8 100644 --- a/LIS/index.html +++ b/LIS/index.html @@ -7,7 +7,7 @@ 最长不下降子序列 | hkr04‘s blogs - + @@ -153,7 +153,7 @@ @@ -489,8 +489,8 @@

diff --git a/OTgD04CC8/index.html b/OTgD04CC8/index.html index b613b71..10bd36d 100644 --- a/OTgD04CC8/index.html +++ b/OTgD04CC8/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -196,8 +196,6 @@

- - diff --git a/about/index.html b/about/index.html index a2c29cd..9445391 100644 --- a/about/index.html +++ b/about/index.html @@ -7,7 +7,7 @@ 关于 | hkr04‘s blogs - + @@ -153,7 +153,7 @@ diff --git a/archives/index.html b/archives/index.html index 268310b..af3fcbc 100644 --- a/archives/index.html +++ b/archives/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -137,7 +137,7 @@ @@ -173,7 +173,7 @@
-

非常好!目前共计14篇日志,继续努力!

+

非常好!目前共计13篇日志,继续努力!

@@ -197,19 +197,6 @@

- -
-
-

- 05-01 - 题解【NOI Online #2 提高组】涂色游戏 -

-
-
-
- - -
diff --git a/atom.xml b/atom.xml index 67fca48..e4db562 100644 --- a/atom.xml +++ b/atom.xml @@ -2,7 +2,7 @@ https://hkr04.github.io hkr04‘s blogs - 2020-04-30T17:06:20.829Z + 2020-04-30T17:06:54.465Z https://github.com/jpmonette/feed @@ -37,66 +37,6 @@ #include <cctype> char ans[2][10]={"NO\n", "YES\n"}; -int gcd(int a,int b) {return b?gcd(b, a%b):a;} -int read() -{ - int res=0; - char ch=getchar(); - while(!isdigit(ch)) - ch=getchar(); - while(isdigit(ch)) - res=res*10+ch-'0',ch=getchar(); - return res; -} -int main() -{ - int T=read(); - while(T--) - { - int a=read(),b=read(),k=read(); - if (a>b) - a^=b^=a^=b; - if (k==1) - printf("%s",ans[0]); - else - { - int d=gcd(a, b),r=b%a; - int s=(b-1)/a+(r>d); - printf("%s",ans[s<k]); - } - } - return 0; -} - -]]> - - - <![CDATA[题解【NOI Online #2 提高组】涂色游戏]]> - https://hkr04.github.io/l39bLvCtz/ - - - 2020-04-30T17:04:53.000Z - 题目链接

-

题意简述

-

有两个数aba\le b,给出kk,问是否存在mb<na<(n+1)a<(n+k1)<(m+1)b,(m+1)b<1020,m,nN,n1mb<na<(n+1)a<\cdots (n+k-1)<(m+1)b,(m+1)b<10^{20},m,n\in N,n\ge 1。存在输出“NO”,不存在输出“YES”(由于转换了求的东西所以存在和不存在与原题输出相反)。

-

题解

-

先说一下为什么这么化简题意。原题中的p1,p2p_1,p_2这里用a,ba,b表示。不妨设aba\le b,则染色的情况必定为aabaabaa\cdots aba\cdots aba\cdots的情形。可以发现,相当于是bb在截断aa的连续染色。而为了实现原题中不超过k个连续的愿望lcm(a,b)lcm(a,b)显然要染成bb去防止aa的延伸。接下来只需要看是否在1020110^{20}-1的范围内,每个bb之间间隔的aa的数量都小于k。当然,首先要特判k=1k=1的情况。

-

接下来讲一下我的解题思路。一开始是想至少搞一个下界出来,即:假设每个bb之间夹的aa的数量最多为cc,则cb1ac\ge \lfloor\frac{b-1}{a}\rfloor,也就是一开始0b0\thicksim b中存在的aa的数量。仔细想想,由于b1=b1a+r,0r<ab-1=\lfloor\frac{b-1}{a}\rfloor+r,0\le r < a,如果想在两个bb地倍数之间的a开头往前或结尾往后扎扎实实地再塞进一个aa是不可能的,想要再添加只有可能是存在一个数λ,mb<λ<mb+r\lambda,mb<\lambda< mb+r。这样好像讲的有点乱,看图明白一点:
-1
-2

-

截取线段和什么类似?取模!若λ\lambda存在,则不可避免的最多颜色连续数b1a+1\lfloor\frac{b-1}{a}\rfloor+1,不然,则为b1a\lfloor\frac{b-1}{a}\rfloor。即为判定axt(mod b)(0t<r)ax\equiv t(mod\ b)(0\le t<r)是否有解。进一步的,判定ax+by=tax+by=t是否有解。又由裴蜀定理知,该方程有解的充要条件为gcd(a,b)t\gcd(a, b)|t。且rr可以取遍0r10\thicksim r-1的整数,所以只需判断rrgcd(a,b)\gcd(a, b)的大小关系。如此一来,只需将最多颜色连续数kk进行比较,若kk比较大则有解,否则无解。本题就得到了解决。特殊地,当aba|br=0r=0,此时是可以不让bb染成aa的,代入发现同样可以通过比较rrgcd(a,b)\gcd(a,b)的大小关系获得正确答案。

-

等等,我们还有个范围问题!怎么确定如此找到的(m+1)b(m+1)b是否小于102010^{20}呢?设d=gcd(a,b)d=\gcd(a,b),由于ax+by=tax+by=t的解集与adx+bdy=td\frac{a}{d}x+\frac{b}{d}y=\frac{t}{d}相同,不妨先设aba\bot b
-先证明一个引理:当aba\bot b时,{0,a,2a,,(b1)a}\{0,a,2a,\cdots,(b-1)a\}构成bb的完全剩余系。
-首先,{0,a,2a,,(b1)a}\{0,a,2a,\cdots,(b-1)a\}{0,1,2,,b1}\{0,1,2,\cdots,b-1\}在元素个数上相同。下用反证法证明原集合中元素对bb取模结果两两不同即可。
-若axay(mod b)(0x,y<p,xy)ax\equiv ay(mod\ b)(0\le x,y <p,x\neq y),且aba\bot b,则xy(mod b)x\equiv y(mod\ b)。进一步的,由于0x,y<p0\le x,y <p,则x=yx=y,得出矛盾。
-证毕。

-

这一步是想说明,只要有解,解的范围就在[0,b/d1][0,b/d-1]中。而mb<ax+ta(b1)+a=ab,(m+1)b<ab+b1018+109<1020mb<ax+t\le a(b-1)+a=ab,(m+1)b<ab+b\le 10^{18}+10^9<10^{20}
-这回是真的结束了。

-

代码:

-
#include <cstdio>
-#include <cctype>
-char ans[2][10]={"NO\n", "YES\n"};
-
 int gcd(int a,int b) {return b?gcd(b, a%b):a;}
 int read()
 {
@@ -1067,6 +1007,127 @@ int main()
 	return 0;
 }
 
+]]> + + + <![CDATA[飞行员配对方案]]> + https://hkr04.github.io/pilots-matching/ + + + 2020-02-28T09:18:51.000Z + 题解

+

二分图匹配。
+设一个超级源点和一个超级汇点,建立源点->外籍飞行员->英国飞行员->汇点的网络。所有边的容量设为1。此时,每单位流到汇点的流量即代表一对合法配对,配对间互不干扰。

+

所以跑最大流即可得到最大匹配数。若想得到谁和谁配对的方案,则看看哪条边流量为0即可。

+

代码

+
#include <cstdio>
+#include <cstring>
+const int maxn=200+10;
+const int maxm=10000+10;
+const int INF=0x3f3f3f3f; 
+int cur[maxn],head[maxn],nxt[maxm<<1],to[maxm<<1],val[maxm<<1];
+int dep[maxn];
+int n,m,s,t;
+int tot=1,cnt=0;
+struct edge
+{
+    int u,v;
+    edge() {}
+    edge(int x,int y) {u=x,v=y;}
+}e[maxm];
+struct Queue
+{
+	int a[maxn];
+	int l,r;
+	Queue() {l=1,r=0;}
+	void push(int x) {a[++r]=x;}
+	void pop() {l++;}
+	int front() {return a[l];}
+	bool empty() {return l>r;}
+}q;
+
+inline int min(int x,int y) {return x<y?x:y;}
+void add(int u,int v,int w)
+{
+    nxt[++tot]=head[u];
+    head[u]=tot;
+    to[tot]=v;
+    val[tot]=w;
+}
+bool bfs()
+{
+    memset(dep, 0x3f, sizeof(dep));
+    dep[s]=0;
+    q=Queue();
+    q.push(s);
+    while(!q.empty())
+    {
+        int u=q.front();
+        q.pop();
+        for (int i=head[u];i;i=nxt[i])
+        {
+            int v=to[i]; 
+            if (val[i]&&dep[v]>dep[u]+1)
+            {
+                dep[v]=dep[u]+1;
+                q.push(v);
+            }
+        } 
+    }
+    return dep[t]<INF;
+}
+int dfs(int u,int minf)
+{
+    if (u==t)
+        return minf;
+    int used=0;
+    for (int &i=cur[u];i;i=nxt[i])
+    {
+        int v=to[i];
+        if (val[i]&&dep[v]==dep[u]+1)
+        {
+        	int flow=dfs(v, min(minf-used, val[i]));
+            if (flow)
+            {
+                used+=flow;
+                val[i]-=flow;
+                val[i^1]+=flow;
+                if (used==minf)
+                    break; 
+            }
+        }
+     }
+     return used; 
+}
+int main()
+{
+    scanf("%d%d",&m,&n);
+    s=0,t=m+n+1;
+    int u=-1,v=-1;
+    while(scanf("%d%d",&u,&v)&&u!=-1) 
+    {
+        add(u, v, 1),add(v, u, 0);
+        e[++cnt]=edge(u, v);
+    }
+    for (int i=1;i<=m;i++)
+        add(s, i, 1),add(i, s, 0);
+    for (int i=m+1;i<=m+n;i++)
+        add(i, t, 1),add(t, i, 0);
+
+    int maxflow=0; 
+    while(bfs())
+    {
+    	for (int i=0;i<=m+n;i++)
+    		cur[i]=head[i];
+    	maxflow+=dfs(s, INF);
+    }
+    printf("%d\n",maxflow);
+    for (int i=1;i<=cnt;i++)
+        if (!val[i<<1])
+            printf("%d %d\n",e[i].u,e[i].v);
+    return 0;
+}
+
]]> \ No newline at end of file diff --git a/cGGNrEnTv/index.html b/cGGNrEnTv/index.html index a9e242f..f951a52 100644 --- a/cGGNrEnTv/index.html +++ b/cGGNrEnTv/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/fenwick-tree-plus/index.html b/fenwick-tree-plus/index.html index a508c4c..60e28a2 100644 --- a/fenwick-tree-plus/index.html +++ b/fenwick-tree-plus/index.html @@ -7,7 +7,7 @@ 线段树?树状数组! | hkr04‘s blogs - + @@ -153,7 +153,7 @@ diff --git a/index.html b/index.html index 7de0bfa..e25fa80 100644 --- a/index.html +++ b/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -234,8 +234,8 @@

- - 题解【NOI Online #2 提高组】涂色游戏 + + 最长不下降子序列

@@ -264,7 +289,7 @@

- + 阅读全文 »
@@ -278,8 +303,8 @@

- - 最长不下降子序列 + + AC自动机

@@ -333,7 +358,7 @@

- + 阅读全文 »
@@ -347,8 +372,8 @@

- - AC自动机 + + 网络流

@@ -402,7 +421,7 @@

- + 阅读全文 »
@@ -416,8 +435,8 @@

- - 网络流 + + 线段树入门

@@ -465,7 +490,7 @@

- + 阅读全文 »
diff --git a/magic-balls-problem/index.html b/magic-balls-problem/index.html index 41987ec..6abfb4a 100644 --- a/magic-balls-problem/index.html +++ b/magic-balls-problem/index.html @@ -7,7 +7,7 @@ 魔术球问题 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/network-flows/index.html b/network-flows/index.html index 7630507..8d6f2ac 100644 --- a/network-flows/index.html +++ b/network-flows/index.html @@ -7,7 +7,7 @@ 网络流 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/page/2/index.html b/page/2/index.html index 0e37df4..53d81bf 100644 --- a/page/2/index.html +++ b/page/2/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -171,8 +171,8 @@

- - 线段树入门 + + 线段树?树状数组!

@@ -226,7 +226,7 @@

- + 阅读全文 »
@@ -240,8 +240,8 @@

- - 线段树?树状数组! + + 取整函数的性质

@@ -295,7 +289,7 @@

- + 阅读全文 »
@@ -309,8 +303,8 @@

- - 取整函数的性质 + + Edmunds-Karp算法

@@ -358,7 +352,7 @@

- + 阅读全文 »
@@ -372,8 +366,8 @@

- - Edmunds-Karp算法 + + Dinic算法

@@ -421,7 +415,7 @@

- + 阅读全文 »
@@ -435,8 +429,8 @@

- - Dinic算法 + + 飞行员配对方案

@@ -484,7 +484,7 @@

- + 阅读全文 »
diff --git a/page/3/index.html b/page/3/index.html index 3956024..4b8b3b4 100644 --- a/page/3/index.html +++ b/page/3/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -167,75 +167,6 @@
- -
diff --git a/pilots-matching/index.html b/pilots-matching/index.html index 23db38b..23a0288 100644 --- a/pilots-matching/index.html +++ b/pilots-matching/index.html @@ -7,7 +7,7 @@ 飞行员配对方案 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/qkZ2mtZDC/index.html b/qkZ2mtZDC/index.html index 23732c0..5e03adf 100644 --- a/qkZ2mtZDC/index.html +++ b/qkZ2mtZDC/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/raraufvM1/index.html b/raraufvM1/index.html index 7bee20e..a4fb17f 100644 --- a/raraufvM1/index.html +++ b/raraufvM1/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/rbBIcRlbH/index.html b/rbBIcRlbH/index.html index 3cb4360..dfe9f7f 100644 --- a/rbBIcRlbH/index.html +++ b/rbBIcRlbH/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- -
diff --git a/rdrsFYwkR/index.html b/rdrsFYwkR/index.html index 0ce0223..a64000b 100644 --- a/rdrsFYwkR/index.html +++ b/rdrsFYwkR/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/rdrsFYwkR/page/2/index.html b/rdrsFYwkR/page/2/index.html index 0ce0223..a64000b 100644 --- a/rdrsFYwkR/page/2/index.html +++ b/rdrsFYwkR/page/2/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -185,8 +185,6 @@

- - diff --git a/round-table-problem/index.html b/round-table-problem/index.html index 6a5ba31..e2c9400 100644 --- a/round-table-problem/index.html +++ b/round-table-problem/index.html @@ -7,7 +7,7 @@ 圆桌问题 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/segment-tree/index.html b/segment-tree/index.html index 6f44e0f..88e6a23 100644 --- a/segment-tree/index.html +++ b/segment-tree/index.html @@ -7,7 +7,7 @@ 线段树入门 | hkr04‘s blogs - + @@ -154,7 +154,7 @@ diff --git a/tags/index.html b/tags/index.html index 648417a..6b520c0 100644 --- a/tags/index.html +++ b/tags/index.html @@ -7,7 +7,7 @@ hkr04‘s blogs - + @@ -136,7 +136,7 @@ @@ -179,8 +179,6 @@ - - @@ -279,8 +277,6 @@ - - @@ -381,8 +377,6 @@ - - @@ -463,8 +457,6 @@ - - @@ -555,8 +547,6 @@ - - @@ -653,8 +643,6 @@ - - @@ -753,8 +741,6 @@ - - @@ -849,8 +835,6 @@ - - @@ -947,8 +931,6 @@ - - @@ -1045,8 +1027,6 @@ - - diff --git a/the-smallest-path-cover/index.html b/the-smallest-path-cover/index.html index 3144653..be082b7 100644 --- a/the-smallest-path-cover/index.html +++ b/the-smallest-path-cover/index.html @@ -7,7 +7,7 @@ 最小路径覆盖问题 | hkr04‘s blogs - + @@ -154,7 +154,7 @@