Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同 一个数则输出-1. Input 输入的第一行是一个整数T,表示输入数据有T轮游戏组成. 每轮游戏的第一行有两个整数N和M, 分别代表棋盘的行数和列数. 接下来有N行,每行 M个数. Output 对于每个游戏输出最少能使…
2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 3352  Solved: 919[Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成…
题目 Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同 一个数则输出-1. 输入格式 输入的第一行是一个整数T,表示输入数据有T轮游戏组成. 每轮游戏的第一行有两个整数N和M, 分别代表棋盘的行数和列数. 接下来有N行,每行 M个数. 输出格式 对于每个游戏输出最少能使游戏结束的次数,如果永远…
好久没有写博客了.不过这个博客也没有多少人看 最近在写网络流,为了加深理解,来写一两篇题解. 对整个棋盘进行黑白染色以后可以发现,一次操作就是让二分图的两个点的值分别 \(+1\). 这样,我们就可以对一个答案的合法性做出判断了. 对于每个白点,从 \(S\) 向它连 \(ans - a[i][j]\) 的边.黑点向 \(T\) 连 \(ans - a[i][j]\) 的边.每个白点向黑点建 \(+\infty\) 的边. 如果满流就成立. 发现答案满足单调性,然后就开始非常开心地二分答案? 你…
2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2925  Solved: 792[Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成…
2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 3220  Solved: 886 Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1. Input 输入的第一行是一…
2756: [SCOI2012]奇怪的游戏 题目:传送门 题解: 发现做不出来的大难题一点一个网络流 %大佬 首先黑白染色(原来是套路...)染色之后就可以保证每次操作都一定会使黑白各一个各自的值加1 那么我们接着统计一下黑白格子个数cnt1和cnt2,以及各自的权值和sum1和sum2 然后就要分情况讨论了: 1.在cnt1不等于cnt2的情况下   假设有解且最终的数值均为ans,那么不难发现:cnt1*ans-cnt2*ans=sum1-sum2(因为每次操作黑白格子的总和同时加1,所以总…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2756 Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1. Input 输入的第一行是一个整数T,表示输入数据有T轮游戏组成. 每轮游戏的第一行有两…
由数据范围容易想到网络流.由于操作只是对于棋盘上相邻两格,容易想到给其黑白染色. 假设已经知道最后要变成什么数.那么给黑白点之间连边,其流量则表示同时增加的次数,再用源汇给其限流为需要增加的数即可. 考虑最后应该变成什么数. 如果棋盘中黑白格子数量不同,设最后变成的数是x,则x*黑格数量-黑格数字和=x*白格数量-白格数字和,若黑格数量多即x=黑格数字和-白格数字和.直接变为最大值是不一定合法的. 否则首先黑白格子内权值和应相同,否则无解.如果变成某个数是合法的,变的更大也是合法的.那么二分最后…
2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 1594  Solved: 396[Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变…
[BZOJ2756]奇怪的游戏(二分,网络流) 题面 BZOJ Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同 一个数则输出-1. Input 输入的第一行是一个整数T,表示输入数据有T轮游戏组成. 每轮游戏的第一行有两个整数N和M, 分别代表棋盘的行数和列数. 接下…
2756:[SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 4926  Solved: 1362[Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成…
学习资料 -----1----- -----2----- P5038 [SCOI2012]奇怪的游戏 一道甚神但没用到高深模型的题 思路 没思路,看题解吧 代码 #include <iostream> #include <cstdio> #include <cstring> #include <queue> #define ll long long #define point(x, y) ((x - 1) * m + y) using namespace s…
题意: Blinker最近喜欢上一个奇怪的游戏.这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1.现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1. n,m<=40 a[i,j]<=10^9 思路:假设我们已经询问最终是否都能变成数字D怎么做? 注意到黑白点染色后每次加的点必定是1黑点1白点 设黑格子有k1个,和为s1,白格子有k2个,和为s2 显然k1*d-s1=k2…
$ \color{#0066ff}{ 题目描述 }$ Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 \(N \times M\) 的棋盘上玩,每个格子有一个数.每次\(Blinker\)会选择两个相邻的格子,并使这两个数都加上\(1\). 现在\(Blinker\)想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出\(-1\). \(\color{#0066ff}{输入格式}\) 输入的第一行是一个整数\(T\),表示输入数据有T轮游戏组成. 每轮游戏的第一…
Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同 一个数则输出-1. Input 输入的第一行是一个整数T,表示输入数据有T轮游戏组成. 每轮游戏的第一行有两个整数N和M, 分别代表棋盘的行数和列数. 接下来有N行,每行 M个数. Output 对于每个游戏输出最少能使…
题目链接 \(Description\) \(Solution\) 这种题当然要黑白染色.. 两种颜色的格子数可能相同,也可能差1.记\(n1/n2\)为黑/白格子数,\(s1/s2\)为黑/白格子权值和. 如果\(n1\neq n2\),假设\(n1>n2\),因为每次是同时给两种颜色+1,所以最后的差也只能是\(s1-s2\)(\(s1>s2\)),个数只差1,所以也只能都变成\(s1-s2\).(注意\(s1-s2\geq A_{max}\)) 如果\(n1=n2\),假设\(x\)合法…
达成成就:为二分调参 !:多次memset的话要把数组大小开严格一点,否则会T 看到网格图,首先黑白染色. 注意到每次操作都是在一个黑格子和一个白格子上进行的,也就是说,最后黑格子数字和白格子数字和的差是不变的. 对于n*m%2==0的情况: 注意到在这种情况下黑格子和白格子一样多,也就是当黑格子数字和和白格子数字和不相等时,一定是不合法状态,反之一定合法. 那么二分最小的最终数字 对于于n*m%2==1情况: 注意到在这种情况下两种格子的数量差1,也就是说格子个数较多的一种格子的数字和与另一种…
这道题提醒我,要有将棋盘黑白染色的意识,尤其是看到相邻格子这样的条件的时候,然后就是要用到与其有关的性质与特点以体现其作用,这道题就是用到了黑格子与白格子之间的关系进行的,其出发点是每次一定会给一个黑格子与一个白格子均加一,那么最后黑白格子所加量相同(最关键的地方).然后呢,还要观察,最终高度与行动次数一一对应,于是求解他们两个是等效的,然后发现如果最后高度确定,是很好验证是否可行的,就是方格下水道.进一步分析,当黑格与白格的数量不同那么最终高度一定,可以一下判解.当数量相同的时候关于最终高度是…
正解:二分+网络流 解题报告: 传送门$QwQ$ 这种什么,"同时增加",长得就挺网络流的$QwQ$?然后看到问至少加多少次,于是考虑加个二分呗?于是就大体确定了做题方向,用的网络流+二分 然后就考虑怎么建图呗$QwQ$ 首先考虑二分出每个点的值,然后就可以根据这个值求出每个点要增加的多少以及总的修改次数 然后相邻显然考虑黑白染色黑连$S$白连$T$彼此之前连$inf$,跑个最大流判断跑满了没有. 感觉好像要做完辣? 但是这时候要注意到一个问题$QwQ$,就说不能证明这个次数有可二分性…
寒假的时候就听过这个题.但是一直没有写. qwq 首先,我们发现题目中的图是个网格图,然后每次可以将相邻两个格子加一. 很容易就想到是黑白染色.那么每次操作,就相当于同时操作一个白点,一个黑点. 我们会发现,这样其实到最终局面的时候,黑点和白点所加的差是相等的,也就是说,我们假设黑点的个数是\(num1\),权值和是\(sum1\),白点的个数是\(num2\),权值和是\(sum2\).若最终局面的数字是\(x\) \[num1\times x - sum1 =num2 \times x -…
题目 话说有没有跟我一样直接猜了一个最大值不会改变这样一个二乎乎的结论之后交上去保龄的呀 首先看到棋盘,选择相邻的格子,非常经典的黑白染色 显然那个二乎乎的结论是错的,随便就能\(hack\)了 于是我们二分这个最大值 如果当前二分出来的最大值是\(mid\),\(i+j\)为奇数,起点连\(mid-a[i][j]\)的边,否则向终点连\(mid-a[i][j]\)的边,相邻的格子连流量无穷的边,跑最大流看看起点连出去的边和连向终点的边是否都满流就好了 但是这样仅限于\(n\times m\)为…
题解 题目 做这题之前,做了一道叫星际战争的题,很容易想到二分 \(+\) 网络流,那么二分啥呢? 我们先推一下式子,因为是对相邻格子加数,那么可以联想到黑白染色类问题. 设有黑色格子 \(B\) 个,其格子中初始数的和为 \(b\),白色格子同理,个数为 \(W\) 个,初始权值和为 \(w\) 个,最后变成的同一个数为 \(num\). 可以得出 \(B×num-b=W×num-w\) 化简得 \(num=\frac{b-w}{B-W}\). 首先对于化简式,其必要条件是 \(B\neq W…
题目链接 题意分析 首先我们需要求的是统一以后的值\(x\) 并且一般的棋盘操作我们都需要黑白染色 那么对于棋盘格子是偶数的情况的话 答案是存在单调性的 因为如果统一之后 两两搭配还是可以再加一个的 如果棋盘格子是奇数的话 那么黑格子数量为\(num1\) 权值和为\(sum1\) 白格子数量为\(num2\) 权值和为\(sum2\) 那么 \[num1*x-sum1=num2*x-sum2\] 然后我们可以使用最大流检验合法性 用源点向黑色的点连边权为\(x-num[i][j]\)的边 白色…
这个题的数据,太卡了,TLE了两晚上,各种调试优化,各种蛋疼. 2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec Memory Limit: 128 MB Submit: 2311 Solved: 598 [Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻 的格子,并使这两个数都加上 1. 现在 Blinke…
网络流-最大流 这题……建模部分先略过 这道题是会卡时限的T_T俺的Dinic被卡了,在此放几篇很棒的讲网络流算法的文章,至于大家耳熟能详的论文就不放了…… http://www.cppblog.com/panzhizhou/articles/172978.html?opt=admin 里面的各种超链接也很不错的……       好的来重新更新一下……这题因为要二分,需要多次重建跑最大流,所以不能用像lrj大爷的白书上那样用vector存边(太慢),需用前向星= = 然后……本蒻由于第一次写前向…
2756: [SCOI2012]奇怪的游戏 Time Limit: 40 Sec  Memory Limit: 128 MB Description Blinke 最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M的棋盘上玩,每个格子有一个数.每次 Blinker会选择两个相邻的格子,并使这两个数都加上 1.  现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同 一个数则输出-1.  Input 输入的第一行是一个整数T,表示输入数据有T轮游戏组成.  每轮游…
题目链接:奇怪的游戏 一开始这道题想岔了……想到黑白染色后对总格子数按奇偶性分类讨论,然后没发现奇数个格子的可以直接解方程…… 首先可以发现每次操作是给相邻的两个格子权值加一,因此我们把棋盘黑白染色后每次操作就是给白格子和黑格子加一.因此白格子和黑格子的增加的量是相等的.设我们有\(n_1\)个白格子,它们的数值和是\(s_1\),有\(n_2\)个黑格子,数值和是\(s_2\).再设最后每个数都变成了\(x\),那么有: \[n_1x-s_1=n_2x-s_2\] 所以当\(n_1 \neq…
Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 4403  Solved: 1226[Submit][Status][Discuss] Description Blinker最近喜欢上一个奇怪的游戏. 这个游戏在一个 N*M 的棋盘上玩,每个格子有一个数.每次 Blinker 会选择两个相邻的格子,并使这两个数都加上 1. 现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出-1. Input 输入的第…
题目: 题目描述 Blinker 最近喜欢上一个奇怪的游戏.这个游戏在一个 N*M  的棋盘上玩,每个格子有一个数.每次 Blinker  会选择两个相邻的格子,并使这两个数都加上 1.现在 Blinker 想知道最少多少次能使棋盘上的数都变成同一个数,如果永远不能变成同一个数则输出 -1. 输入格式 输入的第一行是一个整数 T,表示输入数据有T 轮游戏组成.每轮游戏的第一行有两个整数 N 和 M , 分别代表棋盘的行数和列数.接下来有 N 行,每行 M 个数. 输出格式 对于每个游戏输出最少能…