比赛情况

我太菜了

  • 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. git 新建项目提交本地项目代码

    git init git remote add origin ssh://git@42.123.127.93:10022/tyshawn/sdap1.git git add . git commit ...

  2. Oracle 归档日志管理

    一.Oracle日志介绍 1.Oracle日志分类 分三大类: Alert log files--警报日志,Trace files--跟踪日志(用户和进程)和            redo log ...

  3. 【VS开发】【图像处理】双边滤波器bilateral filter

    目录(?)[-] 简介 原理 代码实现 1 Spatial Weight 2 Similarity Weight 3 Color Filtering 在SSAO中的使用 1. 简介 图像平滑是一个重要 ...

  4. Python_Onlineh_Hmework(基础篇,持续更新中...)

    1 递归 1.1 定义一个函数,求一个数的阶乘 def func(x): if x == 2: return 2 else: return x*func(x-1) a = func(4) print( ...

  5. Spring Gateway从入门到精通

    1.Spring Gateway过滤器详解 2.Spring Gateway之Predicate详解 3.spring cloud gateway自定义过滤器 4.Spring Cloud Gatew ...

  6. win10的64位操作系统安装Oracle、Sql数据库遇到的问题及解决

    因为工作需要,在重新安装操作系统(Win10)不久的电脑上安装Oracle的客户端(win32_11g)和PLSQL,这个本来就比较复杂,下面记录一下遇到的问题及解决方法. 我有储备多个Oracle的 ...

  7. numpy使用数组进行数据处理

    numpy使用数组进行数据处理 meshgrid函数 理解: 二维坐标系中,X轴可以取三个值1,2,3, Y轴可以取三个值7,8, 请问可以获得多少个点的坐标? 显而易见是6个: (1,7)(2,7) ...

  8. 洛谷 P1593 因子和 题解

    题面 这道题在数学方面没什么难度: 对于每一个正整数n: 质因数分解后可以写成n=a1^k1a2^k2……*ai^ki 所求的数的因数和f(n)就等于f(n)=(1+a1+a1^2+……+a1^k1) ...

  9. POJ 2955 Brackets 区间DP 入门

    dp[i][j]代表i->j区间内最多的合法括号数 if(s[i]=='('&&s[j]==')'||s[i]=='['&&s[j]==']') dp[i][j] ...

  10. css精灵图使用

    1. 精灵技术的使用 CSS 精灵其实是将网页中的一些背景图像整合到一张大图中(精灵图),然而,各个网页元素通常只需要精灵图中不同位置的某个小图,要想精确定位到精灵图中的某个小图,就需要使用CSS的b ...