#define int long long #define endl '\n' #define fix(n) std::fixed << std::setprecision(n) [[maybe_unused]]typedef std::pair<int, int> pii; [[maybe_unused]]constint INF = 1e18 + 50;
voidsolve(){ int s = 2023; int n, m; std::cin >> n >> m; std::vector<int> a(n); for (int i = 0; i < n; i++) std::cin >> a[i]; for (int i = 0; i < n; i++) if (s % a[i]) { std::cout << "NO" << endl; return; } else { s /= a[i]; } std::cout << "YES" << endl; for (int i = 0; i < m - 1; i++) std::cout << 1 << " "; std::cout << s << endl; }
signedmain(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr), std::cout.tie(nullptr); int Lazy_boy_ = 1; std::cin >> Lazy_boy_; while (Lazy_boy_--) solve(); return0; }
玛莎和奥丽雅马上就要参加一个重要的团队奥林匹克竞赛了。为此,玛莎建议和奥丽雅玩一个热身游戏:
有一个大小为 n 的数组 a。马莎先走,然后大家轮流走。每一步都可以用下面的操作顺序来描述:
如果数组的大小为 1,游戏结束。
当前下棋的棋手选择两个不同的索引 i、j(1≤i,j≤|a|),并执行以下操作–从数组中移除 ai 和 aj,并在数组中添加一个等于⌊ai+aj2⌋⋅2 的数字。换句话说,首先将 ai 和 aj 的和除以 2(向下舍入),然后将结果乘以 2。
玛莎的目标是最大化最终数字,而奥丽雅的目标是最小化最终数字。
玛莎和奥丽雅决定在初始数组 a 的每个非空前缀上进行博弈,并请求您的帮助。
对于每个 k(=1,2,…,n),请回答下面的问题。让数组 a 的前 k 个元素出现在游戏中,索引分别为 1,2,…,k。在双方都下得最好的情况下,最后会剩下多少个元素?
#define int long long #define endl '\n' #define fix(n) std::fixed << std::setprecision(n) [[maybe_unused]]typedef std::pair<int, int> pii; [[maybe_unused]]constint INF = 1e18 + 50;
voidsolve(){ int n; std::cin >> n; std::vector<int> a(n); for (int i = 0; i < n; i++) std::cin >> a[i]; int S = 0, C = 0; for (int i = 0; i < n; i++) { S += a[i], C += a[i] & 1; if (i == 0) std::cout << a[i] << " \n"[i == n - 1]; else std::cout << S - C / 3 - (C % 3 == 1) << " \n"[i == n - 1]; } }
signedmain(){ std::ios::sync_with_stdio(false); std::cin.tie(nullptr), std::cout.tie(nullptr); int Lazy_boy_ = 1; std::cin >> Lazy_boy_; while (Lazy_boy_--) solve(); return0; }