题解:P11168 「CMOI R1」First Town of This Journey/Grid Covering

· · 题解

本题最大难点在于要开 unsigned long long

要求选的黑点最少,相当于要求选的白点最多。

考虑一个白点选了之后对问题有什么影响,显然与他挨着的行与列就不能选,否则连起来是不会经过黑点的。

然后就很容易想出构造方案,选择所有 (i,j)(i \equiv 1 \pmod 2,j \equiv 1 \pmod 2),画个图可以发现这显然是满足要求的。

接下来考虑指定颜色:

#include<bits/stdc++.h>
using namespace std;
#define ll unsigned long long
ll n,m,a,b,x,ans,yyn,ym;
int main(){

  cin>>n>>m>>a>>b>>x;yyn=n,ym=m;
  if(x==0&&a%2==0)n--;
  if(x==0&&b%2==0)m--;
  if(x==1&&(a%2==1&&b%2==1&&n%2==1&&m%2==1))ans--;
  ans+=((n+1)/2)*((m+1)/2);
  cout<<yyn*ym-ans<<"\n";
}