比赛情况

我太菜了

  • 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. [VBA]合并工作簿优化版

    Sub 合并工作簿数据()Dim arrDim i As Integer, j As Integer, x As IntegerDim f As String, m As String, n As S ...

  2. 阶段3 2.Spring_02.程序间耦合_5 编写工厂类和配置文件

    先把dao的实现复制一份到别的地方.然后删除项目里面的AccountDaoImpl这个dao的实现类 删除 service层就开始报错了 这个时候运行直接报错 把文件复制回来就不报错了 解决依赖关系 ...

  3. Java基础面试题集(二)

    Java程序员面试题集(1-50) 一.Java基础部分 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 1)抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象 ...

  4. Android 消息传递机制

    线程间消息传递机制 1.消息怎么发送的? 我们都知道当调用Handler发送消息的时候,不管是调用 sendMessage,sendEmptyMessage,sendMessageDelayed还是其 ...

  5. jeecms v9图标不显示问题

  6. MariaDB select

    1.环境部署: syntax语法错误 查询基本使用(条件,排序,聚合函数,分组,分页) --创建学生表 create table students ( id int unsigned not null ...

  7. CentOS 升级 openSSH+ sh脚本自动运维

     升级前后对比 openSSH作为linux远程连接工具,容易受到攻击,必须更新版本来解决,低版本有如下等漏洞: OpenSSH 远程代码执行漏洞(CVE-2016-10009) OpenSSH au ...

  8. cocos2dx[3.2](11) 新事件分发机制

    在2.x中处理事件需要用到委托代理(delegate),相信学过2.x的触摸事件的同学,都知道创建和移除的流程十分繁琐. 而在3.x中由于加入了C++11的特性,而对事件的分发机制通过事件分发器Eve ...

  9. 【计算机视觉】Emvisi2

    Emvisi2: A background subtraction algorithm, robust to sudden light changes Making Background Subtra ...

  10. JS实现网页选取截屏 保存+打印 功能(转)

    源码地址: 1.1 确定截图选取范围 用户在开始截图后,需要在页面上选取一个截图范围,并且可以直观的看到,类似如下效果: image 我们的选取范围就是鼠标开始按下的那个点到鼠标拖动然后松开的那个点之 ...