1 条题解
-
0
长度分别为2,3,4的木条,通过粘连操作将其拼成长度为10的木条,在最后输出最大的个数。 先给小木条长度设置优先级,长度为3的应该最先来使用,先用两个3去消耗一个4. 再用两个3消耗两个2. 然后是两个4消耗一个2 现在若长度为4的还有有一个则将其用2消耗掉。 最后加上长为2的个数除以五。
#include<bits/stdc++.h> using namespace std; #define ll long long const int N = 1e5+5; void slove() { ll n1, n2, n3; scanf("%lld%lld%lld", &n1, &n2, &n3); ll ans = 0; // 334的匹配模式 ll s = min(n2 / 2, n3); ans += s; n2 = n2 - s * 2; n3 -= s; //2233匹配 s = min(n2 / 2, n1 / 2); ans += s; n2 -= s * 2; n1 -= s * 2; //442的匹配 s = min(n1, n3 / 2); ans += s; n3 = n3 - s * 2; n1 = n1 - s; //2224匹配 if (n3 > 0) if (n1 >= 3) { ans++; n1 -= 3; } //22222匹配 ans += n1 / 5; printf("%lld\n", ans); } int main() { freopen("ten.in", "r", stdin); freopen("ten.out", "w", stdout); int _ = 1; cin >> _; while (_--) { slove(); } return 0; }小结
- 先 334:优先用 3 搭配 4,不耗 2,节省万能资源 2。
- 再 2233:用尽剩余的 3(当 4 不足时,3 只能这样用)。
- 再 244:只用 1 根 2/块,把 4 尽量两两用掉,继续节省 2。
- 再 2224:若只剩 1 根 4,用 3 根 2 把它消掉(至多一次)。
- 最后 22222:把 2 全部打包。
- 1
信息
- ID
- 179
- 时间
- 2000ms
- 内存
- 1024MiB
- 难度
- 3
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者