CF1501 Div2 题解

CF1501A

这道题其实是一道英语阅读题,然后样例解释又不清晰,所以我看了好久,首先它告诉了你每个站点的预期到达时间 \(a_i\) ,以及每个站点的预期出发时间 \(b_i\) 。

那么对每个站点来说,从上一个站点的预期出发时间 \(b_{i-1}\) 到当前站点的预期到达时间 \(a_{i}\) ,那么中间差的时间就是你从上一个站点到达这个站点的时间,计算出 \(go_i\) \(=\) \(a_i - b_{i-1}\) 就计算出第 \(i-1\) 个站点到达第 \(i\) 个站点的时间。

然后考虑限制:

  • 你需要在预期出发时间后出发
  • 你在一个站点至少要待 \(\lceil \cfrac{b_i-a_i}{2} \rceil\) 的时间

那么对于限制 \(2\) ,首先我们就加上这么多的时间,然后如果加上这么多的时间后,我们当前时间仍然小于预期时间,那就将时间更新为预期时间,然后就做完了。

#include<bits/stdc++.h>
#define int long long
using namespace std;
template<typename T> inline void read(T &x){
T f=1;x=0;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
x*=f;
}
const int N = 3000;
int T,n;
struct node{
int x,y;
}f[N];
int t[N],go[N];
signed main(){
read(T);
while(T--){
memset(f,0,sizeof(f));
memset(t,0,sizeof(t));
memset(go,0,sizeof(go));
read(n);
for(int i=1;i<=n;i++){
read(f[i].x),read(f[i].y);
go[i]=f[i].x-f[i-1].y;
} for(int i=1;i<=n;i++){
read(t[i]);
go[i]+=t[i];
}
int now=0; for(int i=1;i<=n;i++){
now+=go[i];
// now+=t[i];
if(i==n){
printf("%lld\n",now);
break;
}
int lt=ceil((double)(f[i].y-f[i].x) /2.0);
now+=lt;
if(now<f[i].y){
now=f[i].y;
}
//now+=t[i];
} }
return 0;
}

CF1501B

这道题的题意就贼清晰了,然后就很简单了。

发现如果 \(a_i = 0\) 时,那么你就只用正常的叠加一层没被涂的。

否则,你就要叠一层,并且往下进行染色。

暴力进行染色肯定是会超时的,因为 \(1\) 个点有可能被染色多次,所以我采用了一种方式,那就是用树状数组来进行修改。

对要染色的区间的值都加上 \(1\) ,最后进行单点查询,如果值不为 \(0\) ,那就输出 \(1\) ,否则输出 \(0\).

#include<bits/stdc++.h>
#define int long long
using namespace std;
template<typename T> inline void read(T &x){
T f=1;x=0;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
x*=f;
}
const int N = 2e6;
int T,n,a[N],vis[N],tot=0,f[N],num;
vector<int>b;
vector<pair<int,int> > c;
int lowbit(int x){
return x&(-x);
}
int c1[N],c2[N];
void update(int x,int k){
int i=x;
while(x<=n){
c1[x]+=k;
c2[x]+=i*k;
x+=lowbit(x);
}
}
int sum(int x){
int ans=0,i=x;
while(x>0){
ans+=c1[x]*(i+1);
ans-=c2[x];
x-=lowbit(x);
}
return ans;
}
signed main(){
read(T);
while(T--){
read(n);
for(int i=1;i<=n;i++){
read(a[i]);
}
for(int i=1;i<=n;i++){
f[++num]=0;
if(a[i]){
// f[++num]=1;
int last=num-a[i]+1;
if(last<=0) last=1;
c.push_back( make_pair(last,num) ); }
}
for(int i=0;i<c.size();i++){
int l=c[i].first;
int r=c[i].second;
update(l,1);
update(r+1,-1);
}
for(int i=1;i<=num;i++){
int x=sum(i);
if(sum(i)-sum(i-1)==0){
printf("0 ");
}
else printf("1 ");
}
puts("");
for(int i=0;i<=num;i++) c1[i]=c2[i]=0;
c.clear();
num=0; }
return 0;
}

CF1500A

这道题很显然就有一个暴力的平方想法,你可能认为会超时,但是实际是不会的。所以不要怕,直接暴力碾压就完事了吗,具体证明就不发了,因为我也不会,所以这篇就不交题解了。

#include<bits/stdc++.h>
using namespace std;
template<typename T> inline void read(T &x){
T f=1;x=0;
char ch=getchar();
while(!isdigit(ch)){if(ch=='-') f=-1;ch=getchar();}
while(isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48);ch=getchar();}
x*=f;
}
const int N =6e6;
int n,a[N];
pair<int,int>vis[N];
int main(){
read(n);
for(int i=1;i<=n;i++) read(a[i]);
for(int i=1;i<=n;i++){
for(int j=i+1;j<=n;j++){
int s=a[i]+a[j];
if(!vis[s].first&&!vis[s].second){
vis[s]=make_pair(i,j);
}
else{
if(vis[s].first!=i&&vis[s].second!=i&&vis[s].second!=j&&vis[s].second!=i){ puts("YES");
printf("%d %d %d %d",vis[s].first,vis[s].second,i,j);
return 0;
}
}
}
}
puts("NO");
return 0;
}

Codeforces Round #707 Editorial Div2 题解的更多相关文章

  1. Codeforces Round #182 (Div. 1)题解【ABCD】

    Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...

  2. Codeforces Round #608 (Div. 2) 题解

    目录 Codeforces Round #608 (Div. 2) 题解 前言 A. Suits 题意 做法 程序 B. Blocks 题意 做法 程序 C. Shawarma Tent 题意 做法 ...

  3. Codeforces Round #525 (Div. 2)题解

    Codeforces Round #525 (Div. 2)题解 题解 CF1088A [Ehab and another construction problem] 依据题意枚举即可 # inclu ...

  4. Codeforces Round #528 (Div. 2)题解

    Codeforces Round #528 (Div. 2)题解 A. Right-Left Cipher 很明显这道题按题意逆序解码即可 Code: # include <bits/stdc+ ...

  5. Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F

    Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...

  6. Codeforces Round #677 (Div. 3) 题解

    Codeforces Round #677 (Div. 3) 题解 A. Boring Apartments 题目 题解 简单签到题,直接数,小于这个数的\(+10\). 代码 #include &l ...

  7. Codeforces Round #665 (Div. 2) 题解

    Codeforces Round #665 (Div. 2) 题解 写得有点晚了,估计都官方题解看完切掉了,没人看我的了qaq. 目录 Codeforces Round #665 (Div. 2) 题 ...

  8. Codeforces Round #160 (Div. 1) 题解【ABCD】

    Codeforces Round #160 (Div. 1) A - Maxim and Discounts 题意 给你n个折扣,m个物品,每个折扣都可以使用无限次,每次你使用第i个折扣的时候,你必须 ...

  9. Codeforces Round #383 (Div. 2) 题解【ABCDE】

    Codeforces Round #383 (Div. 2) A. Arpa's hard exam and Mehrdad's naive cheat 题意 求1378^n mod 10 题解 直接 ...

随机推荐

  1. QCon笔记~《天下武功,唯快不破——面向云原生应用的Java冷启动加速技术》

    上周去听了QCon全球开发大会,其中有几场印象比较深刻的分享,除去几个比较概念化的话题,在Java技术演进这个Topic里的几个分享都是比较有干货的(但感觉工作中用不到) 首先是关于林子熠老师分享的冷 ...

  2. redis主从架构宕机问题手动解决

    1    主机宕机 1.  设置端口6379是主机,端口6380是从机,全部都正常启动 2.  验证在6379写入数据,在6380也能得到数据 3.  现在将6379主机停掉,模拟主机宕机 4.  由 ...

  3. java中的NIO和IO到底是什么区别?20个问题告诉你答案

    摘要:NIO即New IO,这个库是在JDK1.4中才引入的.NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多. 本文分享自华为云社区<jav ...

  4. QT基本数据类型

    因为Qt是一个C++框架, 因此C++中所有的语法和数据类型在Qt中都是被支持的, 但是Qt中也定义了一些属于自己的数据类型, 下边给大家介绍一下这些基础的数类型. QT基本数据类型定义在#inclu ...

  5. 【NX二次开发】Block UI 线宽

    属性说明 常规         类型 描述     BlockID     String 控件ID     Enable     Logical 是否可操作     Group     Logical ...

  6. 图解 Redis | 不多说了,这就是 RDB 快照

    大家好,我是小林. 虽说 Redis 是内存数据库. 但是它为数据的持久化提供了两个技术,分别是「 AOF 日志和 RDB 快照」. 这两种技术都会用各用一个日志文件来记录信息,但是记录的内容是不同的 ...

  7. RPM安装MySQL5.7并更改数据目录

    RPM安装MySQL5.7并更改数据目录 文末附MySQL完整配置文件 官网地址:https://dev.mysql.com/downloads/mysql/5.7.html#downloads 注意 ...

  8. 简聊DFA(确定性有限状态自动机)

    状态机理论最初的发展在数字电路设计领域.而在软件设计领域,状态机设计的理论俨然已经自成一体. 状态机是软件编程中的一个重要概念,比这个概念更重要的是对它的灵活应用.在一个思路清晰而且高效的程序中,必然 ...

  9. [源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark

    [源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark 目录 [源码解析] 深度学习分布式训练框架 horovod (9) --- 启动 on spark 0x0 ...

  10. excel函数sum、sumif和sumifs

    1.sum(a1,a2,a2,...a10)或sum(a1:a10)求a1到a10的和 2.sumif(条件区域,指定的求和条件,求和的区域) =SUMIF($F$2:$F$7,J2,$H$2:$H$ ...