Educational Codeforces Round 140 (Rated for Div. 2)

news2024/9/27 21:27:48

A. Cut the Triangle

题目链接:Problem - A - Codeforces

样例输入: 

4


4 7
6 8
3 5


4 5
4 7
6 8


5 8
1 8
2 5


3 6
6 6
6 3

样例输出:

YES
YES
YES
NO

题意:在二维平面上给定一个非退化三角形的三个顶点,问我们能不能用一条平行或者垂直于坐标轴的直线将这个非退化三角形分成两个非退化三角形,非退化三角形代表这个三角形的面积是一个正数。

分析:只要这个三角形不是一个两条直角边分别平行于横纵坐标轴的直角三角形即可。转化为数学式就是只要找到一个点的横坐标或者纵坐标位于另外两个点的横坐标或者纵坐标之间(不能相等)即可

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
struct node{
	int x,y;
}p[5];
bool cmp1(node a,node b)
{
	return a.x<b.x;
}
bool cmp2(node a,node b)
{
	return a.y<b.y;
}
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		for(int i=1;i<=3;i++)
			scanf("%d %d",&p[i].x,&p[i].y);
		sort(p+1,p+4,cmp1);
		if(p[2].x<p[3].x&&p[2].x>p[1].x)
		{
			puts("YES");
			continue;
		}
		sort(p+1,p+4,cmp2);
		if(p[2].y<p[3].y&&p[2].y>p[1].y)
		{
			puts("YES");
			continue;
		}
		puts("NO");
	}
	return 0;
}

B. Block Towers

题目链接:Problem - B - Codeforces

 样例输入:

4
3
1 2 3
3
1 2 2
2
1 1000000000
10
3 8 6 7 4 1 2 4 10 1

样例输出:

3
2
500000001
9

题意:给定n个整数a[],分别代表楼塔的高度,我们可以对这些楼塔进行操作,每次操作可以选择两个楼塔i和j,如果a[i]>a[j],那么可以让a[i]-1,a[j]+1。问我们最多能让第一个楼塔的高度达到多高?

分析:直接贪心考虑即可,先将第2~n座楼塔按照高度进行从小到大排序,然后从第二个楼塔开始,依次往第一座楼塔上增加高度,直至操作完所有的楼塔即可

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=2e5+10;
int a[N];
int main()
{
	int T;
	cin>>T;
	while(T--)
	{
		int n;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
			scanf("%d",&a[i]);
		sort(a+2,a+n+1);
		for(int i=2;i<=n;i++)
		{
			if(a[i]>a[1])
				a[1]=(a[i]+a[1]+1)/2;
		}
		printf("%d\n",a[1]);
	}
	return 0;
}

C. Count Binary Strings

题目链接:Problem - C - Codeforces

样例输入:

3
1 0 2
1 0
1

样例输出:

6

题意:给定一个n,代表我们需要构造的01串的长度,接下来给定一个数组a[i][j],代表从第i个位置到第j个位置的限制。其中i<=j

如果a[i][j]=1,那么从第i个位置到第j个位置的字符都是相同的

如果a[i][j]=2,代表从第i个位置到第j个位置的字符中存在不同字符

如果a[i][j]=0,代表从第i个位置到第j个位置的字符不做限制

问满足这些限制的情况下我们能够构造出来的01串的方案数,答案对998244353取余。

分析:通过分析我们可以发现a[1][r],a[2][r],……,a[r][r]一定呈现2 2……2 1 1……1的特征,这是显然的,因为一开始a[r][r]肯定为1,如果第r-1个位置和第r个位置上的数相同,那么就有a[r-1][r]=1,否则就有a[r-1][r]=2,一旦某个i满足a[i][r]=2,那么所有的j<=i都有a[j][r]=2.

f[i][j]表示a[1~i-1][j]等于2,a[i~j][j]等于1的合法方案数,那么答案就是\sum_{i=1}^{n}f[i][n].

我们直接遍历更新f[l][r],我们首先判断a[1~l-1][r]是不是全都为2或者0,以及a[l~r][r]是否全都为1,如果不满足这两个条件那么显然有f[l][r]=0.这个时候我们来分两种情况考虑,第一种情况就是第r+1个位置和第r个位置的字符相同,那么就有f[l][r+1]=f[l][r+1]+f[l][r],如果第r+1个位置和第r个位置的字符不同,那么就有f[r+1][r+1]=f[r+1][r+1]+f[l][r],因为第r个字符和第r+1个字符不同,所以一定有a[l~r][r+1]=2,所以直接加到f[r+1][r+1]上即可。

初始化条件:f[1][1]=2,代表第一个位置可以为0可以为1

细节见代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=103,mod=998244353;
int a[N][N]; 
int f[N][N];//f[i][j]表示a[1~i-1][j]等于2,a[i~j][j]等于1的合法方案数 
int main()
{
	int n;
	cin>>n;
	for(int i=1;i<=n;i++)
	for(int j=i;j<=n;j++)
		cin>>a[i][j];
	f[1][1]=2;
	for(int r=1;r<=n;r++)
	for(int l=1;l<=r;l++)
	{
		bool flag=true;
		for(int i=1;i<l;i++)
			if(a[i][r]==1) flag=false;
		for(int i=l;i<=r;i++)
			if(a[i][r]==2) flag=false;
		if(!flag) f[l][r]=0;
		f[l][r+1]=(f[l][r+1]+f[l][r])%mod;//第r+1个位置上的数等于第r个位置上的数 
		f[r+1][r+1]=(f[r+1][r+1]+f[l][r])%mod;//第r+1个位置上的数不等于第r个位置上的数,那么就有a[1~r][r+1]=2 
	}
	int ans=0;
	for(int i=1;i<=n;i++)
		ans=(ans+f[i][n])%mod;
	printf("%d\n",ans);
	return 0;
}

D. Playoff

题目链接:Problem - D - Codeforces

样例输入: 

3
101

样例i输出:

4 5 6 7 

题意:给定 2^n名参赛选手,其能力值是 [1,2^n] 的排列。一共进行 n 轮比赛。每轮比赛和自己相近的选手进行比赛。最后在 n 轮游戏后,会有一个选手胜出。给定一个长度为n的01串代表规则,s[i]=0 表示在第i轮能力低的获胜,否则能力高的获胜。求能力值为多少的选手最终可能获胜。

分析:不难发现,满足题意的能力值一定是连续的。我们不妨分析一下能力值最小是多少,假设是x,假如n论比赛中有cnt1轮比赛的规则是能力高的获胜,那么在第cnt1轮能力大的选手获胜的比赛后所有小于x编号的选手都已经被淘汰,在第cnt1-1轮能力大的选手获胜的比赛后,还会剩下一个比x编号小的选手,同理为了使得这两名小编号选手晋级,那么在第cnt1-2轮能力大的选手获胜的比赛后应该剩下4名编号小于等于x的选手,其中两名选手是为了另外两名选手晋级用的,按照这个方法递推我们可以发现在第cnt1-i轮能力大的选手获胜的比赛后应该剩下2^i个编号小于等于x的选手,那么令i=cnt1可以得到x=2^cnt1,同理可以分析编号大的情况,由于方法是相同的,所以这里就不赘述了。

下面是代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<vector>
#include<cmath>
using namespace std;
const int N=23;
char s[N];
int main()
{
	int n;
	cin>>n;
	scanf("%s",s+1);
	int cnt0=0;//记录0的个数 
	int cnt1=0;//记录1的个数 
	for(int i=1;i<=n;i++)
		if(s[i]=='0') cnt0++;
		else cnt1++;
	int l=1<<cnt1;
	int r=(1<<n)+1-(1<<cnt0);
	for(int i=l;i<=r;i++)
		printf("%d ",i);
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/129511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NVIDA CUDA和cuDNN安装教程

文章目录一. 查看自己的GPU版本是否支持cuda二 .安装CUDA三. 安装cuDNN一. 查看自己的GPU版本是否支持cuda 打开显卡的控制面板&#xff0c;查看显卡是否支持cuda 二 .安装CUDA 去官网查看cuda版本与所需系统固件的对应关系 从官网下载所需的CUDA Toolkit Archive,这里下载…

04-Css+Nginx

前端入门——CSS 1 CSS入门 1.1 初识CSS 1.1.1 概述 在学习了基本HTML标签和样式后&#xff0c;接下来学习前端开发的第二门技术。 我们发现&#xff0c;虽然标签的属性可以调整一些样式&#xff0c;但是效果不够理想&#xff0c;而我们更愿意把样式编写在<style> 标…

CSS 实现七彩圆环loading动画

前言 &#x1f44f;CSS 实现七彩圆环loading动画&#xff0c;速速来Get吧~ &#x1f947;文末分享源代码。记得点赞关注收藏&#xff01; 1.实现效果 2.实现步骤 定义父容器宽度为–w&#xff0c;每个圆环之间的gap间距为–gap&#xff0c;圆环的border边框宽为–border&am…

7个从Windows计算机上恢复Word文档的方法

你是否有受到Windows上损坏或丢失的Word文件的困扰&#xff1f;好吧&#xff0c;你并不孤单&#xff01; 文件损坏是 Word 文档的常见问题。此外&#xff0c;人们不小心删除了文件或忘记保存最新版本。 由于Word文件通常包含您在个人或职业生涯中所需的重要数据&#xff0c;因…

JavaWeb:Maven创建Web项目

1.1 Web项目结构 Web项目的结构分为&#xff1a;开发中的项目和开发完可以部署的Web项目&#xff0c;这两种项目的结构是不一样的&#xff0c;我们一个个来介绍下&#xff1a; Maven Web项目结构&#xff1a;开发中的项目 开发完成部署的Web项目 开发项目通过执行Maven打包…

python为你画虎迎新年,结束旧年迎新景

前言 2022年是农历壬寅虎年&#xff0c;虎作为十二生肖是家喻户晓的 据学者考证&#xff0c;其应当起源于楚文化中对虎的图腾崇拜&#xff0c;象征力量与威严。 虎者&#xff0c;百兽之王&#xff0c;是威猛的象征&#xff0c;为镇宅辟邪之灵物。 虎在民间习俗中被尊崇为瑞兽…

高斯分布下的线性判别函数简介

协方差矩阵的性质 实对称矩阵&#xff08;第iii元素和第jjj元素的耦合与第jjj元素和第iii元素的耦合相等&#xff09;Eigenvalues & eigenvecters (本征值, 本征向量) ΣϕiλiϕiΦ[ϕ1ϕ2⋯ϕd]Λdiag⁡[λ1,λ2,⋯,λd]\Sigma \phi_i\lambda_i \phi_i \quad \Phi\left[…

oracle安装完成后,只能在本地链接

Oracle搭建好了之后&#xff0c;发现只能在服务器本机链接oracle&#xff0c;其他客户端无法链接&#xff0c;这是因为监听地址是本地localhost&#xff0c;重建监听即可 lsnrctl status 查看监听的名称 lsnrctl stop 停止监听&#xff0c;并关闭数据库 sqlplus / as sysdba…

基于人工神经网络的空压机负荷预测(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

爱站权重怎么查询?怎么做爱站号权重高一些?

这一篇又是网站权重查询和提高权重的分享&#xff0c;爱站权重怎样查询&#xff1f;怎么提高爱站权重&#xff1f; 大家一起来看看嘿。 爱站权重怎样查询&#xff1f; 第一步&#xff1a;打开iis7站长之家seo批量检测&#xff0c;在左上方的框框里面输入需要的域名/网站地址…

数据结构-二叉树详解

目录 一.二叉树 1.概念及结构 2.特殊的二叉树 3.性质与解题 4.存储结构 二.顺序结构与堆 1.堆的概念及结构 2.堆的创建 3.堆的插入 4.堆的删除 5.堆的具体实现 6.堆的应用&#xff1a;堆排序和OPK问题 三.链式二叉树 1.前序/中序/后序遍历 2.层序遍历 3.结点个数…

effective C++读书笔记2

目录 了解C默认编写并调用的函数 若不想使用编译器自动生成的函数&#xff0c;就要明确拒绝 为多态基类声明virtual析构函数 不要让异常逃离析构函数 绝不在构造和析构过程中调用virtual函数 在operator处理自我赋值 复制对象时不要忘记其每一个成分 这是effective C第二章…

Java高效率复习-SpringMVC[SpringMVC]

SpringMVC的简介 表述层前端页面Servlet 入门案例-创建SpringMVC 创建Maven工程 创建Maven工程后&#xff0c;pom文件的打工方式是war包&#xff0c;表示web应用打包方式。 正确的web.xml文件创建路径 src\main\webapp\WEB-INF\web.xml添加依赖 spring-web:5.3.1是SpringM…

java 多线程编程

Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流&#xff0c;一个进程中可以并发多个线程&#xff0c;每条线程并行执行不同的任务。 多线程是多任务的一种特别的形式&#xff0c;但多线程使用了更小的资源开销。 这里定义和线程相关的另一个…

用户手册编写的终极指南

用户手册对于寻求了解产品和流程的用户来说是非常重要的。有时&#xff0c;它们甚至是一个公司向客户销售其产品的法律要求。 客户往往会在联系你的客户支持团队之前查阅你的用户手册&#xff0c;所以你的手册有可能为你节省支持成本。 在你的用户手册上投入大量时间和精力是…

PHP---表单传值

目录 一、表单传值的概念 二、表单传值的方式 &#xff08;1&#xff09;GET和POST的区别 &#xff08;2&#xff09;GET方式 &#xff08;3&#xff09;POST方式 三、接受表单数据 四、处理复选框的注意点 (1)单选框的数据处理 &#xff08;2&#xff09;复选框的数据…

机器学习100天(二十一):021 分类模型评价指标-ROC曲线和AUC

机器学习100天!今天讲的是:分类模型评价指标-ROC曲线和AUC 《机器学习100天》完整目录:目录 首先基于混淆矩阵,介绍两个新的概念:真正例率(TPR)和假正例率(FPR)。真正例率是预测为正且实际为正的样本的占所有正例样本的比例。TPR 越大,预测的正类中实际正类越多。计…

跳板攻击原理及如何追踪定位攻击者主机(下)

跳板攻击溯源中&#xff0c;我们需要先确定本地网络中是否存在攻击者的跳板。具体可参考&#xff08;跳板攻击原理及如何追踪定位攻击者主机&#xff08;上&#xff09;&#xff09; 那么在本地网络中发现跳板后&#xff0c;又要如何追踪定位攻击者主机&#xff1f; 这种情况…

【苹果相册推】增加家庭对方下载 zookeeper-3.4.12.tar.gz #编削配置装备摆设 vim conf/zoo.cfg

推荐内容IMESSGAE相关 作者推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者推荐内容3.日历推 *** 点击即可查看作者要求内容信息作者推荐…

串口助手(简洁版)上位机软件零基础教程( C# + visual studio2019)

最近在开发一个项目&#xff0c;需要串口通信&#xff0c;所以学习怎么自己做一个串口通信助手 1.工程的建立 打开vs软件 -》 左上角 “文件”选项 -》 新建 -》 项目 &#xff0c;弹出对话框如下&#xff1a; 点击visual c# 选项卡 -》 1. 选择 Windows 桌面 -》 2.选择Windo…