A. Equator(模拟)

找权值的中位数,直接模拟。。

代码写的好丑qwq。。

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN = 1e6 + ;
inline int read() {
char c = getchar(); int x = , f = ;
while(c < '' || c > '') {if(c == '-') f = -; c = getchar();}
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * f;
}
int N;
int a[MAXN];
main() {
#ifdef WIN32
// freopen("a.in", "r", stdin);
#endif
int N = read(), sum = ;
for(int i = ; i <= N; i++) a[i] = read(), sum += a[i];
int now = ;
for(int i = ; i <= N; i++) {
now += a[i];
if(!(sum & )) {
if(now >= sum / ) {
printf("%d", i); return ;
}
} else {
if(now > sum / ) {
printf("%d", i); return ;
}
}
}
}

A

B. Students in Railway Carriage(贪心)

直接贪心放,如果是偶数的话肯定是两种各放一半

如果是奇数的话,应该在都放一半的基础上,把多的放在最后一个

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int MAXN = 1e6 + ;
inline int read() {
char c = getchar(); int x = , f = ;
while(c < '' || c > '') {if(c == '-') f = -; c = getchar();}
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * f;
}
int N;
char s[MAXN];
main() {
#ifdef WIN32
// freopen("a.in", "r", stdin);
#endif
int N = read(), A = read(), B = read();
if(A < B) swap(A, B);
scanf("%s", s + );
int last = ;
int ans = ;
s[N + ] = '*';
for(int i = ; i <= N + ; i++) {
if(s[i] == '*') {
int len = i - last - ;
ans += min(len / , A) + min(len / , B);
A -= min(len / , A); B -= min(len / , B);
if((len & ) && A > ) A--, ans++;
if(A < B) swap(A, B);
last = i;
}
} printf("%d", ans);
}

B

C. Make a Square(数论,暴力)

首先把所有平方数预处理出来

然后对于输出的数的各个位分解出来,

枚举所有的平方数,算出最少需要删几个

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
const int MAXN = 1e6 + ;
inline int read() {
char c = getchar(); int x = , f = ;
while(c < '' || c > '') {if(c == '-') f = -; c = getchar();}
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * f;
}
int po[MAXN], tot = , N, P[MAXN], Pnum = ;
int check(int val) {
int times = ;
for(int i = ; i <= Pnum; i++) {
if(P[i] == val % ) {
val /= , times++;
}
if(val == ) {
return Pnum - times;
}
}
if(val != ) return -;
else return Pnum - times;
}
main() {
#ifdef WIN32
// freopen("a.in", "r", stdin);
#endif
for(int i = ; ; i++) {
po[++tot] = i * i;
if(po[tot] > * 1e9) break;
}
N = read();
int x = N;
while(x) P[++Pnum] = x % , x /= ;
int ans = 1e9;
for(int i = ; i <= tot; i++) {
int num = check(po[i]);
if(num != -) ans = min(ans, num);
}
printf("%I64d", ans == 1e9 ? - : ans);
}

C

D. Merge Equals(堆)

用优先队列维护每个数的位置和权值(权值相同的时候位置小的在前面)

然后每次取出前两个,如果相同就合成完再放回去,否则统计答案

#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<queue>
#define int long long
using namespace std;
const int MAXN = 1e6 + ;
inline int read() {
char c = getchar(); int x = , f = ;
while(c < '' || c > '') {if(c == '-') f = -; c = getchar();}
while(c >= '' && c <= '') x = x * + c - '', c = getchar();
return x * f;
}
int N;
struct Node {
int pos, val;
bool operator < (const Node &rhs) const {
return val == rhs.val ? pos > rhs.pos : val > rhs.val;
}
};
priority_queue<Node>q;
int ans[MAXN];
void work() {
while(q.size() >= ) {
Node x = q.top(); q.pop();
Node y = q.top(); q.pop();
if(x.val != y.val) {q.push(y); ans[x.pos] = x.val; continue;}
q.push((Node){y.pos, x.val * });
}
while(q.size() != ) ans[q.top().pos] = q.top().val, q.pop();
}
main() {
#ifdef WIN32
// freopen("a.in", "r", stdin);
#endif
N = read();
for(int i = ; i <= N; i++)
q.push((Node){i, read()});
work();
int num = ;
for(int i = ; i <= N; i++)
if(ans[i] != )
num++;
printf("%I64d\n", num);
for(int i = ; i <= N; i++)
if(ans[i] != )
printf("%I64d ", ans[i]);
}

D

Educational Codeforces Round 42 (Rated for Div. 2)的更多相关文章

  1. Educational Codeforces Round 42 (Rated for Div. 2) E. Byteland, Berland and Disputed Cities

    http://codeforces.com/contest/962/problem/E E. Byteland, Berland and Disputed Cities time limit per ...

  2. Educational Codeforces Round 42 (Rated for Div. 2) D. Merge Equals

    http://codeforces.com/contest/962/problem/D D. Merge Equals time limit per test 2 seconds memory lim ...

  3. Educational Codeforces Round 42 (Rated for Div. 2)F - Simple Cycles Edges

    http://codeforces.com/contest/962/problem/F 求没有被两个及以上的简单环包含的边 解法:双联通求割顶,在bcc中看这是不是一个简单环,是的话把整个bcc的环加 ...

  4. Educational Codeforces Round 42 (Rated for Div. 2) C

    C. Make a Square time limit per test 2 seconds memory limit per test 256 megabytes input standard in ...

  5. Educational Codeforces Round 42 (Rated for Div. 2) B

    B. Students in Railway Carriage time limit per test 2 seconds memory limit per test 256 megabytes in ...

  6. Educational Codeforces Round 42 (Rated for Div. 2) A

    A. Equator time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...

  7. D. Merge Equals(from Educational Codeforces Round 42 (Rated for Div. 2))

    模拟题,运用强大的stl. #include <iostream> #include <map> #include <algorithm> #include < ...

  8. C Make a Square Educational Codeforces Round 42 (Rated for Div. 2) (暴力枚举,字符串匹配)

    C. Make a Square time limit per test2 seconds memory limit per test256 megabytes inputstandard input ...

  9. D Merge Equals Educational Codeforces Round 42 (Rated for Div. 2) (STL )

    D. Merge Equals time limit per test2 seconds memory limit per test256 megabytes inputstandard input ...

随机推荐

  1. MT6753平台一项目不同手机最低亮度存偏差问题分析过程

    现象: MT6753平台一项目不同手机将背光高度调到最低,最低亮度存偏差问题,有一些亮,有一些暗. 现象较明显. 分析过程: 第一天: 和TCL屏天一起验证,有以下结论: 1.TCL和YASSI模组, ...

  2. java虚拟机(一)-java内存区域与内存溢出异常

    1.简述:java虚拟机在执行java程序的过程中,会把他所管理的内存分为以下几个区域, 1.1.程序计数器 1.2.虚拟机栈 1.3.本地方法栈 1.4.java堆 1.5.方法区 如图所示: 2. ...

  3. 淘宝手机rem的如何使用

    1.主要介绍几个移动端常用的单位rem.vw.vh,配合传统的px.百分比.<viewport>标签,兼容适配移动端的各种分辨率的手机端. rm : 这个单位是以父元素为标准来进行计算 , ...

  4. spring mvc参数校验

    一.在SringMVC中使用 使用注解 1.准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口: hibernate-validator-4.2.0.Fina ...

  5. docker run和nsenter

    docker run和nsenter 1,本机运行java -version没有内容, 使用 docker run java java -version就有内容了: 2, docker run -d ...

  6. Android天气预报+百度天气接口

    首先 在准备编敲代码之前有几点准备工作 1首先须要调节Android的DNS地址. (这个我会在末尾提及) http://www.eoeandroid.com/forum.php? mod=viewt ...

  7. Cocos2d坐标系具体解释

    1.笛卡尔坐标系 左手坐标系(Direct3D坐标系),右手坐标系(Direct3D坐标系) 大拇指和食指分别相应x轴和y轴 2.UI坐标系 iOS/Android/Windows SDK中的通用UI ...

  8. 总是有人想在android上直连mysql,是猴子请来的逗比吗?

    总是有人想在android上直连mysql,都是是猴子请来的逗比吗?

  9. VB Socket编程 框架

    [转载]VB Socket编程 框架 (2014-07-15 20:06:28) 转载▼ 标签: 转载   原文地址:VB Socket编程 框架作者:安静的浪花 VB Socket编程(Winsoc ...

  10. Oracle 用户管理(二)

    1    给某人赋予"系统权限"     SQL> grant connect to aobama with admin option     意思是将admin的连接数据库 ...