最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

CodeforcesRound#268(Div.2)_html/css

来源:动视网 责编:小采 时间:2020-11-27 15:55:34
文档

CodeforcesRound#268(Div.2)_html/css

CodeforcesRound#268(Div.2)_html/css_WEB-ITnose:Codeforces Round #268 (Div. 2) 题目链接 A:有的标记掉判断一下即可 B:枚举时间一个个去判断一下即可 C:构造一下,4和5分别手动构造,然后之后每次多2个数字就先相减掉得到1,然后乘上原数字不变,4以下的是绝对构造不出来的 D:贪心,先排序,然
推荐度:
导读CodeforcesRound#268(Div.2)_html/css_WEB-ITnose:Codeforces Round #268 (Div. 2) 题目链接 A:有的标记掉判断一下即可 B:枚举时间一个个去判断一下即可 C:构造一下,4和5分别手动构造,然后之后每次多2个数字就先相减掉得到1,然后乘上原数字不变,4以下的是绝对构造不出来的 D:贪心,先排序,然


Codeforces Round #268 (Div. 2)

题目链接

A:有的标记掉判断一下即可

B:枚举时间一个个去判断一下即可

C:构造一下,4和5分别手动构造,然后之后每次多2个数字就先相减掉得到1,然后乘上原数字不变,4以下的是绝对构造不出来的

D:贪心,先排序,然后每次twopointer选头尾两个判断能丢进哪个集合,都不行就找一个之前满足的丢进小集合

E:推理,详细见官方题解,大致是推出来后,[x, x + 1e18 - 1]这个区间,每次挪动一个变成[x + 1, x + 1e18],对应的总和就加1,那么只要能求出[1, 1e18]的值,然后在去挪动相应步数得到相应区间即可,计算1-1e18的和推推规律就可以发现了,官方题解上也有公式

代码:

A:

#include #include int n, p, q, vis[105];bool solve() {	for (int i = 1; i <= n; i++)	if (vis[i] == 0) return false;	return true;}int main() {	scanf("%d", &n);	scanf("%d", &p);	int tmp;	for (int i = 0; i < p; i++) {	scanf("%d", &tmp);	vis[tmp] = 1;	}	scanf("%d", &q);	for (int i = 0; i < q; i++) {	scanf("%d", &tmp);	vis[tmp] = 1;	}	printf("%s\n", solve() ? "I become the guy." : "Oh, my keyboard!");	return 0;}

B:
#include #include const int N = 55;int p, q, l, r, ans;int vis[10005], c[N], d[N];bool judge(int t) {	for (int i = 0; i < q; i++) {	for (int j = c[i]; j <= d[i]; j++) {	if (vis[j + t])	return true;	}	}	return false;}int main() {	scanf("%d%d%d%d", &p, &q, &l, &r);	int a, b;	for (int i = 0; i < p; i++) {	scanf("%d%d", &a, &b);	for (int j = a; j <= b; j++)	vis[j] = 1;	}	for (int i = 0; i < q; i++)	scanf("%d%d", &c[i], &d[i]);	for (int i = l; i <= r; i++) {	if (judge(i)) ans++;	}	printf("%d\n", ans);	return 0;}

C:
#include #include #include #include using namespace std;int n;void solve(int n) {	if (n % 2 == 0) {	printf("1 + 2 = 3\n");	printf("3 + 3 = 6\n");	printf("6 * 4 = 24\n");	for (int i = 5; i <= n; i += 2) {	printf("%d - %d = 1\n", i + 1, i);	printf("24 * 1 = 24\n");	}	} else {	printf("5 - 3 = 2\n");	printf("1 + 2 = 3\n");	printf("2 * 3 = 6\n");	printf("4 * 6 = 24\n");	for (int i = 6; i <= n; i += 2) {	printf("%d - %d = 1\n", i + 1, i);	printf("24 * 1 = 24\n");	}	}}int main() {	scanf("%d", &n);	if (n < 4) printf("NO\n");	else {	printf("YES\n");	solve(n);	}	return 0;}

D:
#include #include #include #include using namespace std;const int N = 100005;int n, a, b;map to;struct Seq {	int num, id, to, vis;} s[N];bool cmp(Seq a, Seq b) {	return a.num < b.num;}bool cmpid(Seq a, Seq b) {	return a.id < b.id;}int flag = 0;bool solve() {	int st = 0, ed = n - 1;	while (st <= ed) {	if (s[st].vis) {	st++;	continue;	}	if (s[ed].vis) {	ed--;	continue;	}	if (s[st].num + s[ed].num > b || s[st].num + s[ed].num < a)	return false;	if (s[st].num + s[ed].num == b) {	s[st].vis = 1;	s[ed].vis = 1;	s[st].to = 1;	s[ed].to = 1;	st++;	ed--;	continue;	} else if (s[st].num + s[ed].num == a) {	s[st].vis = 0;	s[ed].vis = 0;	s[st].to = 0;	s[ed].to = 0;	st++;	ed--;	} else {	if (!to.count(a - s[st].num)) return false;	int v = to[a - s[st].num];	if (s[v].vis) return false;	s[v].to = 0;	s[v].vis = 1;	s[st].vis = 1;	s[st].to = 0;	st++;	}	}	sort(s, s + n, cmpid);	printf("YES\n");	printf("%d", s[0].to^flag);	for (int i = 1; i < n; i++)	printf(" %d", s[i].to^flag);	printf("\n");	return true;}int main() {	scanf("%d%d%d", &n, &a, &b);	if (a > b) {	swap(a, b);	flag = 1;	}	for (int i = 0; i < n; i++) {	scanf("%d", &s[i].num);	s[i].id = i;	}	sort(s, s + n, cmp);	for (int i = 0; i < n; i++)	to[s[i].num] = i;	if (!solve()) printf("NO\n");	return 0;}

E:
#include #include #include using namespace std;typedef long long ll;const ll INF = 1e18;ll a;int main() {	scanf("%lld", &a);	ll num = INF / 10 % a;	num = num * 2 % a;	num = num * 9 % a;	num = num * 9 % a;	num = num * 5 % a;	printf("%lld %lld\n", a - num, a - num + INF - 1);	return 0;}

文档

CodeforcesRound#268(Div.2)_html/css

CodeforcesRound#268(Div.2)_html/css_WEB-ITnose:Codeforces Round #268 (Div. 2) 题目链接 A:有的标记掉判断一下即可 B:枚举时间一个个去判断一下即可 C:构造一下,4和5分别手动构造,然后之后每次多2个数字就先相减掉得到1,然后乘上原数字不变,4以下的是绝对构造不出来的 D:贪心,先排序,然
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top