Codeforces Round #268 (Div. 2) (被屠记)
c被fst了。。。。。。。。。。。。。。。。
然后掉到600+.。。。
然后。。。估计得绿名了。。
sad
题意:让你判断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;
}
题意:给你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
被吓cry。。。。。。。。这题用并查集。。
开两个并查集然后模拟加入,最后判断A和B集是否重合即可。。
#include <cstdio>
#include <cstring>
#include <cmath>
#include <string>
#include <iostream>
#include <algorithm>
#include <queue>
#include <map>
#include <set>
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=100015;
map<int, int> mp;
set<int> s;
int x[N], n, a, b, p[N], tot;
const int ifind(const int &x) { return x==p[x]?x:p[x]=ifind(p[x]); } int main() {
read(n); read(a); read(b);
for1(i, 1, n) {
read(x[i]);
s.insert(x[i]);
mp[x[i]]=++tot;
}
for1(i, 1, n+2) p[i]=i;
for1(i, 1, n) {
if(s.count(a-x[i])) {
p[ifind(mp[a-x[i]])]=p[ifind(mp[x[i]])];
}
else p[ifind(mp[x[i]])]=p[ifind(n+1)];
if(s.count(b-x[i])) {
p[ifind(mp[b-x[i]])]=p[ifind(mp[x[i]])];
}
else p[ifind(mp[x[i]])]=p[ifind(n+2)];
}
if(ifind(n+1)==ifind(n+2)) {
puts("NO"); return 0;
}
puts("YES");
for1(i, 1, n) printf("%d ", ifind(mp[x[i]])==ifind(n+1));
return 0;
}
E.Hack it!
没看题。。。。
Codeforces Round #268 (Div. 2) (被屠记)的更多相关文章
- Codeforces Round #268 (Div. 2) ABCD
CF469 Codeforces Round #268 (Div. 2) http://codeforces.com/contest/469 开学了,时间少,水题就不写题解了,不水的题也不写这么详细了 ...
- Codeforces Round #268 (Div. 1) B. Two Sets 暴力
B. Two Sets Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/468/problem/B ...
- Codeforces Round #268 (Div. 1) A. 24 Game 构造
A. 24 Game Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/468/problem/A D ...
- 贪心+bfs 或者 并查集 Codeforces Round #268 (Div. 2) D
http://codeforces.com/contest/469/problem/D 题目大意: 给你一个长度为n数组,给你两个集合A.B,再给你两个数字a和b.A集合中的每一个数字x都也能在a集合 ...
- Educational Codeforces Round 58 Div. 2 自闭记
明明多个几秒就能场上AK了.自闭. A:签到. #include<iostream> #include<cstdio> #include<cmath> #inclu ...
- 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^1 ...
- Codeforces Round#402(Div.1)掉分记+题解
哎,今天第一次打div1 感觉头脑很不清醒... 看到第一题就蒙了,想了好久,怎么乱dp,倒过来插之类的...突然发现不就是一道sb二分吗.....sb二分看了二十分钟........ 然后第二题看了 ...
- Codeforces Round #554 (Div. 2)自闭记
A 签到 #include<bits/stdc++.h> using namespace std; ],t[],ans; int main() { scanf("%d%d&quo ...
- Codeforces Round #545 Div. 1自闭记
A:求出该行该列各有多少个比其小的取max,该行该列各有多少个比其大的取max,加起来即可. #include<iostream> #include<cstdio> #incl ...
随机推荐
- 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何在初始化的时候写入参数
最常见的是定义一个全局变量,然后跟对应的变量绑定,比如我定义了一个SINT型的变量ControlWord 数值是8,定义好之后编译一下,可以发现PLC程序中或多出来这个变量(MAIN.ControlW ...
- 解决Xcode 6 编译Cocos2d-x iOS项目失败
在Xcode 6 beta里编译Cocos2d-x iOS项目时可能会失败,提示如下错误: Undefined symbols for architecture i386: "_fwrite ...
- TCP 的那些事儿(上) SACK
http://blog.csdn.net/woxiaozhi/article/details/27328557 文章太好了,转载过啦 这篇文章分为上下两篇 确实不错 所以存在这里收藏 TCP是一个 ...
- (四)Oracle学习笔记—— 常见函数
1. 字符串类型及函数 字符类型分 种,char(n) .varchar(n).varchar2(n) : char(n)固定长度字符串,假如长度不足 n,右边空格补齐: varchar(n)可变长度 ...
- C++之声明与定义的区别
直接举例,在C++中,声明与定义的区别如下: extern int a;//若有extern关键字,则只是声明 int b;//若没有extern关键字,则为声明+定义 int a;//若之前已经声明 ...
- 电子商务(电销)平台中订单模块(Order)数据库设计明细(转载)
电子商务(电销)平台中订单模块(Order)数据库设计明细 以下是自己在电子商务系统设计中的订单模块的数据库设计经验总结,而今发表出来一起分享,如有不当,欢迎跟帖讨论~ 订单表 (order)|-- ...
- 浅析C#中 ConcurrentDictionary的实现
简单画了一张图 (灵魂画手 →_→) 如图 ConcurrentDictionary 其中有个tables 对象主要存储,而这个 tables 是一个 很多区块的 数组 ,每个区块 又是一个node的 ...
- TI博客文章-4-20mA电流环路发送器入门
TI博客文章-4-20mA电流环路发送器入门http://bbs.21ic.com/forum.php?mod=viewthread&tid=1610834&fromuid=10995 ...
- php的instanceof和判断闭包Closure
类型运算符 instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,在此之前用 is_a(),但是后来 is_a() 被废弃 <?php class MyClass ...
- atitit.提升研发效率的利器---重型框架与类库的区别与设计原则
atitit.提升研发效率的利器---重型框架与类库的区别与设计原则 1. 框架的意义---设计的复用 1 1.1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 2.1 ...