Educational Codeforces Round 77 比赛总结
比赛情况
我太菜了
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 比赛总结的更多相关文章
- 【cf比赛记录】Educational Codeforces Round 77 (Rated for Div. 2)
比赛传送门 这场题目前三题看得挺舒服的,没有臃肿的题目,对于我这种英语渣渣就非常友好,但因为太急了,wa了两发A后才意识到用模拟(可以删了,博主真的是个菜鸟),结果导致心态大崩 ---- 而且也跟最近 ...
- Educational Codeforces Round 77 (Rated for Div. 2) D A game with traps
题意:x正轴上有着一个陷阱的位置,开关和灵敏度,如果一个士兵灵敏度输给陷阱,他是过不去这个陷阱的幸运的是,你可以先过去把开关给关了,没错你是不怕陷阱的接下来呢你有操作,你移动一个,耗费一秒而你的团队需 ...
- Educational Codeforces Round 77 (Rated for Div. 2)
A: 尽可能平均然后剩下的平摊 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int ...
- 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 ...
- Educational Codeforces Round 77 (Rated for Div. 2)D(二分+贪心)
这题二分下界是0,所以二分写法和以往略有不同,注意考虑所有区间,并且不要死循环... #define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> ...
- 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]$表示陷阱的位置,如果你 ...
- Educational Codeforces Round 77 (Rated for Div. 2) C. Infinite Fence
C. Infinite Fence 题目大意:给板子涂色,首先板子是顺序的,然后可以涂两种颜色,如果是r的倍数涂成红色,是b的倍数涂成蓝色, 连续的k个相同的颜色则不能完成任务,能完成任务则输出OBE ...
- Educational Codeforces Round 40千名记
人生第二场codeforces.然而遇上了Education场这种东西 Educational Codeforces Round 40 下午先在家里睡了波觉,起来离开场还有10分钟. 但是突然想起来还 ...
- Educational Codeforces Round 26
Educational Codeforces Round 26 困到不行的场,等着中午显示器到了就可以美滋滋了 A. Text Volume time limit per test 1 second ...
随机推荐
- android打包生成apk时自定义文件名版本号。自定义项目字段等等
早期的AS2.0版本左右中这样配置: app---->build.gradle中设置 applicationVariants.all { variant -> variant.output ...
- zk 两阶段提交(待完善)
zk 节点是一个 QuorumPeer,选举结束后,leader 和 follower 各自执行自己的逻辑: org.apache.zookeeper.server.quorum.QuorumPeer ...
- windows 10 右键菜单 使用vscode打开 快捷键
呼出菜单栏(鼠标右键或快捷键shift+f10)之后按i 资料: 1.如何为windows 10添加右键context menu item https://stackoverflow.com/ques ...
- Altera DDR2 IP核学习总结2-----------DDR2 IP核的生成
打开IP核工具,然后选择Verilog HDL选项,填写路径,写入文件名DDR2_IP.V,点击next PLL reference clock frequency填入板子晶振的频率50MHZ,这里设 ...
- 【VS开发】error C2220: 警告被视为错误 - 没有生成“object”文件
http://blog.csdn.net/cay22/article/details/5613625 这种错误的原因是:原因是该文件的代码页为英文,而我们系统中的代码页为中文. 解决方案: 1. 启动 ...
- Akka系列(六):Actor解决了什么问题?
前言..... 文档来源于 : What problems does the actor model solve? Actor解决了什么问题? Akka使用Actor模型来克服传统面向对象编程模型的 ...
- python爬取天气后报网
前言 大二下学期的大数据技术导论课上由于需要获取数据进行分析,我决定学习python爬虫来获取数据.由于对于数据需求量相对较大,我最终选择爬取 天气后报网,该网站可以查询到全国各地多年的数据,而且相对 ...
- <<C++ Primer>> 第一章 开始 术语表
术语表 第 1 章 开始 参数(实参, argument): 向函数传递值 赋值(assignment): 抹去一个对象当前值一个新值取代之 缓冲区(buffer): 一个存储区域, 用于 ...
- AT2292 Division into Two
题目 不妨认为\(A>B\). 首先判一下无解. 设\(f_i\)表示\(A\)集合最后选第\(i\)个数的方案数. 转移的话枚举一下从哪个\(j\)转移过来. 显然\(j\)需要满足以下条件: ...
- Head First PHP&MySQl第二章代码
PHP: <html> <head> <title>外星人绑架了我--报道一起绑架</title> </head> <body> ...