Codeforces Round #268 (Div. 2) (被屠记)

c被fst了。。。。。。。。。。。。。。。。

然后掉到600+.。。。

然后。。。估计得绿名了。。

sad

A.I Wanna Be the Guy

题意:让你判断1~n个数哪个数没有出现。。

sb题。。。开个数组即可。。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)
#define for1(i,a,n) for(int i=(a);i<=(n);++i)
#define for2(i,a,n) for(int i=(a);i<(n);++i)
#define for3(i,a,n) for(int i=(a);i>=(n);--i)
#define for4(i,a,n) for(int i=(a);i>(n);--i)
#define CC(i,a) memset(i,a,sizeof(i))
#define read(a) a=getint()
#define print(a) printf("%d", a)
#define dbg(x) cout << #x << " = " << x << endl
#define printarr(a, n, m) rep(aaa, n) { rep(bbb, m) cout << a[aaa][bbb]; cout << endl; }
inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<‘0‘||c>‘9‘; c=getchar()) if(c==‘-‘) k=-1; for(; c>=‘0‘&&c<=‘9‘; c=getchar()) r=r*10+c-‘0‘; return k*r; }
inline const int max(const int &a, const int &b) { return a>b?a:b; }
inline const int min(const int &a, const int &b) { return a<b?a:b; }

const int N=105;
int a[N], n, p, q;

int main() {
	read(n);
	read(p); for1(i, 1, p) a[getint()]=1;
	read(q); for1(i, 1, q) a[getint()]=1;
	for1(i, 1, n) if(!a[i]) { puts("Oh, my keyboard!"); return 0; }
	puts("I become the guy.");
	return 0;
}

B.Chat Online

题意:给你p个闭区间和q个闭区间,然后给你l和r,让你求有多少个在l-r的时间满足 将q个区间的前后加上这个时间,与p个区间有交。

枚举l~r,然后用前缀和搞搞就行了

#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)
#define for1(i,a,n) for(int i=(a);i<=(n);++i)
#define for2(i,a,n) for(int i=(a);i<(n);++i)
#define for3(i,a,n) for(int i=(a);i>=(n);--i)
#define for4(i,a,n) for(int i=(a);i>(n);--i)
#define CC(i,a) memset(i,a,sizeof(i))
#define read(a) a=getint()
#define print(a) printf("%d", a)
#define dbg(x) cout << #x << " = " << x << endl
#define printarr2(a, b, c) for1(t, 1, b) { for1(u, 1, c) cout << a[t][u]; cout << endl; }
#define printarr1(a, b) for1(t, 0, b) cout << a[t] << ‘ ‘; cout << endl
inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<‘0‘||c>‘9‘; c=getchar()) if(c==‘-‘) k=-1; for(; c>=‘0‘&&c<=‘9‘; c=getchar()) r=r*10+c-‘0‘; return k*r; }
inline const int max(const int &a, const int &b) { return a>b?a:b; }
inline const int min(const int &a, const int &b) { return a<b?a:b; }

const int N=1005;
struct dat { int x, y; }a[N], b[N];
int p, q, l, r, ans, vis[N+N], mx;

int main() {
	read(p); read(q); read(l); read(r);
	for1(i, 1, p) read(a[i].x), read(a[i].y), mx=max(mx, a[i].y);
	for1(i, 1, q) read(b[i].x), read(b[i].y), mx=max(mx, b[i].y);
	for1(i, l, r) {
		CC(vis, 0);
		for1(j, 1, p) ++vis[a[j].x], --vis[a[j].y+1];
		for1(j, 1, q) ++vis[b[j].x+i], --vis[b[j].y+1+i];
		int sum=0;
		for1(k, 0, mx) {
			sum+=vis[k];
			if(sum>1) {  ++ans; break; }
		}
	}
	print(ans);
	return 0;
}

C.24 Game

题意:给你n个数,分别为1~n,让你通过每次+-×两个数,然后加入到原集合中,最后剩一个数为24。。并且输出一个可行方案。。

到后边才发现。。。。只要会做1234或12345的24即可。。。后边的那些全部可以变成0或者变成1.。。。

我是写变成1的,,然后有个地方没特判,喜闻乐见被fst了。。

(我还去hack别人。。。sad。。自己的都fst了。。

#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <iostream>
#include <algorithm>
#include <queue>
using namespace std;
#define rep(i, n) for(int i=0; i<(n); ++i)
#define for1(i,a,n) for(int i=(a);i<=(n);++i)
#define for2(i,a,n) for(int i=(a);i<(n);++i)
#define for3(i,a,n) for(int i=(a);i>=(n);--i)
#define for4(i,a,n) for(int i=(a);i>(n);--i)
#define CC(i,a) memset(i,a,sizeof(i))
#define read(a) a=getint()
#define print(a) printf("%d", a)
#define dbg(x) cout << #x << " = " << x << endl
#define printarr2(a, b, c) for1(i, 1, b) { for1(j, 1, c) cout << a[i][j]; cout << endl; }
#define printarr1(a, b) for1(i, 1, b) cout << a[i]; cout << endl
inline const int getint() { int r=0, k=1; char c=getchar(); for(; c<‘0‘||c>‘9‘; c=getchar()) if(c==‘-‘) k=-1; for(; c>=‘0‘&&c<=‘9‘; c=getchar()) r=r*10+c-‘0‘; return k*r; }
inline const int max(const int &a, const int &b) { return a>b?a:b; }
inline const int min(const int &a, const int &b) { return a<b?a:b; }

int n, beg=5, cnt, tot, ck;
int main() {
	read(n);
	if(n<4) { puts("NO"); return 0; }
	puts("YES");
	if(n&1) beg=6;
	for(int i=beg; i<=n; i+=2) {
		printf("%d - %d = 1\n", i+1, i);
		++cnt;
	}
	tot+=cnt;
	int t=cnt/2; bool flag=cnt&1; cnt=0;
	for1(i, 1, t) printf("1 - 1 = 0\n"), ++cnt;
	tot+=cnt;
	if(flag) printf("1 * 1 = 1\n"), ++tot;
	ck=tot;
	for1(i, beg, n-tot-1) printf("0 + 0 = 0\n"), ++ck;
	if(beg==6) {
		if(n>5 && n-1-ck==5) printf("5 + 0 = 5\n");
		printf("5 * 3 = 15\n");
		printf("2 * 4 = 8\n");
		printf("15 + 8 = 23\n");
		printf("23 + 1 = 24\n");
	}
	else {
		if(n>4 && n-1-ck==4) printf("4 + 0 = 4\n");
		printf("1 + 2 = 3\n");
		printf("3 + 3 = 6\n");
		printf("6 * 4 = 24\n");
	}

	return 0;
}

D.Two Sets

题意:给你n个数,在满足约束的条件下将所有数都分到对应的集合里。判断是否有解。

想到二分图,但是貌似我都不会建图?(没时间了。。。)

然后听说还可以模拟?正解是2sat?。。。orz

E.Hack it!

没看题。。。。

时间: 2024-10-10 00:40:11

Codeforces Round #268 (Div. 2) (被屠记)的相关文章

Educational Codeforces Round 58 Div. 2 自闭记

明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long char getc(){char c=getchar();while ((c<'A'

Codeforces Round #545 (Div. 2) 掉分记

每次CF后,我的rating下降,掉分让我悲痛欲绝 ——题记 ### 前言 这次 CF 时间可谓是极好的,17:05 开始,时长 2h 30min. 4:40 回到家,开电脑. 在看了一会书后,比赛开始了. ### 正文 首先,第一个掉分的 flag 出现了! 卡,卡,卡! CF 又双叒叕卡了! 1分钟过去了…… 2分钟过去了…… 3分钟过去了…… Dashboard 一直打不开.. 当时间已经接近 17:10 分的时候,我终于打开了 A 题.. 然而,这还并不是我掉分的所有原因. 先迅速浏览了

Codeforces Round #268 (Div. 2)

补题解: E:只会第四种解法:也只看懂了这一种. PS:F[X+10^18]=F[X]+1;F[X]表示X的数字之和; 假设X,F[10^18+X]+F[10^18+X-1]+......F[10^18+1]=F[1]+.....+F[X]+X; 这个应该没问题所以有G[10^18+X]-G[10^18]=G[X]+X; G[X]表示:1-X的数字和的总和: 根据G[10^X]=45*X*10^(X-1);所以G[10^18]=45*18*10^17; 所以G[10^18+X]-G[X]=(G[

Codeforces Round #268 (Div. 1) solution

A.24 Game 题意:给你1, 2, ..., n-1, n 这个序列,每次你可以取出两个数做+/-/*三种操作之一,然后把结果放回到序列中,询问能否是的这个序列最后只剩下一个24. 解法:首先很明显n < 4的时候是无解的.如果n=4,那么1 * 2 * 3 * 4=24,如果n=5,那么(5 - 1 - 2) * 3 * 4 = 24.若n > 5,那么我可以做n - (n - 1) = 1,相当于变成了n-2时候的情况加一个1,那么显然最后让答案乘上这个1即可. 代码: includ

Codeforces Round #268 (Div. 2) 题解

A. I Wanna Be the Guy time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There is a game called "I Wanna Be the Guy", consisting of n levels. Little X and his friend Little Y are addicted

Codeforces Round #268 (Div. 1) 题解

A:24 Game 题意:给一个n,求从1到n通过加减乘除得到24的方法. 题解:不难想到n<4时候肯定是无解的, n=4时候 1+2=3 3+3=6 6*4=24 n=5时候1*5=5 5-2=3 3+3=6 6*4=24 当n>5时候我们可以让n-(n-1)=1 1*1=1 这样就把1~n变成了1~n-2 所以对于任意给定的n,我们把(5~n)这段的数相邻的相减变成1最终转换成用1~4或者1~5构造答案即可. 1 #include <cstdio> 2 3 #include &

Codeforces Round #522 Div. 1 没打记

开场被A劝退,写了得有50min于是不敢交了.unrated了喜闻乐见. A:瞎猜都能猜到如果要走到那条直线上,进入直线的点横坐标或纵坐标与起点相同,离开直线的点横坐标或纵坐标与终点相同,证明脑补一下比较显然.看错题以为到直线上的那个点必须是整点,于是搞了半天exgcd.然而就算这样也不至于写这么长时间啊根本不知道自己在干啥. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib&

Codeforces Round #545 Div. 1自闭记

A:求出该行该列各有多少个比其小的取max,该行该列各有多少个比其大的取max,加起来即可. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<algorithm> using namespace std; #define ll long long #define N 1010 char ge

Codeforces Round #535 (Div. 3)小上分记

Codeforces Round #535 (Div. 3)小上分记 前言 被拉去买新年衣服了,导致半小时后才进场. 虽然做了4道题,但是rating还是涨得不多. 用predictor看了rating变化后心灰意冷,不看E题了. A ...800的难度. B 本来还在想要不要用什么STL.后来发现直接用桶就行了.然后就可以水过了. C 题意差点理解不了. 就6种情况都去考虑一下,找最小代价的即可.不要考虑少了. 每次都是\(O(n)\)的,所以能搞. D 贪心地换字母即可. E 坑.待填. 原