Codeforces Round 886 (Div. 4)补题

To My Critics(Problem - A - Codeforces)

题目大意:现有一个三位数,问能否从中抽取两个数使得和大于等于10.

思路:排个序,取大的两个即可。

#include<bits/stdc++.h>
using namespace std;
int main()
{int t;scanf("%d",&t);while(t--){int a[4];for(int i=0;i<3;i++) scanf("%d",&a[i]);sort(a,a+3);if(a[1]+a[2]>=10) printf("YES\n");else printf("NO\n");}
}

Ten Words of Wisdom(Problem - B - Codeforces)

题目大意:现有n个回答,每个回答含的字数是a[i],回答质量为b[i],我们要求出所有长度不超过10的的回答中质量最高的回答。输出回答者的下标。

思路:也很简单,遍历判一下字数,字数符合要求的就判断一下是否需要更新即可。

#include<bits/stdc++.h>
using namespace std;
char s[10][10];
int main()
{int t;scanf("%d",&t);while(t--){for(int i=0;i<8;i++) scanf("%s",s[i]);string a="";for(int i=0;i<8;i++){for(int j=0;j<8;j++){if(s[j][i]!='.') a += s[j][i];}}cout<<a<<endl;}
}

Balanced Round(Problem - D - Codeforces)

题目大意:现在有一个数组,我们可以从中删除任何数量的问题,然后按照任何顺序重排剩下的a[],最后要使得任何两个数之间的差值不超过k,问最少需要删除多少个元素。

思路:我们可以先重排,然后计算出两个数之间的差值,因为牵一发而动全身,所以我们需要找到差值中最长的一段符合要求的长度,然后加1,就是我们保留下来的数,然后剩下的都是要删除的。

#include<bits/stdc++.h>
using namespace std;
int a[200010];
int main()
{int t;scanf("%d",&t);while(t--){int n,k;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++) scanf("%d",&a[i]);sort(a+1,a+1+n);int c=0,mx=0;for(int i=1;i<n;i++){if(abs(a[i]-a[i+1])<=k) c++;else{mx=max(mx,c);c=0;}}mx=max(mx,c);printf("%d\n",n-mx-1);}
}

Cardboard for Pictures(Problem - E - Codeforces)

题目大意:现有n个边长为s[i]的正方形照片,我们要把它粘在一个正方形纸板上,使得每张照片与边界距离为w,总共用了面积为c的纸板,求出w的值。

思路:这道题显然可以二分来实现。二分w,判断是否合适。

#include<bits/stdc++.h>
using namespace std;
#define int long long
int n,c;
int a[200010];
int check(int mid)
{int ans=0;for(int i=1;i<=n;i++) {ans += (a[i]+2*mid)*(a[i]+2*mid);if(ans>c) return 0;}return 1;
}
signed main()
{int t;scanf("%lld",&t);while(t--){scanf("%lld%lld",&n,&c);for(int i=1;i<=n;i++) scanf("%lld",&a[i]);int l=0,r=1e9;while(l<r){int mid=(l+r+1)/2;if(check(mid)) l=mid;else r=mid-1;}printf("%lld\n",l);}
}

We Were Both Children(Problem - F - Codeforces)

题目大意:有n只青蛙,它们每次可以跳跃的长度为a[i],起初它们都在0点,小m和小s要捕捉它们,但是只能在1-n之间的某个点上设置陷阱,问最多能捉住多少只青蛙。

思路:显然是找出一个若干个数的公倍数,同时使这若干个数尽可能地多。我们可以先用map统计每个数的个数,有个很显然的事情,在当前这个数的所有倍数位置放置陷阱都可以捕捉到跳跃长度为这个值的青蛙,那么我们就可以预处理所有位置能捕捉的青蛙数量。这里用到个一个logn找所有倍数的方法。

#include<bits/stdc++.h>
using namespace std;
int st[200010];
int main()
{int t;scanf("%d",&t);while(t--){int n;scanf("%d",&n);map<int,int>mp;for(int i=1;i<=n;i++){int x;scanf("%d",&x);mp[x]++;st[i]=0;}for(auto it:mp){int v=it.first,c=it.second;for(int i=v;i<=n;i+=v) st[i]+=c;}int mx=0;for(int i=1;i<=n;i++) mx=max(mx,st[i]);printf("%d\n",mx);}
}

The Morning Star(Problem - G - Codeforces)

题目大意:现有一个指南针,只能指向八个方向,现在坐标轴上有一些点,我们将指南针放在一个点上,如果它能指向另一个点的话,它就不会坏。我们要找出有多少点对使它不会坏。(1,2)和(2,1)视为两个点对。

思路:我们来找一下规律,首先规定当前点的坐标为(x,y),它能指向的点(x,k)、(k,y)、(k,x+y-k)、(k,y-x-k),所以我们可以记录每一个x对应了多少点,每一个y对应了多少点,每一个x+y对应多少点,每一个y-x对应了多少点,然后遍历所有点就可以实现。

#include<bits/stdc++.h>
using namespace std;
#define int long long
pair<int,int>q[200010];
signed main()
{int t;scanf("%lld",&t);while(t--){int n;scanf("%lld",&n);map<int,int>mp1,mp2,mp3,mp4;for(int i=1;i<=n;i++){int x,y;scanf("%lld%lld",&x,&y);q[i]={x,y};mp1[x]++;mp2[y]++;mp3[x+y]++;mp4[y-x]++;}int ans=0;for(int i=1;i<=n;i++){int x=q[i].first,y=q[i].second;ans += (mp1[x]-1)+(mp2[y]-1)+(mp3[x+y]-1)+(mp4[y-x]-1);}printf("%lld\n",ans);}
}

The Third Letter(Problem - H - Codeforces)

题目大意:现有n个士兵,m个限制,和一个无限长的数轴,每个限制都由三个数组成a,b,d,如果d大于0,那么a在b前面,如果d小于0,那么a在b后面,一个点可以有多个士兵,而且需要满足所有的限定。

思路:很显然如果我们确定某个士兵的位置后,剩下的一部分士兵可以由此确定,那么与它有关系的士兵是哪些呢?显然我们可以通过将将有关系的边连起来进而实现,那么连好后应该可以得到若干的连通块,我们将每一个连通块内的士兵的位置确定好,最后检查一遍是否符合m条规则即可。至于这个建边怎么建呢,我们可以在d为正的时候建一条从a指向b的边,在d为负的时候建一条从b指向a的边。其实具体位置是否会冲突无所谓,我们只要保证不违反m条规则即可。

这里还有一点要注意,因为我们为了避免dfs时死循环,会对访问过的点进行标记,但是如果我们只建立单向的边,就会在5->4的时候出错,因为dfs(4)的时候已经将4标记过了,所以在访问5的时候会直接将4跳过,那么它们之间的关系就不会被表示出来,但是如果我们建立双向边就不会出现这个问题了,另外还有一点要注意,边权是很大的,所以有爆int的可能,我们需要用long long来处理。

#include<bits/stdc++.h>
using namespace std;
#define int long long
struct edge
{int a,b,d;
}ed[200010];
int h[200010],e[400010],ne[400010],w[400010],idx;
void add(int a,int b,int d)
{w[idx]=d,e[idx]=b,ne[idx]=h[a],h[a]=idx++;
}
int st[200010],v[200010];
void dfs(int u)
{st[u]=1;for(int i=h[u];i!=-1;i=ne[i]){int j=e[i];if(st[j]) continue;v[j]=v[u]+w[i];dfs(j);}
}
signed main()
{int t;scanf("%lld",&t);while(t--){int n,m;scanf("%lld%lld",&n,&m);for(int i=1;i<=n;i++){st[i]=0,v[i]=0,h[i]=-1;}idx=0;for(int i=1;i<=m;i++){int a,b,d;scanf("%lld%lld%lld",&a,&b,&d);ed[i]={a,b,d};add(a,b,d);add(b,a,-d);	}for(int i=1;i<=n;i++){if(!st[i]) dfs(i);}int flag=1;for(int i=1;i<=m;i++){int a=ed[i].a,b=ed[i].b,c=ed[i].d;if(v[a]+c!=v[b]){flag=0;break;}}if(flag) printf("YES\n");else printf("NO\n");}
}

结语:愿新的一年所得皆所愿,在自己的领域成为闪闪发光的人!

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

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

相关文章

Qt网络编程-ZMQ的使用

不同主机或者相同主机中不同进程之间可以借助网络通信相互进行数据交互&#xff0c;网络通信实现了进程之间的通信。比如两个进程之间需要借助UDP进行单播通信&#xff0c;则双方需要知道对方的IP和端口&#xff0c;假设两者不在同一主机中&#xff0c;如下示意图&#xff1a; …

第4章——深度学习入门(鱼书)

第4章 神经网络的学习 本章的主题是神经网络的学习。这里所说的“学习”是指从训练数据中自动获取最优权重参数的过程。本章中&#xff0c;为了使神经网络能进行学习&#xff0c;将导入损失函数这一指标。而学习的目的就是以该损失函数为基准&#xff0c;找出能使它的值达到最…

C++中类的6个默认成员函数【构造函数】 【析构函数】

文章目录 前言构造函数构造函数的概念构造函数的特性 析构函数 前言 在学习C我们必须要掌握的6个默认成员函数&#xff0c;接下来本文讲解2个默认成员函数 构造函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 空类中真的什么都没有吗&#xff1f;并不是&#xff0c…

动态内存经典笔试题分析

1.代码1 void GetMemory(char *p) { p (char *)malloc(100); } void Test(void) { char *str NULL; GetMemory(str); strcpy(str, "hello world"); printf(str); } int main&#xff08;&#xff09; { Test&#xff08;&#xff09;&#xff1b; return 0&#x…

Qlik Sense : Lookup函数

LookUp - 脚本函数 Lookup() 用于查找已经加载的表格&#xff0c;并返回与在字段 match_field_name 中第一次出现的值 match_field_value 对应的 field_name 值。表格可以是当前表格或之前加载的其他表格。 语法&#xff1a; lookup(field_name, match_field_name, match_…

2024牛客寒假算法基础集训营3

前言 感觉有些题是有难度&#xff0c;但是是我花时间想能想的出来的题目&#xff0c;总体来说做的很爽&#xff0c;题目也不错。个人总结了几个做题技巧&#xff0c;也算是提醒自己。 1.多分类讨论 2.从特殊到一般&#xff0c;便于找规律。例如有一组数&#xff0c;有奇数和…

[word] word自定义编号格式怎么设置 #经验分享#职场发展#职场发展

word自定义编号格式怎么设置 在Word文档的编辑中&#xff0c;经常会给段落添加编号&#xff0c;但是在编号的使用过程中我们会遇到很多问题&#xff0c;今天给大家分享word自定义编号格式怎么设置&#xff0c;希望能帮到您&#xff01; 1.如何自定义编号格式&#xff1f; 点击…

【第二十三课】最小生成树:prime 和 kruskal 算法(acwing858,859 / c++代码 )

目录 前言 Prime算法--加点法 acwing-858 代码如下 一些解释 Kruskal算法--加边法 acwing-859 并查集与克鲁斯卡尔求最小生成树 代码如下 一些解释 前言 之前学最短路的时候&#xff0c;我们都是以有向图为基础的&#xff0c;当时我们提到如果是无向图&#xf…

Java基础深度剖析:从数据类型到新特性一揽无余

Java基础深度剖析&#xff1a;从数据类型到新特性一揽无余 Java 基础一、数据类型基本类型包装类型缓存池 二、String概览不可变的好处String, StringBuffer and StringBuilderString Poolnew String("abc") 三、运算参数传递float 与 double隐式类型转换switch 四、…

百度PaddleOCR字符识别推理部署(C++)

1 环境 1.opencv&#xff08;https://sourceforge.net/projects/opencvlibrary/&#xff09; 2.cmake&#xff08;https://cmake.org/download/&#xff09; 3.vs2019&#xff08;(https://github.com/PaddlePaddle/PaddleOCR/tree/release/2.1) 4.paddleOCR项目-建议2.0(http…

数据结构第十四天(树的存储/双亲表示法)

目录 前言 概述 接口&#xff1a; 源码&#xff1a; 测试函数&#xff1a; 运行结果&#xff1a; 往期精彩内容 前言 孩子&#xff0c;一定要记得你的父母啊&#xff01;&#xff01;&#xff01; 哈哈&#xff0c;今天开始学习树结构中的双亲表示法&#xff0c;让孩…

Nginx实战:1-安装搭建

目录 前言 一、yum安装 二、编译安装 1.下载安装包 2.解压 3.生成makefile文件 4.编译 5.安装执行 6.执行命令软连接 7.Nginx命令 前言 nginx的安装有两种方式&#xff1a; 1、yum安装&#xff1a;安装快速&#xff0c;但是无法在安装的时候带上想要的第三方包 2、…

第二十七回 武松威镇安平寨 施恩义夺快活林-人人爱用的Python编程语言

张青提议武松不要去牢城营受苦&#xff0c;可以把公差杀掉然后去二龙山入伙鲁智深。武松却坚持他的道义原则&#xff0c;不愿意伤害一路上照顾他的两位公人。张青尊重他的决定&#xff0c;救醒了两位公人。 张青、孙二娘和武松以及两位公人一起喝酒吃饭&#xff0c;张青还向武…

大数据Flume--入门

文章目录 FlumeFlume 定义Flume 基础架构AgentSourceSinkChannelEvent Flume 安装部署安装地址安装部署 Flume 入门案例监控端口数据官方案例实时监控单个追加文件实时监控目录下多个新文件实时监控目录下的多个追加文件 Flume Flume 定义 Flume 是 Cloudera 提供的一个高可用…

幻兽帕鲁服务器怎么更新?进入游戏显示:加入的比赛正在运行不兼容的版本,请尝试升级游戏版本(阿里云)

幻兽帕鲁服务器怎么更新&#xff1f;进入游戏显示&#xff1a;加入的比赛正在运行不兼容的版本&#xff0c;请尝试升级游戏版本。这是因为游戏客户端或者服务器上的游戏服务端&#xff0c;没有更新版本。导致两个版本不一致&#xff0c;所以无法进入游戏。 最近幻兽帕鲁 官方客…

15.3 Redis入门(❤❤❤❤)

15.3 Redis入门❤❤❤❤ 1. redis简介与配置1.1 简介1.2 Windows安装1.3 Linux安装1.4 守护进程方式启动1.5 客户端启动与使用1.6 指定生成日志 2. 使用2.1 客户端redis使用命令2.2 redis存储的数据类型1. String字符串类型2. Hash键值类型3. List列表类型4. Set与Zset集合类型…

问题:超声波纵波斜入射时,当入射角大于第一临界角小于第二临界角时,在第二介质内只有折射横波。 #微信#经验分享#其他

问题&#xff1a;超声波纵波斜入射时&#xff0c;当入射角大于第一临界角小于第二临界角时&#xff0c;在第二介质内只有折射横波。 参考答案如图所示

面向对象编程:理解其核心概念与应用

引言 在编程的世界中&#xff0c;面向对象编程&#xff08;Object-Oriented Programming, OOP&#xff09;已成为一种主流的编程范式。它提供了一种组织和管理代码的有效方式&#xff0c;使得代码更加模块化、可重用和易于维护。本文将带您深入探讨面向对象编程的核心概念及其…

波奇学Linux:文件重定向和虚拟文件系统

重定向 文件描述符所对应的分配规则&#xff0c;从0开始&#xff0c;寻找最小没有使用的数组位置。 如图所示&#xff0c;关闭文件描述符的0&#xff0c;新打开的文件描述符为0&#xff0c;而关闭2&#xff0c;文件描述符为2。 重定向&#xff1a;文件输出的对象发生改变 例…

网络协议、网络传输认识

目录 网络协议概念 网络协议具象化理解 协议分层 TCP/IP模型 网络传输基本流程 网络协议概念 网络协议是计算机网络中用于在通信设备之间传输数据的规则集合。这些规则定义了数据的格式、传输方式、错误检测和纠正方法等&#xff0c;以确保不同设备之间的通信能够正确进行…