loj 3236 [POI2019 R1] Układ scalony

loj 3236 [POI2019 R1] Układ scalony

https://loj.ac/problem/3236

https://loj.ac/submission/747558

loj 3236 [POI2019 R1] Układ scalony_第1张图片

loj 3236 [POI2019 R1] Układ scalony_第2张图片

Tutorial

loj 3236 [POI2019 R1] Układ scalony_第3张图片

考虑一种特殊情况 \(n,m\) 均为偶数且 \(k\) 较小的情况.

loj 3236 [POI2019 R1] Układ scalony_第4张图片

\(n,m\) 均为偶数时,合法的 \(k \in [n+m-1, nm-1]\)

\(n,m\) 不均为偶数时,合法的 \(k \in [n+m-2,nm-1]\)

Code

#include 
#include 
#define debug(...) fprintf(stderr,__VA_ARGS__)
using namespace std;
inline char nc()
{
	return getchar();
	static char buf[100000],*l=buf,*r=buf;
	return l==r&&(r=(l=buf)+fread(buf,1,100000,stdin),l==r)?EOF:*l++;
}
template void read(T &x)
{
	x=0; int f=1,ch=nc();
	while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=nc();}
	while(ch>='0'&&ch<='9'){x=x*10-'0'+ch;ch=nc();}
	x*=f;
}
const int maxn=1000+5;
const int maxm=1000+5;
int n,m,k;
bool f;
bool vis[maxn][maxm];
inline void adde(int a,int b,int c,int d)
{
//	debug("%d %d %d %d\n",a,b,c,d);
	if(f) swap(a,b),swap(c,d);
	printf("%d %d %d %d\n",a,b,c,d);
}
int main()
{
	read(n),read(m),read(k);
	if(k>=n*m||k>1)+1;
	k-=n+m-2;
	int a=min(k,(mid-1)*(m-1)),b=k-a;
	if((~n&1)&&k

你可能感兴趣的:(loj 3236 [POI2019 R1] Układ scalony)