比赛情况

我太菜了

  • A题 加减乘除不会

  • B题 二元一次方程不会

  • C题 gcd不会

  • 就会一个D题二分答案大水题,本来想比赛最后一分钟来一个绝杀,结果 Wrong Answer on test 4

比赛总结

  • 问题1:有点读不懂题目。

解决方法:读题目后如果发现没有看懂,再多读几遍样例,看看样例的解释,大概就懂了。(如果再读不懂就得锻炼自己的阅读理解了)

  • 问题2:花了点时间想了个假题。

解决方法:其实就是没有看懂题目,和问题1一样的方法去解决。

  • 问题3:卡在一个题动不了。导致后面会做的题没去做。

解决方法:因为有些知识点确实不太擅长,比如我在C题想了20min假题,又想了30min真题(雾,总觉得没有做出C就做D有些丢脸似的,其实大可以在C想不出的情况下看看D,万一D会做呢?如果不会D,就说明自己的水平有限了呗qwq

所以赶紧补题啊!

A

这题的意思我读了将近15min,,

给你n组询问,每次给你两个数a,b,问你把b分成a个数,使这a个数的平方和最小。

贪心:尽量选 b/a 左右的数,具体是选 (b%a)个(b/a+1),(a-(b%a))个(b/a)

Talk is cheap. Show me the code.

#include<bits/stdc++.h>
#define int long long
using namespace std;
inline int read() {
int x=0,f=1; char ch=getchar();
while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
int n;
signed main()
{
int n = read();
while(n--) {
int c = read(), sum = read();
int x = sum/c, y = sum%c;
printf("%lld\n",(x*x)*(c-y)+((x+1)*(x+1))*y);
}
return 0;
}

B

考虑现在已经是最终状态了,也就是 => 0 0

现在推回最初状态。

我们把两个数分别写成 2A+B , 2C+D

那他们的最终状态就是 2(0)+(0) , 2(0)+(0)

我们假设做一次[逆]运算1, 他们就会变成 => 2(0)+(0+x),2(0+x)+(0)

我们假设再做一次[逆]运算2(设这里为y),他们就会变成 => 2(0+y)+(0+x) , 2(0+x)+(0+y)

这里我们发现 A = D, B = C ,于是这两个数就可写成 a=2A+B, b=2B+A

二元一次方程,会解吧。

判断一下这个解A,B是否都为正整数就好了?

Talk is cheap. Show me the code.

#include<bits/stdc++.h>
using namespace std;
inline int read() {
int x=0,f=1; char ch=getchar();
while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
int main()
{
int T = read();
while(T--) {
int a = read(), b = read();
int A = (2*a-b)%3, B = (2*b-a)%3;
if(A==0 && B==0 && (2*a-b)>=0 && (2*b-a)>=0) puts("YES");
else puts("NO");
}
return 0;
}

C

裴蜀定理?

D

二分答案,看得出吧?

我是看了别人的代码才懂的。 二分一个最小的能力值,可以通过这个关卡。最后看一下有多少人的能力值大于这能力值。然后就是二分check这里,先把陷阱按L从小到大排好序。枚举每个陷阱。记录现在人最远的距离mx,如果这个陷阱没有被取消并且能力值过不去,mx可以先走到 L-1 这里来(并且是带着队伍走)这里只计算单次的时间(如果mx>L-1,当然就不这么走,相当于队伍还在后面,mx已经在前面了),然后mx走到R,这里计算3次的时间,去->回->去,相当于现在在mx,之后走到mxR,mx->(自己)mxR->(自己)mx->mxR(带队 )

Talk is cheap. Show me the code.

#include<bits/stdc++.h>
#define INF 0x3f3f3f3f
using namespace std;
inline int read() {
int x=0,f=1; char ch=getchar();
while(ch<'0' || ch>'9') { if(ch=='-') f=-1; ch=getchar(); }
while(ch>='0'&&ch<='9') { x=(x<<3)+(x<<1)+(ch^48); ch=getchar(); }
return x * f;
}
const int N = 2e5+7;
int m,n,K,t;
int a[N];
struct Node {
int L,R,d;
bool operator < (const Node &el) const {
return L < el.L;
}
}trap[N];
inline bool check(int c) {
int tim = n+1, mx = 0;
for(int i=1;i<=K;++i) {
if(trap[i].d<=c || trap[i].R<=mx) continue;
mx = max(mx, trap[i].L-1);
tim += (trap[i].R-mx)*2;
mx = trap[i].R;
}
return tim <= t;
}
int main()
{
m = read(), n = read(), K = read(), t = read();
for(int i=1;i<=m;++i) a[i] = read();
for(int i=1,L,R,d;i<=K;++i) {
L = read(), R = read(), d = read();
trap[i] = (Node)<%L,R,d%>;
}
sort(trap+1, trap+1+K);
int l = 0, r = N, mid, ans = INF; //二分出最小的能力值,能力值越小,可以去的人就越多
while(l <= r) {
mid = (l+r)>>1;
if(check(mid)) {
ans = mid;
r = mid - 1;
} else l = mid + 1;
}
int sum = 0;
for(int i=1;i<=m;++i)
if(a[i] >= ans) ++sum;
printf("%d\n",sum);
return 0;
}

Educational Codeforces Round 77 比赛总结的更多相关文章

  1. 【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)

    比赛传送门 这场题目前三题看得挺舒服的,没有臃肿的题目,对于我这种英语渣渣就非常友好,但因为太急了,wa了两发A后才意识到用模拟(可以删了,博主真的是个菜鸟),结果导致心态大崩 ---- 而且也跟最近 ...

  2. Educational Codeforces Round 77 (Rated for Div. 2) D A game with traps

    题意:x正轴上有着一个陷阱的位置,开关和灵敏度,如果一个士兵灵敏度输给陷阱,他是过不去这个陷阱的幸运的是,你可以先过去把开关给关了,没错你是不怕陷阱的接下来呢你有操作,你移动一个,耗费一秒而你的团队需 ...

  3. Educational Codeforces Round 77 (Rated for Div. 2)

    A: 尽可能平均然后剩下的平摊 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ...

  4. Codeforce |Educational Codeforces Round 77 (Rated for Div. 2) B. Obtain Two Zeroes

    B. Obtain Two Zeroes time limit per test 1 second memory limit per test 256 megabytes input standard ...

  5. Educational Codeforces Round 77 (Rated for Div. 2)D(二分+贪心)

    这题二分下界是0,所以二分写法和以往略有不同,注意考虑所有区间,并且不要死循环... #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...

  6. Educational Codeforces Round 77 (Rated for Div. 2) - D. A Game with Traps(二分)

    题意:$m$个士兵,每个士兵都有一个灵敏度$a[i]$,起点为$0$,终点为$n + 1$,在路上有$k$个陷阱,每个陷阱有三个属性$l[i],r[i],d[i]$,$l[i]$表示陷阱的位置,如果你 ...

  7. Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence

    C. Infinite Fence 题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色, 连续的k个相同的颜色则不能完成任务,能完成任务则输出OBE ...

  8. Educational Codeforces Round 40千名记

    人生第二场codeforces.然而遇上了Education场这种东西 Educational Codeforces Round 40 下午先在家里睡了波觉,起来离开场还有10分钟. 但是突然想起来还 ...

  9. Educational Codeforces Round 26

    Educational Codeforces Round 26 困到不行的场,等着中午显示器到了就可以美滋滋了 A. Text Volume time limit per test 1 second ...

随机推荐

  1. chrome浏览器爬虫WebDriverException解决采用python + selenium + chrome + headless模式

    WebDriverException: Message: unknown error: Chrome failed to start: crashed 第一种:如果出现下面情况: chrome浏览器有 ...

  2. flutter Waiting for another flutter command to release the startup lock…

    flutter安装完成后执行flutter doctor ,一直提示如下: Waiting for another flutter command to release the startup loc ...

  3. 阶段3 2.Spring_09.JdbcTemplate的基本使用_2 JdbcTemplate的概述和入门

    先看这张图 1.spring中的JdbcTemplate     JdbcTemplate的作用:         它就是用于和数据库交互的,实现对表的CRUD操作     如何创建该对象:      ...

  4. Python学习笔记:(十二)输入输出

    一.格式化输出 1.str.format()函数,格式化输出值 2.将输出值转变为字符串,可以使用repr()和str() str()函数将返回一个易读的表达式形式: repr()返回一个解释器易读的 ...

  5. <数据结构系列3>队列的实现与变形(循环队列)

    数据结构第三课了,今天我们再介绍一种很常见的线性表——队列 就像它的名字,队列这种数据结构就如同生活中的排队一样,队首出队,队尾进队.以下一段是百度百科中对队列的解释: 队列是一种特殊的线性表,特殊之 ...

  6. Fuzzy logic

    Fuzzy logic is used in artificial intelligence. In fuzzy logic, a proposition has a truth value that ...

  7. <<C++ Primer>> 第二章 变量和基本类型 术语表

    术语表 第 2 章 变量和基本类型 地址(address): 是一个数字,根据它可以找到内存中的一个字节    别名生命(alias declaration): 为另一种类型定义一个同义词:使用 &q ...

  8. c语言中宏定义#和 ##的作用:

    转载:http://www.cnblogs.com/cyttina/archive/2013/05/11/3072969.html 看了这篇文章后了解了,但是文章中的例子比较特别,我在这里加个注释好了 ...

  9. Python 入门之 内置模块 -- random模块

    Python 入门之 内置模块 -- random模块 1.random模块 import random # random -- 随机数 (1)选择1-50之间随机的整数 print(random.r ...

  10. 如何将Numpy加速700倍?用 CuPy 呀

    如何将Numpy加速700倍?用 CuPy 呀 作为 Python 语言的一个扩展程序库,Numpy 支持大量的维度数组与矩阵运算,为 Python 社区带来了很多帮助.借助于 Numpy,数据科学家 ...