arc D 题求 hack
  • 板块学术版
  • 楼主Windy_YY
  • 当前回复4
  • 已保存回复4
  • 发布时间2025/6/15 22:03
  • 上次更新2025/6/16 22:03:53
查看原帖
arc D 题求 hack
378467
Windy_YY楼主2025/6/15 22:03
#pragma GCC optimize(3, "Ofast", "inline", "unroll-loops")
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1000010;
const int mod = 998244353;
const int inf = 1e18;

int a[N], b[N];

signed main()
{
    // freopen("1.in", "r", stdin);
    // freopen("1.out", "w", stdout);
    // cin.tie(0)->sync_with_stdio(false);
    int T;
    cin >> T;
    while (T--)
    {
        int n, k;
        cin >> n >> k;
        if (k % 2 == 0 && n % k && 0)
            cout << "No\n";
        else
        {
            if (n == k)
            {
                cout << "Yes\n";
                cout << n << '\n';
                for (int i = 1; i <= n; ++i)
                    cout << i - 1 << ' ';
                cout << '\n';
                continue;
            }
            if (k & 1)
            {
                cout << "Yes\n";
                cout << (k + 1) / 2 << '\n';
                for (int i = 1; i <= (k + 1) / 2; ++i)
                    cout << i - 1 << ' ';
                cout << '\n';
            }
            else if (n % k == 0)
            {
                cout << "Yes\n";
                cout << k << '\n';
                for (int i = 0; i < n; i += n / k)
                    cout << i << ' ';
                cout << '\n';
            }
            else
            {
                if (k + 1 == n)
                    cout << "No\n";
                else
                {
                    vector<int> v = {0, n / 2};
                    int kk = k - 2;
                    if (kk)
                    {
                        for (int i = 1; ; ++i)
                        {
                            v.emplace_back(i);
                            if ((kk -= 3) <= 0)
                                break;
                        }
                    }
                    if (kk)
                    {
                        cout << "No\n";
                        continue;
                    }
                    sort(v.begin(), v.end());
                    cout << "Yes\n";
                    cout << v.size() << '\n';
                    for (int &i : v)
                        cout << i << ' ';
                    cout << '\n';
                }
            }
        }
    }
    return 0;
}

/kel

2025/6/15 22:03
加载中...