我太难了!!!(点进来看一下,可能会帮到你)

学术版

@[Isaunoya](/user/96580) 是不对,但A了
by Malody @ 2020-05-24 20:08:19


这样不好么。。
by 1saunoya @ 2020-05-24 20:08:29


拆的也不对好吧。。。
by 1saunoya @ 2020-05-24 20:09:03


@[Isaunoya](/user/96580) 对啊,是错的,但A了,所以数据有误
by Malody @ 2020-05-24 20:09:35


@[Isaunoya](/user/96580) 我说的是 同时谴责出题人,我的代码二进制没拆完也A了
by Malody @ 2020-05-24 20:10:06


@[我∈蒟蒻](/user/334548) /youl 数据有误的意思是这个输入不应该是这个输出,而不是数据水,另外我前面发过一个正确的代码,建议学习一下怎么用 bitset /youl
by 1saunoya @ 2020-05-24 20:10:32


@[我∈蒟蒻](/user/334548) 你拆的复杂度也有问题好么。。
by 1saunoya @ 2020-05-24 20:10:47


@[Isaunoya](/user/96580) 那就是强度不够……
by Malody @ 2020-05-24 20:11:10


草泥马
by Malody @ 2020-05-24 20:19:50


@[我∈蒟蒻](/user/334548) 为什么要用bitset或者bool数组,int不也能过? ```cpp// P6567 [NOI Online #3 入门组]买表(民间数据) #include <cstdio> #include <iostream> #define MN 500005 using namespace std; inline int read() { int x = 0, f = 1; char ch = getchar(); while (ch < '0' || ch > '9') { if (ch == '-') f = -1; ch = getchar(); } while (ch >= '0' && ch <= '9') x = (x << 1) + (x << 3) + (ch ^ 48), ch = getchar(); return x * f; } int n, m, f[MN], a[MN], k[MN], mx, q[MN]; int main() { n = read(), m = read(), f[0] = 1; for (int i = 0; i < n; i++) k[i] = read(), a[i] = read(); for (int i = 0; i < m; i++) mx = max(mx, (q[i] = read())); for (int i = 0; i < n; i++) { int now = 1, temp = a[i]; while (1) if (temp > now) { temp -= now; for (int j = mx; j >= now * k[i]; j--) if (f[j - now * k[i]]) f[j] = 1; now *= 2; } else { for (int j = mx; j >= temp * k[i]; j--) if (f[j - temp * k[i]]) f[j] = 1; break; } } for (int i = 0; i < m; i++) printf("%s", f[q[i]] ? "Yes\n" : "No\n"); return 0; } ```
by wtxy2006 @ 2020-05-24 20:51:38


上一页 | 下一页