codeforces D. Game With Array
程序员文章站
2022-06-27 11:52:04
...
题目
题意:
给你两个正数问你你是否有个数字,且总和为的一个序列,而且要满足存在一个数字使得这个序列中有一个区间和不等于或者。
思路:
我们可以发现,如果的情况下,不可能会有一个符合条件的,比如说吧,那么序列一定是,最后的话肯定无论是多少,肯定会有满足的,然后我在构造的时候是将,出了最后一个位置的外的其他都设置成了,那么就一定是这个值了。
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <queue>
#include <vector>
#include <string>
#include <cmath>
#include <set>
#include <map>
#include <deque>
#include <stack>
#include <cctype>
using namespace std;
typedef long long ll;
typedef vector<int> veci;
typedef vector<ll> vecl;
typedef pair<int, int> pii;
template <class T>
inline void read(T &ret) {
char c;
int sgn;
if (c = getchar(), c == EOF) return ;
while (c != '-' && (c < '0' || c > '9')) c = getchar();
sgn = (c == '-') ? -1:1;
ret = (c == '-') ? 0:(c - '0');
while (c = getchar(), c >= '0' && c <= '9') ret = ret * 10 + (c - '0');
ret *= sgn;
return ;
}
inline void out(int x) {
if (x > 9) out(x / 10);
putchar(x % 10 + '0');
}
int main() {
int n, m;
read(n), read(m);
if (2 * n > m) {
printf("NO\n");
return 0;
}
printf("YES\n");
printf("%d ", m - n + 1);
for (int i = 0; i < n - 1; i++) printf("1 ");
printf("\n");
printf("%d", (m + 1) / 2);
return 0;
}
推荐阅读
-
Codeforces Round #656 (Div. 3)D. a-Good String(递归+dfs)
-
Codeforces Round #650 (Div. 3) B. Even Array
-
Educational Codeforces Round 97 (Rated for Div. 2) D. Minimal Height Tree
-
Codeforces Round #665 (Div. 2) D. Maximum Distributed Tree(dfs)
-
Codeforces Round #619 (Div. 2) D. Time to Run
-
Codeforces Round #583 (Div. 1 + Div. 2,) D. Treasure Island(dfs+思维)
-
[codeforces]round670 D. Three Sequences
-
Codeforces Round #686 (Div. 3) F. Array Partition
-
Codeforces(D. 505)状压DP
-
codeforces D. Game With Array