Codeforces Round 895 (Div. 3) (A~G)

A. Two Vessels

题意:你有两个无限容量杯子A,B,分别装了a,b升的水,此外你还有一个容量为c的杯子C,你可以将一杯的水先倒入C中,再倒入另一个杯子,问你最少需要操作几次能使得A B杯的水量相同。

解析:初始两杯相差d升,其实就是问你 d对2*c向上取整。

void solve()
{int a,b,c;scanf("%d%d%d",&a,&b,&c);c*=2;int d=abs(a-b);if(d==0){printf("0\n");return;}printf("%d\n",(d-1)/c+1);
}

B. The Corridor or There and Back Again

题意:有一个无限长的房间,有n个陷阱,每个陷阱有两个参数d,s表示该陷阱只有你到达d房间之后再经过s秒激活,问你最多能到多远且能安全返回。

解析:其实我们考虑一个陷阱,对于该陷阱,我们最多能再走(s-1)/2个房间(安全来回),因此对于每一个陷阱,计算能到的最远房间与答案取min即可。

void solve()
{int n,ans=1e9;//初始化答案scanf("%d",&n);for(int i=1;i<=n;i++){int d,s;scanf("%d%d",&d,&s);ans=min(ans,d+(s-1)/2);}printf("%d\n",ans);
}

C. Non-coprime Split

题意:给定L,R,问你是否存在两个数a,b,满足a+b在[L,R]中且gcd(a,b)不等于1。

解析:1.其实发现只要区间长度>=2,那么肯定有偶数,因此我们设立a=2,只要在区间中找到一个偶数,两者gcd肯定是2,即为可行解。  2.如果L=R,那么只要L存在非1的因子,那么就是有解,因此假设x是L的因子,那么L/x就是另一部分,那么两者gcd就是x,且相加是L。

void solve()
{int L,R,a=2;scanf("%d%d",&L,&R);for(int i=L-2;i<=R-2;i++){if(i%2==0&&i>0)//需要正整数{printf("2 %d\n",i);return;}}if(L==R){for(int i=2;i<=L/i;i++)//寻找因子{if(L%i==0){printf("%d %d\n",i,L-i);return;}}}printf("-1\n");
}

D. Plus Minus Permutation

题意:给定n,x,y,定义价值为(p1⋅x+p2⋅x+…+p⌊n/x⌋⋅x)−(p1⋅y+p2⋅y+…+p⌊n/y⌋⋅y),p表示n的排列,问你重新排列1~n,使得价值最大化,输出这个价值。

解析:前一半有⌊n/x⌋个数,后一半有⌊n/y⌋个数,那么我们优先选择n,n-1,n-2....填充前面⌊n/x⌋个位置,后一半选择1,2,3...填充,但其中其实可能有重复的位置,重复位置肯定就等价抵消了,计算非重复的即可,重复的个数就是n除以两者的最小公倍数。

void solve()
{ll n,x,y;scanf("%lld%lld%lld",&n,&x,&y);ll k=x*y/__gcd(x,y);//最小公倍数ll w=n/k;//重复的个数ll s1=n/x-w,s2=n/y-w;//前一般有s1个数,后一半有s2个数ll a=s1*n-(s1-1)*s1/2;//数学公式算一下即可ll b=(1+s2)*s2/2;printf("%lld\n",a-b);
}

E. Data Structures Fan

题意:有n个数,同时给长度为n的 01串,有q次询问,其中有两种操作"1  L  R"和"2  g (  g=0 || g=1 )"分别表示把区间[L,R]中的01反转,0变1,1变0,第二种表示询问01串中等于g的所有位置 i 对应的ai异或,输出这个值。

解析:翻转区间[l,r],对于总的s[i]=0的异或总和ans0刚好就是 ans0^=(a[l]^a[l+1]^...^a[r]),ans1同理,因此维护一下异或前缀和即可。

int a[N],b[N];
char s[N];
void solve()
{int n;scanf("%d",&n);for(int i=1;i<=n;i++) scanf("%d",&a[i]);scanf("%s",s+1);for(int i=1;i<=n;i++) b[i]=b[i-1]^a[i];int ans0=0,ans1=0;for(int i=1;i<=n;i++){if(s[i]=='0') ans0^=a[i];else ans1^=a[i];}int q;scanf("%d",&q);while(q--){int op;scanf("%d",&op);if(op==1){int l,r;scanf("%d%d",&l,&r);ans0^=b[r]^b[l-1];ans1^=b[r]^b[l-1];}else{int g;scanf("%d",&g);if(g==0) printf("%d ",ans0);else printf("%d ",ans1);}}printf("\n");
}

F. Selling a Menagerie

题意:有n个动物,每个动物有价值wi,每个动物有一个前置点,如果售卖该动物时,他的前置点还没有被卖,那么你会获得2*wi,否则获得wi,要求你输出一个售卖动物的顺序,是否获得价值最大。

解析:假设关系是一条链,那么肯定是从最后一个点(入度为0)开始卖,直到第一个点,这样价值肯定是最大的,但题中其实会出现有环的情况,但其实不复杂,我们只要使得损失最小即可,我们可以选择环中价值最低的那一个最后卖即可,非环的跑一次拓扑即可,怎么判断该点是否在环中呢,其实跑完拓扑,没有遍历到的点就是在环中。

typedef long long ll;
vector<int> v[N],ans;
ll w[N];//每个点的价值
int n,d[N],ne[N];//分别记录入度和当前点的前置点
bool vis[N];//表示该点是否访问过
void topsort()
{queue<int> q;for(int i=1;i<=n;i++){if(!d[i]){q.push(i);ans.push_back(i);vis[i]=true;}}while(q.size()){int x=q.front();q.pop();for(int i=0;i<v[x].size();i++){int j=v[x][i];if(--d[j]==0){ans.push_back(j);vis[j]=true;q.push(j);}}}
}
void solve()
{scanf("%d",&n);for(int i=1;i<=n;i++){int x;scanf("%d",&x),v[i].push_back(x);ne[i]=x;//下一个节点d[x]++;}for(int i=1;i<=n;i++) scanf("%lld",&w[i]);topsort();for(int i=1;i<=n;i++){if(!vis[i])//还没访问过,表示在环中{int root=i,pos=i;ll mi=w[root];while(1){int k=ne[pos];//下一个节点if(k==root) break;//如果回到了自身退出if(w[k]<mi){mi=w[k];root=k;//记录环中最小值}pos=k;}pos=root;while(1)//从root开始跑一次环,记录答案{int k=ne[pos];if(k==root) break;ans.push_back(k);vis[k]=true;pos=k;}ans.push_back(root);//最后把root放进答案vis[root]=true;}}for(int i=0;i<ans.size();i++) printf("%d ",ans[i]);printf("\n");for(int i=1;i<=n;i++) d[i]=0,v[i].clear(),vis[i]=false;//多组初始化ans.clear();
}

G. Replace With Product

题意:给定n个数,你可以仅操作一次,使得[L,R]这一段替换区间乘积,让你输出L,R使得最后序列总和最大。

解析:正常来贪,肯定选择第一个非1到最后一个非1这个区间,但有些情况并不满足,但是如果区间乘积>=1e9之后,肯定就是选择上述区间,对于总的乘积<1e9的情况,可以发现>1的个数肯定 很少,直接暴力枚举每对位置即可,当然可以用前缀和以及前缀积优化,对于每种跟答案取max即可。

typedef long long ll;
ll a[N],sum[N],mul[N];//分别表示原数组,前缀和,前缀积
void solve()
{int n,l=-1,r=-1;//表示答案区间ll s=1;vector<int> v;scanf("%d",&n);mul[0]=1;//初始化for(int i=1;i<=n;i++) scanf("%lld",&a[i]);for(int i=1;i<=n;i++){if(a[i]!=1){v.push_back(i);if(l==-1) l=i;//第一个非1数字r=i;//最后一个非1数字}sum[i]=sum[i-1]+a[i];mul[i]=mul[i-1]*a[i];}for(int i=1;i<=n;i++){s*=a[i];if(s>=1e9){printf("%d %d\n",l,r);return;}}ll mx=0;for(int i=0;i<v.size();i++){for(int j=i;j<v.size();j++){int x=v[i],y=v[j];if(sum[x-1]+mul[y]/mul[x-1]+sum[n]-sum[y]>mx){mx=sum[x-1]+mul[y]/mul[x-1]+sum[n]-sum[y];l=x,r=y;}}}if(l==-1) l=1,r=1;printf("%d %d\n",l,r);
}

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

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

相关文章

【题解】2596. 检查骑士巡视方案

题解&#xff1a; class Solution {int n,m;bool st[100][100];int flag;int dx[8]{-1,-2,-2,-1,1,2,2,1};int dy[8]{-2,-1,1,2,2,1,-1,-2}; public:bool checkValidGrid(vector<vector<int>>& grid) {m grid.size();n grid[0].size();dfs(grid,0,0,0);ret…

运行时链接

基本概念 运行时链接&#xff0c;是在程序运行时&#xff08;而非编译时或加载时&#xff09;将程序代码与其依赖的库代码进行链接的过程。动态链接在程序启动时或实际运行过程中通过API函数完成。这种方式的主要优点是它允许程序在运行时加载和卸载不同的库模块&#xff0c;从…

在Python中解决自定义类型比较的问题

1 问题原因 在Python编程中&#xff0c;当我们尝试对自定义类型进行比较时&#xff0c;可能会遇到这样的错误&#xff1a;TypeError: < not supported between instances of User and User 这个错误的原因是Python不知道如何对你的自定义类型进行比较。为了解决这个问题&a…

redisson常用api

redisson提供了很多对象类型的api&#xff0c;下面介绍下一些常用的对象api。 RBucket 可操作任何对象的api&#xff0c;前提是要确定好泛型&#xff0c;方法比较少。大小限制为512Mb。 RBucket<AnyObject> bucket redisson.getBucket("anyObject");bucket…

vue3中的吸顶导航交互实现 | VueUse插件

目的&#xff1a;浏览器上下滚动时&#xff0c;若距离顶部的滚动距离大于78px&#xff0c;吸顶导航显示&#xff0c;小于78px隐藏。使用vueuse插件中的useScroll方法​​​​​​​和动态类名控制进行实现 1. 安装 npm i vueuse/core 2. 获得滚动距离 项目中导入&#xff0…

@Resource 注入为null 的解决方法

Resource Resource可以用于注入对象 一般我们在编码中都会使用Resource来注入一个实例对象&#xff0c;但是特殊情况下可能会是null。 这个时候可以用SpringUtil.getBean()来手动获取 代码示例 private HbaseProperties hbaseProperties SpringUtil.getBean(HbasePropertie…

在python程序中用windows的icon

这个exe的弹窗功能会使用到一个ico文件&#xff0c;如图&#xff1a; 用软件GreenfishIconEditorProPortable或者使用在线软件将你需要的图片制作成windows的icon 用程序将ico文件生成文本文件 import base64picture_name "logo.ico" open_pic open("%s…

【100天精通Python】Day56:Python 数据分析_Pandas数据清洗和处理(删除填充插值,数据类型转换,去重,连接与合并)

目录 数据清洗和处理 1.处理缺失值 1.1 删除缺失值&#xff1a; 1.2 填充缺失值&#xff1a; 1.3 插值&#xff1a; 2 数据类型转换 2.1 数据类型转换 2.2 日期和时间的转换&#xff1a; 2.3 分类数据的转换&#xff1a; 2.4 自定义数据类型的转换&#xff1a; 3 数…

神经反馈设备使用感受2:采集Muse的EEG原始数据(转自知乎)

神经反馈设备使用感受2&#xff1a;采集Muse的EEG原始数据 转自知乎&#xff0c;内容很好&#xff0c;怕之后找不到 想了一下&#xff0c;单写一部分来介绍一下Muse在数据采集方面的操作。同时也解释一下我自己的EEG数据是从哪里采集的。 关于Muse EEG数据的精度&#xff0c;在…

vue2实现自定义主题webpack-theme-color-replacer

需求&#xff1a;根据element的自定义主题色&#xff0c;之后改变element的全局所有颜色&#xff0c;解决页面刷新后主题色失效问题&#xff0c;这个需要把颜色存入到浏览器的存储中&#xff0c;如果换个浏览器就得重新选择了哈&#xff0c;如果需要在不同的浏览器保持一致的主…

将AI融入到SEO中—基于Python的实现思路

在当今数字化时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;对于网站和在线业务的成功至关重要。然而&#xff0c;随着人工智能&#xff08;AI&#xff09;技术的迅猛发展&#xff0c;我们可以利用它来提升SEO策略并取得更好的效果。本文将介绍如何通过使用Python编…

WordPress wp-file-manager 文件上传漏洞 CVE-2020-25213

1.漏洞复现 WordPress 6.2 插件&#xff1a;wp-file-manager 6.0&#xff0c;File Manager (advanced view) – WordPress plugin | WordPress.org &#xff08;https://wordpress.org/plugins/wp-file-manager/advanced/&#xff09; 复现 后台&#xff0c;安装、启动插件…

分布式系统第五讲:分布式事务及实现方案

分布式系统第五讲&#xff1a;分布式事务及实现方案 事务是一个程序执行单元&#xff0c;里面的所有操作要么全部执行成功&#xff0c;要么全部执行失败。而分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本…

(二)程序语言设计基础

目录 1. 程序设计语言概述 1.1 基本概念 1.1.1 低级语言和高级语言 1.1.2 编译程序和解释程序 1.1.3 程序设计语言的定义 1.1.4 程序设计语言的分类 1.2 程序设计语言的基本成分 1.2.1 数据成分 1.2.2 运算成分 1.2.3 控制成分 1.2.4 传输成分 1.2.5 函数 2. 语言…

【LeetCode: 1462. 课程表 IV:拓扑排序+图+广度优先搜索】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

现场直击 | 国台国标·中秋礼酒惊艳闪耀酒博会

以酒为媒&#xff0c;以酒会友。 9月9日&#xff0c;以“展示全球佳酿&#xff0c;促进开放合作”为主题的第12届中国&#xff08;贵州&#xff09;国际酒类博览会&#xff08;以下简称“贵州酒博会”&#xff09;在贵阳国际会议展览中心重磅开幕&#xff0c;本届贵州酒博会吸…

狼的传说小游戏

欢迎来到程序小院 狼的传说 玩法&#xff1a; 鼠标左键选择能防御、战斧、风暴3%、滚石10%、藤曼5%、冰柱5%、飞跃10%、三叶草20%、钢叉15%&#xff0c;消灭所有敌人&#xff0c;不同关卡不同敌人&#xff0c;快去闯关消灭敌人吧^^。开始游戏https://www.ormcc.com/play/gameS…

MySQL——读写分离

简介 读写分离&#xff0c;基本的原理是让主数据库处理事务性增、改、删操作&#xff08;INSERT、UPDATE、DELETE&#xff09;&#xff0c;而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。一般来说都是通过 主从复制&#xff…

得帆云“智改数转,非同帆响”-AIGC+低代码PaaS平台系列白皮书,正式发布!

5月16日下午&#xff0c;由上海得帆信息技术有限公司编写&#xff0c;上海市工业互联网协会指导的以“智改数转&#xff0c;非同帆响”为主题的《得帆云 AIGC低代码PaaS平台系列白皮书》正式在徐汇西岸国际人工智能中心发布。 本次发布会受到了上海市徐汇区政府、各大媒体和业内…

如何实现一个数据库的 UDF?图数据库 NebulaGraph UDF 功能背后的设计与思考

大家好&#xff0c;我是来自 BOSS直聘的赵俊南&#xff0c;主要负责安全方面的图存储相关工作。作为一个从 v1.x 用到 v3.x 版本的忠实用户&#xff0c;在见证 NebulaGraph 发展的同时&#xff0c;也和它一起成长。 BOSS直聘和 NebulaGraph 关于 NebulaGraph 在 BOSS直聘的应…