为什么会wa???
查看原帖
为什么会wa???
997783
Ayn1631楼主2024/5/14 13:52

这是我的代码; 思路是: 根据雨巨的课, 最小是sa/k+ sb/k 最大是sa/k+ sb/k+ 1

那么,当可以去到+1时, 必然是因为某树可以用sa%k 和sb%k 的数(不一定全部用完), 达成满足k;

即,设i属于[0,sa%k], j属于[0, sb%k]; 存在i+j=k, 且某树的a>=i, 且b>=j!

我什么会错???

//
// Created by HASEE on 2024/5/9.
//

/*** remain true to the original aspiration ***/
#include <bits/stdc++.h>

using namespace std;

// #pragma GCC optimize(2)
// #pragma G++ optimize(2)

#define pli pair<li, li>
#define ll long long
#define li long long
#define int long long
#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
#define Test   \
    ll ___;    \
    read(___); \
    while (___--)
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define fi first
#define se second
#define Faster                     \
    ios_base ::sync_with_stdio(0); \
    cin.tie(0);                    \
    cout.tie(0);
#define YES printf("YES\n");
#define Yes printf("Yes\n");
#define NO printf("NO\n");
#define No printf("No\n");
int mod = 1e9 + 7;
#define gcd(a, b) __gcd(a, b)
#define lcm(a, b) (a * (b / gcd(a, b)))
#define popcount(x) __builtin_popcount(x)
#define string(x) to_string(x)
int dx[] = {-1, 0, 0, 1, 0}; // ��������
int dy[] = {0, -1, 1, 0, 0};
int dx1[] = {-1, -1, -1, 0, 1, 0, 1, 1, 0}; // ���� ���� ���� �� �� �� ���� ���� ����
int dy1[] = {-1, 0, 1, -1, 1, 1, -1, 0, 0};
int dx2[] = {-2, -2, -1, -1, 1, 1, 2, 2};
int dy2[] = {-1, 1, -2, 2, -2, 2, -1, 1};

const ll INF = 0x3f3f3f3f;
const double PI = 3.141592653589793238462643383279;

ll powmod(ll a, ll b)
{
    ll res = 1;
    a %= mod;
    for (; b; b >>= 1)
    {
        if (b & 1)
            res = res * a % mod;
        a = a * a % mod;
    }
    return res;
}

ll square(ll x1, ll y1, ll x2, ll y2) { return abs(x2 - x1) * abs(y2 - y1); }

ll get_dist(ll x1, ll y1, ll x2, ll y2) { return (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1); }

ll get_jiao(ll x1, ll y1, ll x2, ll y2, ll x3, ll y3, ll x4, ll y4)
{
    int n1 = max(min(x1, x2), min(x3, x4)), m1 = max(min(y1, y2), min(y3, y4)), n2 = min(max(x1, x2), max(x3, x4)), m2 = min(max(y1, y2), max(y3, y4));
    if (n2 > n1 && m2 > m1)
        return (n2 - n1) * (m2 - m1);
    else
        return 0;
}

template <typename T>
inline bool read(T &x)
{
    x = 0;
    int f = 1;
    char c = getchar();
    bool ret = false;
    while (c < '0' || c > '9')
    {
        if (c == '-')
            f = -1;
        c = getchar();
    }
    while (c <= '9' && c >= '0')
    {
        x = (x << 1) + (x << 3) + (c ^ 48);
        c = getchar();
        ret = true;
    }
    x = x * f;
    return ret;
}

template <typename T, typename... Args>
inline bool read(T &a, Args &...args) { return read(a) && read(args...); }

template <typename T, typename Type>
inline void print(T x, const Type type)
{
    if (x < 0)
        putchar('-'), x = -x;
    if (x > 9)
        print(x / 10, 0);
    putchar(x % 10 ^ 48);
    if (type == 1)
        putchar(' ');
    else if (type == 2)
        putchar('\n');
}

template <typename T, typename Type, typename... Args>
inline void print(T x, const Type type, Args... args)
{
    print(x, type);
    print(args...);
}
// #define rint register int
#define rint int
#define rep(i, i0, n) for (rint i = i0; i <= n; i++)
#define per(i, in, i0) for (rint i = in; i >= i0; i--)
#define itn int
#define PII pair<int, int>
///______________________ L E T ' S  B E G I N _____________________

const int N=1e5+7;
int a[N];
int b[N];
int n,k;
int sa=0,sb=0;
int x,y;

signed main()
{
    read(n,k);
    rep(i,1,n){
        read(a[i],b[i]);
        sa+=a[i];
        sb+=b[i];
    }
    int res=sa/k+sb/k;
    x=sa%k,y=sb%k;
    rep(i,0,x)
    rep(j,0,y)
    if(i+j>=k)
        rep(l,1,n){
            if(a[l]>=i&&b[l]>=j){
                print(res+1,2);
                return 0;
            }
        }
    print(res,2);
}

2024/5/14 13:52
加载中...