A. Minimum Integer

  1. 如果\(d < l\),则\(d\)满足条件
  2. 否则,输出\(d * (r / d + 1)\)即可。
#include <cstdio>
#include <iostream>
using namespace std;
int main(){
int T; scanf("%d", &T);
while(T--){
int l, r, d; scanf("%d%d%d", &l, &r, &d);
if(d < l) printf("%d\n", d);
else printf("%d\n", d * (r / d + 1));
}
return 0;
}

B. Accordion

找到头尾的\([:\)和\(:]\),然后统计中间有几个\(|\)即可。

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
const int N = 500010;
int n;
char s[N];
int main(){
scanf("%s", s + 1);
n = strlen(s + 1);
int l = 1, r = n, cnt = 0;
while(l <= n && s[l] != '[') l++;
while(r && s[r] != ']') r--;
while(l <= n && s[l] != ':') l++;
while(r && s[r] != ':') r--;
if(l >= r) puts("-1");
else{
for(int i = l; i <= r; i++)
if(s[i] == '|') cnt++;
printf("%d\n", 4 + cnt);
} return 0;
}

C. Division and Union

发现可以竖着一条线将所有线分开成两部分,则两边任意选都可以。那么我们就可以找到这个条线。把线段按左端点排序,每次如果有交集就合并,没有交集,我们就找到了一个"断点"。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
typedef pair<int, int> PII;
const int N = 100010;
int n, l[N], r[N];
PII a[N];
int main(){
int T; scanf("%d", &T);
while(T--){
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d%d", l + i, r + i);
a[i].first = l[i];
a[i].second = r[i];
}
sort(a + 1, a + 1 + n);
int rr = a[1].second, loc = 0;
for(int i = 2; i <= n; i++){
if(a[i].first <= rr)
rr = max(rr, a[i].second);
else { loc = rr; break; }
}
if(!loc) printf("-1");
else for(int i = 1; i <= n; i++)
if(r[i] <= rr) printf("1 ");
else printf("2 ");
puts("");
}
return 0;
}

D. GCD Counting

树形\(dp\),\(100000\)以内的每个数因子不超过\(256\)个(最多\(2 ^ 3 * 3 * 5 * 7 * 9 * 13 * 19 > 100000\))

首先把每个读入的权值质因数分解,两个数必须有质因子\(gcd\)才不会$ = 1\(。存在一条边\)(u, v)\(,若\)u\(和\)v$之间有相同的质因子则可以合并,但注意下一次合并必须也有这个质因子...

所以设计\(f[i][j]\)为\(i\)个点为根节点,以第\(j\)个质因子为保障的最大长度。更新显然,如果遇到新的更新,答案可以更新,现在的 + 可以更新的。

所以... 虽然看似会炸掉,但是还是卡过了...

#include <cstdio>
#include <iostream>
#include <vector>
using namespace std;
const int N = 200010;
int n, a[N], ans = 1;
vector<int> G[N], p[N], f[N];
bool success = true;
void dfs(int u, int last){
for(int i = 0; i < G[u].size(); i++){
int v = G[u][i];
if(v == last) continue;
dfs(v, u);
for(int j = 0; j < p[u].size(); j++){
for(int k = 0; k < p[v].size(); k++){
if(p[u][j] == p[v][k]){
ans = max(ans, f[u][j] + f[v][k]);
f[u][j] = max(f[u][j], f[v][k] + 1);
}
}
}
}
}
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i++) {
scanf("%d", a + i);
if(a[i] != 1) success = false;
int x = a[i];
for(int j = 2; j * j <= a[i]; j++){
if(x % j == 0){
p[i].push_back(j);
f[i].push_back(1);
while(x % j == 0) x /= j;
}
}
if(x > 1) p[i].push_back(x), f[i].push_back(1); }
for(int i = 1; i < n; i++){
int u, v; scanf("%d%d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
if(success) puts("0");
else{
dfs(1, 0);
printf("%d", ans);
}
return 0;
}

E. Polycarp's New Job

两者都符合交换律,所以我们交换使得:

让\(x <= y\),\(h <= w\)。

维护\(x\)和\(y\)的最大值,\(max\_x\)和\(max\_y\)

检查$max_x <= h $ \(\&\&\) \(max\_y <= w\)即可。

显然,如果符合$max_y <= h $ \(\&\&\) \(max\_x <= w\),那么前者显然必然成立:

如果不符合,前者也有可能成立。

#include <cstdio>
#include <iostream>
using namespace std;
const int N = 500010;
int n, a = 0, b = 0;
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i++){
char ch; cin >> ch;
if(ch == '+'){
int x, y; scanf("%d%d", &x, &y);
if(x > y) swap(x, y);
a = max(a, x);
b = max(b, y);
}else{
int h, w; scanf("%d%d", &h, &w);
if(h > w) swap(h, w);
if(a <= h && b <= w) puts("YES");
else puts("NO");
}
}
return 0;
}

Codeforces Edu Round 58 A-E的更多相关文章

  1. Codeforces Educational round 58

    Ediv2 58 随手AK.jpg D 裸的虚树,在这里就不写了 E 傻逼贪心?这个题过的比$B$都多.jpg #include <cstdio> #include <algorit ...

  2. Educational Codeforces Round 58 (Rated for Div. 2) 题解

    Educational Codeforces Round 58 (Rated for Div. 2)  题目总链接:https://codeforces.com/contest/1101 A. Min ...

  3. Codeforces Beta Round #54 (Div. 2)

    Codeforces Beta Round #54 (Div. 2) http://codeforces.com/contest/58 A 找子序列 #include<bits/stdc++.h ...

  4. Codeforces Beta Round #80 (Div. 2 Only)【ABCD】

    Codeforces Beta Round #80 (Div. 2 Only) A Blackjack1 题意 一共52张扑克,A代表1或者11,2-10表示自己的数字,其他都表示10 现在你已经有一 ...

  5. Codeforces Beta Round #62 题解【ABCD】

    Codeforces Beta Round #62 A Irrational problem 题意 f(x) = x mod p1 mod p2 mod p3 mod p4 问你[a,b]中有多少个数 ...

  6. Codeforces Beta Round #83 (Div. 1 Only)题解【ABCD】

    Codeforces Beta Round #83 (Div. 1 Only) A. Dorm Water Supply 题意 给你一个n点m边的图,保证每个点的入度和出度最多为1 如果这个点入度为0 ...

  7. Codeforces Beta Round #13 C. Sequence (DP)

    题目大意 给一个数列,长度不超过 5000,每次可以将其中的一个数加 1 或者减 1,问,最少需要多少次操作,才能使得这个数列单调不降 数列中每个数为 -109-109 中的一个数 做法分析 先这样考 ...

  8. CodeForces Global Round 1

    CodeForces Global Round 1 CF新的比赛呢(虽然没啥区别)!这种报名的人多的比赛涨分是真的快.... 所以就写下题解吧. A. Parity 太简单了,随便模拟一下就完了. B ...

  9. Codeforces Global Round 1 - D. Jongmah(动态规划)

    Problem   Codeforces Global Round 1 - D. Jongmah Time Limit: 3000 mSec Problem Description Input Out ...

随机推荐

  1. linux netfilter 五个钩子点

    参考http://www.linuxtcpipstack.com/685.html#NF_INET_PRE_ROUTING https://opengers.github.io/openstack/o ...

  2. Python_进程process 与 线程thread

    进程process  与 线程thread 的区别 各个进程独立使用内存空间,(默认)不可互相访问,线程共享内存 进程的子进程是复制一份父进程,线程没有

  3. Java编译程序和运行过程详解

    java整个编译以及运行的过程相当繁琐,我就举一个简单的例子说明: 编译原理简单过程:词法分析 --> 语法分析 --> 语义分析和中间代码生成 --> 优化 --> 目标代码 ...

  4. 【Kubernetes学习笔记】-服务访问之 IP & Port & Endpoint 辨析

    目录 不同类型的IP Pod IP Cluster IP 不同类型的Port port nodePort TargetPort containerPort hostPort Endpoint Endp ...

  5. springboot项目启动报错Communications link failure

    环境情况,MySQL版本如下: 报错情况如下(看上去是和数据库有关): com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communi ...

  6. 主板上来了一个新邻居,CPU慌了!

    大家好,我是CPU一号车间的那个阿Q,好久不见,我想死你们了- 不认识我的请去这里这里补补课:完了!CPU一味求快出事儿了! 主板上的新邻居 "阿Q,快别忙了,马上去一趟会议室,领导有重要事 ...

  7. Mac系统应该用什么软件进行清理?

    作为一枚资深的Windows系统使用者,小编刚刚转向Mac系统的怀抱时,各种不适应,Windows系统中普遍使用的360清理软件目前暂时没有Mac版本的,这就让小编很是头疼了,大家的Mac都是用的什么 ...

  8. Mac电脑疑似中毒该怎么应对处理

    Mac电脑作为相对封闭的一个系统,它会中毒吗?如果有一天Mac电脑产生了疑似中毒或者遭到恶意不知名攻击的现象,那又应该如何从容应对呢?这些问题都是小编使用Mac系统一段时间后产生的疑惑,通过一番搜索研 ...

  9. Oracle表空间和他的数据文件

    //以myspace为例 来源于Oracle 11g数据库应用简明教程 清华出版社 /*创建表空间*/ CREATE TABLESPACE myspace DATAFILE'E:\develop\or ...

  10. Meetings S 题解

    题目描述 题目链接 有两个牛棚位于一维数轴上的点 \(0\) 和 \(L\) 处.同时有 \(N\) 头奶牛位于数轴上不同的位置(将牛棚和奶牛看作点).每头奶牛 \(i\) 初始时位于某个位置 \(x ...