这个题,如果
N
∗
M
N * M
N∗M 是偶数的话,那么答案一定是
N
∗
M
/
2
N * M / 2
N∗M/2 的呀,如果是奇数,就是
N
∗
M
/
2
−
1
N * M / 2 - 1
N∗M/2−1。当然考虑到 C++ 的除法是整除,因此直接输出
N
∗
M
/
2
N * M / 2
N∗M/2 就行,如果是 python的话,输出
N
∗
M
/
/
2
N * M // 2
N∗M//2.
#include<iostream>usingnamespace std;int M, N;intmain(){
cin >> M >> N;
cout << M * N /2<< endl;return0;}
#include<cstdio>intmain(){int n;scanf("%d",&n);if(n %2){
n /=2;printf("%d\n", n);for(int i =0; i +1< n; i++){printf("%d ",2);}printf("%d\n",3);}else{
n /=2;printf("%d\n", n);for(int i =0; i < n; i++){printf("%d%c",2, i +1== n ?'\n':' ');}}return0;}
#include<cstdio>#include<algorithm>usingnamespace std;int a[100005], ans[100005];intmain(){int N;scanf("%d",&N);for(int i =0; i < N; i++){scanf("%d",&a[i]);}sort(a, a + N);int p1 =0, p2 = N -1;int i =0;while(i < N){
ans[p1++]= a[i++];if(i < N) ans[p2--]= a[i++];}bool flag =true;for(int i =0; i < N; i++){if(ans[i]>= ans[(i + N -1)% N]+ ans[(i +1)% N]){
flag =false;break;}}if(flag){printf("YES\n");for(int i =0; i < N; i++){printf("%d%c", ans[i], i +1== N ?'\n':' ');}}else{printf("NO\n");}return0;}
这是一道很有意思的构造题,假设空地的数量是 cnt 个,需要摆的墙是 K 个,那么,先从一个空地开始走 cnt - K 个空格,然后把剩下的 K 个摆上墙,这样子就可以保证剩下的 cnt - K 个空格是连通的。
#include<cstdio>#include<cstring>#include<algorithm>usingnamespace std;int N, M, K;constint maxn =510;char maze[maxn][maxn];int dx[]={1,-1,0,0}, dy[]={0,0,1,-1};int cnt, blank;voiddfs(int x,int y){
maze[x][y]='*';for(int i =0; i <4; i++){int nx = x + dx[i], ny = y + dy[i];if(nx <0|| nx >= N || ny <0|| ny >= M || maze[nx][ny]!='.')continue;if(++blank <= cnt - K)dfs(nx, ny);}}intmain(){scanf("%d%d%d",&N,&M,&K);for(int i =0; i < N; i++){scanf("%s", maze[i]);}for(int i =0; i < N; i++){for(int j =0; j < M; j++){if(maze[i][j]=='.') cnt++;}}bool flag =false;for(int i =0; i < N; i++){for(int j =0; j < M; j++){if(maze[i][j]=='.'&&++blank <= cnt - K){dfs(i, j);
flag =true;break;}}if(flag)break;}for(int i =0; i < N; i++){for(int j =0; j < M; j++){if(maze[i][j]=='*') maze[i][j]='.';elseif(maze[i][j]=='.') maze[i][j]='X';}}for(int i =0; i < N; i++)printf("%s\n", maze[i]);return0;}