QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#679580 | #5438. Half Mixed | ruoye123456 | TL | 0ms | 3776kb | C++20 | 1.9kb | 2024-10-26 17:55:34 | 2024-10-26 17:55:35 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
#define x first
#define y second
typedef pair<int,int> PII;
typedef long long ll;
typedef unsigned long long ull;
typedef unsigned int uint;
typedef vector<string> VS;
typedef vector<int> VI;
typedef vector<vector<int>> VVI;
vector<int> vx;
inline void divide() {sort(vx.begin(),vx.end());vx.erase(unique(vx.begin(),vx.end()),vx.end());}
//inline int mp(int x) {return upper_bound(vx.begin(),vx.end(),x)-vx.begin();}
inline int log_2(int x) {return 31-__builtin_clz(x);}
inline int popcount(int x) {return __builtin_popcount(x);}
inline int lowbit(int x) {return x&-x;}
inline ll Lsqrt(ll x) { ll L = 1,R = 2e9;while(L + 1 < R){ll M = (L+R)/2;if(M*M <= x) L = M;else R = M;}return L;}
void solve()
{
int n,m;
cin>>n>>m;
if((ll)m*(m+1)%4) {cout<<"No\n";return ;}
//if(n < m) {swap(n,m);turn = false;}
ll ans = m*m/2 - m/2;
vector<int> final;
auto dfs = [&](auto && dfs, int rest, ll res, vector<int> path)->void
{
if(!rest)
{
if(res == ans) final = path;
return ;
}
for(int i=rest;i;--i)
{
if(res + (ll)i * i + rest - i > ans) continue;
vector<int> tmp = path;
tmp.push_back(i);
dfs(dfs, rest - i, res + (ll)i*i, tmp);
}
};
cout<<"Yes\n";
vector<int> init;
dfs(dfs, m, 0, init);
//cout<<final.size()<<'\n';
vector<vector<int>> g(n,vector<int> (m));
int ok = 0;
int cnt = 0;
for(auto t : final)
{
for(int i=1;i<=t;++i) g[0][cnt++] = ok;
ok ^= 1;
}
for(int i=1;i<n;++i)
for(int j=0;j<m;++j)
g[i][j] = g[0][j];
for(int i=0;i<n;++i)
for(int j=0;j<m;++j)
cout<<g[i][j]<<" \n"[j==m-1];
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int T;
cin>>T;
while(T--)
{
solve();
}
}
详细
Test #1:
score: 100
Accepted
time: 0ms
memory: 3776kb
input:
2 2 3 1 1
output:
Yes 0 1 0 0 1 0 No
result:
ok OK, Accepted. (2 test cases)
Test #2:
score: -100
Time Limit Exceeded
input:
5382 1 1 1 2 2 1 1 3 2 2 3 1 1 4 2 3 3 2 4 1 1 5 2 4 3 3 4 2 5 1 1 6 2 5 3 4 4 3 5 2 6 1 1 7 2 6 3 5 4 4 5 3 6 2 7 1 1 8 2 7 3 6 4 5 5 4 6 3 7 2 8 1 1 9 2 8 3 7 4 6 5 5 6 4 7 3 8 2 9 1 1 10 2 9 3 8 4 7 5 6 6 5 7 4 8 3 9 2 10 1 1 11 2 10 3 9 4 8 5 7 6 6 7 5 8 4 9 3 10 2 11 1 1 12 2 11 3 10 4 9 5 8 6 ...
output:
No No No Yes 0 1 0 No No Yes 0 1 0 0 Yes 0 1 0 0 1 0 No No No Yes 0 1 0 0 0 1 0 0 Yes 0 1 0 0 1 0 0 1 0 No No No No Yes 0 1 0 0 0 1 0 0 0 1 0 0 Yes 0 1 0 0 1 0 0 1 0 0 1 0 No No Yes 0 1 1 0 0 0 0 No No Yes 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 Yes 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 No No Yes 0 1 0 1 1 1 1 1 Ye...