CodeForces 813A|813B|813C|813D
来源:互联网 发布:阿里云服务器动态ip 编辑:程序博客网 时间:2024/06/06 18:54
813A - The Contest
Pasha参加了一个有n道题的线上比赛。Pasha解决第i个问题需要
输入
第一行只有1个正数
第二行n个正数
第三行一个正数
接下来m行每行描述一个时间片段:
保证这些时间片段没有交集,且按时间顺序给出。
输出
如果Pasha能AK,输出祂最早能AK的时间点。否则输出-1。
样例
样例输入1
23 421 47 9
样例输出1
7
样例输入2
1511 4
样例输出2
-1
样例输入3
1511 5
样例输出3
5
提示
第一个样例中,Pasha先AC第二道题,并立刻提交程序;然后在AC第一道题并在第7s时提交程序。
第二个样例中,Pasha不能在OJ正常工作的时候完成所有的题目。
第三个样例中,Pasha在第一个时间片段最后1s提交了所有的程序。
题解
题解什么的不存在,脸肿.jpg
代码
#include <cstdio>#define FOR(i,j,k) for(i=j;i<=k;++i)int main() { int n, a, b, tot = 0, i; scanf("%d", &n); FOR(i,1,n) scanf("%d", &a), tot += a; scanf("%d", &n); FOR(i,1,n) { scanf("%d%d", &a, &b); if (a <= tot && tot <= b) { printf("%d", tot); goto end; } else if (a > tot) { printf("%d", a); goto end; } } puts("-1");end: return 0;}
813B - The Golden Age
一个不幸运的年份
比如,如果
而连续几年都幸运的年代就被称为黄金时代。
你的任务是写一个程序,找出最长的黄金年代,并且满足不早于第
输入
唯一的一行包含4个正数
输出
输出
样例
样例输入1
2 3 1 10
样例输出1
1
样例输入2
3 5 10 22
样例输出2
8
样例输入3
2 3 3 5
样例输出3
0
提示
第一个样例中,2,3,4,5,7,9,10是不幸运的,所以[1,1],[6,6],[8,8]是黄金年代。
第二个样例中的最长的黄金年代是[15,22]。
题解
容易知道
代码
#include <iostream>#include <algorithm>#define FOR(i,j,k) for(i=j;i<=k;++i)using namespace std;typedef long long ll;const int N = 8192;ll p[N], q[N], year[N];int main() { ll x, y, l, r, i, j, P, Q, Y = 0, ans = 0; p[0] = q[0] = 1; cin>>x>>y>>l>>r; for (P = 0; p[P] <= r / x; ++P) p[P + 1] = p[P] * x; // 防止爆long long for (Q = 0; q[Q] <= r / y; ++Q) q[Q + 1] = q[Q] * y; FOR(i,0,P) FOR(j,0,Q) if (p[i] + q[j] <= r && p[i] + q[j] >= l) year[++Y] = p[i] + q[j]; year[++Y] = l - 1; year[++Y] = r + 1; sort(year + 1, year + 1 + Y); FOR(i,2,Y) ans = max(ans, year[i] - year[i - 1] - 1); cout<<ans; return 0;}
813C - The Tag Game
Alice和Bob在一棵由n个节点组成的树(1为根节点)上玩一个游戏。Alice的棋子一开始在节点1,Bob的棋子一开始在节点
输入格式
第一行2个正数n和x (
接下来的
输出格式
输出游戏总步数(Alice走的步数和Bob走的步数的和)
样例
样例输入1
4 3
1 2
2 3
2 4
样例输出1
4
样例输入2
5 2
1 2
2 3
3 4
2 5
样例输出2
6
题解
一些显然的性质:
1. 无论Bob怎么走,Alice总是沿AB路径走而且不会某一步选择不动
2. Bob不会走回头路(这样做和在某个点停住不动是一个情况)
3. 可以认为Bob只在叶子停住不动(选择不动可以在中途也可以在最后,我们调整到最后)
4. AB间距不会增大(在2的前提下)
5. 一定是Alice最后走,Bob不会最后走(主动投入Alice温暖又邪恶的怀抱???)
因此我们可以想到这样的思路:首先1到x的路径离Alice 1近的路径上一半的点Bob一定到不了,剩下的点Bob不作死都可以到,那么Bob能到的这些点离1最远的就是答案的一半。
话说也就是那些Alice比Bob晚到的点中找,一个道理。
代码
#include <cstdio>#include <algorithm>using namespace std;const int N = 200005, M = 2 * N;#define FOR(i,j,k) for(i=j;i<=k;++i)int n, x, h[N], p[M], v[M], vis[N], edge = 0;int rec1[N], recx[N], path[N], len;void add(int x, int y) { p[++edge] = h[x]; v[edge] = y; h[x] = edge; p[++edge] = h[y]; v[edge] = x; h[y] = edge;}bool dfs(int x, int fa, int dep) { // 先找AB路靠近Alice的那一半的点 path[dep] = x; len = dep; if (x == 1) return true; for (int i = h[x]; i; i = p[i]) if (v[i] != fa && dfs(v[i], x, dep + 1)) return true; return false;}void dfs2(int x, int fa, int dep, int *rec) { rec[x] = dep; for (int i = h[x]; i; i = p[i]) if (v[i] != fa && !vis[v[i]]) dfs2(v[i], x, dep + 1, rec);}int main() { int i, ans = 0, a, b; scanf("%d%d", &n, &x); FOR(i,1,n) rec1[i] = recx[i] = -1; FOR(i,2,n) scanf("%d%d", &a, &b), add(a, b); dfs(x, 0, 1); dfs2(1, 0, 1, rec1); // 算出Alice到各点的距离 FOR(i, len / 2 + 1, len) vis[path[i]] = 1; // 靠近Alice的一半的点Bob不可达 if (!vis[x]) dfs2(x, 0, 1, recx); // 剩下的可达 FOR(i,1,n) if (recx[i] != -1) ans = max(ans, rec1[i]); // Bob可达的点离Alice最远的就是答案 printf("%d", (ans - 1) * 2); // Bob 和 Alice 的距离的两倍 return 0;}
813D - Two Melodies
有一个大序列,挑出2个不相交不为空的子序列,满足相邻两个元素差为1或模7相等。
写一个程序计算最大的满足条件的2个不相交子序列的长度和。
输入
第一行只有一个整数
第二行有n个整数
输出
输出符合条件的两个非空不相交子序列的长度和的最大值。
样例
样例输入1
41 2 4 5
样例输出1
4
样例输入2
662 22 60 61 48 49
样例输出2
5
提示
样例一的子序列为
样例二的子序列为
题解
容易想到用
而且也容易想到,如果a[k]和a[i]满足条件,那么dp[i,j]将用dp[k,j]更新答案,而且可以避免两个集合
- CodeForces 813A|813B|813C|813D
- codeforces 239 (div2) A B C D
- codeforces 208(div2) A+B+C+D
- codeforces 445 A、B、C、D
- codeforces 250 div2 A B C D
- CodeForces 412(A,B,C,D,E)
- Codeforces Round #351 A B C D
- codeforces 723 A,B,C,D
- Codeforces Round #377 A.B.C.D
- codeforces 817 A B C D
- Codeforces Educational Round #18(Codeforces 792 A B C D)
- Codeforces-Educational Codeforces Round 32-(A,B,C,D)
- Codeforces Round #179 (Div. 2)A、B、C、D
- Codeforces Round #186 (Div. 2)A、B、C、D、E
- Codeforces Round #198 (Div. 1)(A,B,C,D)
- Codeforces Round #202 (Div. 2) (A、B、C、D)
- Codeforces Round #211 (Div. 2)(A,B,C,D)
- Codeforces Round #220 (Div. 2)(A,B,C,D)
- obs-studio 断线重连
- linux下PXE和KickStart实现Linux下的无人值守安装
- eclipse下新建jsp页面失败,提示错误。
- 小米5调试出现DELETE_FAILED_INTERNAL_ERROR错误
- CSU 1642 Problem B
- CodeForces 813A|813B|813C|813D
- Linux 下配置静态ip地址
- Java 类加载机制详解
- [Leetcode] 200. Number of Islands 解题报告
- 欢迎使用CSDN-markdown编辑器
- 解决margin-top塌陷的6种方法
- 单链表的练习
- Centos7.2安装CDH5.7.2core steps
- 【Floyd传递闭包】[CODEVS]p1009 产生数