首页 > 其他分享 >Codeforces 401B Sereja and Contests 题解

Codeforces 401B Sereja and Contests 题解

时间:2024-05-18 19:29:41浏览次数:14  
标签:题解 Sereja cin 401B fi 标识符 Div2 define

题目简述

Sereja 是一名程序员,他喜欢参加 Codesorfes 比赛。不过,乌兹兰的网络连接不太好,所以 Sereja 有时会跳过比赛。

Codesorfes 有两种类型的比赛,分为 Div1 和 Div2。 Div1 和 Div2 这两轮可以同时进行(Div1 轮不能在没有 Div2 的情况下进行)。每一轮都有一个唯一的标识符,各轮按开始时间顺序编号。同时运行的各轮标识符相差一个,而且 Div1 轮的标识符总是较大。

Sereja 是一名初学者,因此他只能参加 Div2 类型的比赛。此刻他正在参与 Div2 回合,其标识符为 $x$。Sereja 清楚地记得,在这一轮之前,他正好下过 $k$ 轮。此外,他还记得他参加过的各轮比赛的所有标识符,以及与它们同时进行的各轮比赛的所有标识符。Sereja 不记得他错过的任何一轮比赛。

Sereja 想知道他错过的 Div2 轮最少和最多会是多少?帮他找出这两个数字。

题目分析

可以先将这 $k+1$ 轮比赛排序,算出每两轮之间错过的场数,设为 $a$,如果要是最多,那么这 $a$ 轮都是 div2。要是最少的话,就要让 div1 和 div2 同时进行的场数尽可能多,即最多有 $\lfloor \frac{a}{2} \rfloor$ 轮,有可能 $a$ 是奇数,那么还要多一轮 div2,所以最少的场数就是 $\lfloor \frac{a}{2} \rfloor+a \bmod 2$,累加即可。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define random(a,b) (rand()%(b-a+1)+a)
#define se second
#define fi first
#define pr pair<int,int>
#define pb push_back
#define ph push
#define ft front
#define For(i,a,b) for(int i=a;i<=b;i++)
#define Rep(i,a,b) for(int i=a;i>=b;i--)
#define mem(a,b) memset(a,b,sizeof a)
const int N=4100;
int x,k,opt,ans1,ans2;
pr a[N];
int main()
{
	ios::sync_with_stdio(false);
    cin.tie(0);
    cin>>x>>k;
    For(i,1,k)
    {
    	cin>>opt;
		if(opt==2)
		{
			cin>>a[i].fi;
			a[i].se=a[i].fi;
		}
		else
		{
			cin>>a[i].fi>>a[i].se;
		}
	}
	a[k+1].fi=x;
	sort(a+1,a+1+k);
	For(i,1,k+1)
	{
		int temp=a[i].fi-a[i-1].se-1;
		ans1+=temp/2+(temp%2);
		ans2+=temp;
	}
	cout<<ans1<<" "<<ans2;
	return 0;
}

标签:题解,Sereja,cin,401B,fi,标识符,Div2,define
From: https://www.cnblogs.com/zhuluoan/p/18199682

相关文章

  • 第二届“重科杯”重庆科技大学程序设计竞赛(同步赛)ptlks的题解(2024.5.18)
    A.Alice和Bob题意:给定序列A和序列,m组信息\((i,j)\),Alice可以交换\(A_i\)和\(A_j\)任意次,判断Alice是否能将序列A转变为序列B。思路由于Alice可以任意调整m组信息,所以题目所给m组信息\((i,j)\)不影响结果。先考虑k组信息,第i组为\((T_i,T_{i+1})\),\(1\leqT_1\ltT_2\lt.........
  • [ABC353F] Tile Distance 题解
    [ABC353F]TileDistance题解题目传送门:洛谷,AtcoderSolution很恶心人的分类讨论题。很显然走大格子大概率比走小格子快。对终点和起点向上下左右枚举大格子,我们就把问题转化为给两个大格子\((a,b)\)、\((c,d)\),求怎样走最快。对角的大格子可以通过\(2\)步相互到达,如下......
  • CF527E Data Center Drama 题解
    @目录题目题意题解思路详解注意事项代码AC记录尾声题目CF527EDataCenterDrama·戳这里题意给定一张$n$个点$m$条边的连通无向图。你需要加尽可能少的边,然后给所有边定向,使得每一个点的出入度都是偶数。边可以是自环,也可以有重边。$n\le10^5$,$m\le2\times1......
  • Codeforces 769B News About Credit 题解
    题目简述波利卡普在由$n$名学生(包括他自己)组成的小组中学习,编号为$1$到$n$,波利卡普的编号始终是$1$。他们都在社交网络上注册,每个学生都有一个值$a_i$,表示第$i$名学生每天能发送的最大信息数。清晨,波利卡普知道了一个重要消息,他认为有必要通过私人消息紧急通知所有组员......
  • 安装vue/cli报错问题解决
    在管理员终端中输入命令:npmi-g@vue/cli错误原因证书已过期,需要安装淘宝镜像npmconfigsetregistryhttps://registry.npmmirror.com使用cnpm安装脚手架报错cnpmi-g@vue/cli 这个错误表明你尝试执行的 cnpm 命令无法加载,因为PowerShell策略不允许执......
  • P10125 「Daily OI Round 3」Simple 题解
    题目传送门简单模拟,主要考察字符串。首先输入一个char类型的数组,然后直接遍历每一位是否为Acoipp或Svpoll即可。//Simple//codeby:cq_irritater//time:2024/02/04#include<bits/stdc++.h>usingnamespacestd;chara[10];intmain(){//freopen("......
  • P8684 [蓝桥杯 2019 省 B] 灵能传输 题解
    题目传送门本题涉及到了\(3\)种算法:前缀和,排序以及贪心。(1)前缀和本题实际上要求通过某种灵能传输可以使得该序列的最大值最小。而由前缀和可知,当某一个前缀和序列保持有序(或前缀和序列表示的函数单调)时,其\(s[i]-s[i-1]\)的最大值可以达到最小。通过对几个样例的观察......
  • P9686 Judg. 题解
    题目传送门一道简单模拟。这道题最简单的方法就是直接在for循环中判断题目给出状态是否为AC,如果不是则输出当前\(i\)的值,否则就不输出。#include<bits/stdc++.h>usingnamespacestd;constintMAXN=1e5+10;intn;stringa[MAXN];intmain(){ scanf("%......
  • P8741 [蓝桥杯 2021 省 B] 填空问题 题解
    题目传送门试题A:空间【解析】本题考察计算机存储的基础知识,只要掌握空间存储的换算方法,就能够算出答案。【程序】#include<bits/stdc++.h>usingnamespacestd;intmain(){printf("%d\n",256*8/32*1024*1024);return0;}【答案】67108864......
  • P8679 [蓝桥杯 2019 省 B] 填空问题 题解
    题目传送门试题A:组队【解析】本题是一道经典的DFS搜索题,每次对各号位的选手进行DFS,找到各号位上有成绩的选手时再进行进一步搜索即可。【程序】#include<bits/stdc++.h>usingnamespacestd;intteam[20][6];intmax_sum;boolvis[20];voiddfs(intu,intsu......