链接:https://ac.nowcoder.com/acm/contest/548/A
来源:牛客网

题目描述

这次 Tachibana Kanade 来到了一个神奇的学校参观,她发现了一些有趣的事情。
这个学校的所有人脾气都十分的古怪:每个人都有两个属性 aiai 和 bibi,每个人都想和除他以外所有 j 满足 ai+bi=ajai+bi=aj 的人搞好关系。我们定义一对人的关系是好的,当且仅当这两个人互相想与对方搞好关系。
现在给出这 n 个人的属性,Tachibana Kanade 想知道,这些人会不会有至少一对人的关系是好的。

输入描述:

第一行输入一个整数 n ,表示人的个数。接下来 n 行,每行两个整数 ai,biai,bi,意义如「题目描述」所述。

输出描述:

如果存在至少一对人的关系是好的,那么输出 `YE5`,否则输出 `N0`。
示例1

输入

复制

5
2 -10
3 10
0 5
5 -5
10 1

输出

复制

YE5

说明

第三个和第四个人关系好。

简单的枚举题。

直接 O(n2)O(n2) 枚举每对人判断是否成立即可。

注意到输出的字符串为 YE5 和 N0 即可通过此题。

#include<iostream>
using namespace std;
int a[105][3];
int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>a[i][0]>>a[i][1];a[i][2]=a[i][0]+a[i][1];}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){if(i!=j){if(a[i][2]==a[j][0]&&a[j][2]==a[i][0]){cout<<"YE5"<<endl;return 0;}}}}cout<<"N0"<<endl;return 0;
} 

链接:https://ac.nowcoder.com/acm/contest/548/B
来源:牛客网

题目描述

立华奏在学习初中数学的时候遇到了这样一道大水题:
“设箱子内有 n 个球,其中给 m 个球打上标记,设一次摸球摸到每一个球的概率均等,求一次摸球摸到打标记的球的概率”
“emmm...语言入门题”
但是她改了一下询问方式:设最终的答案为 p ,请输出 p 小数点后 K1K1 到 K2K2 位的所有数字(若不足则用 0 补齐)

输入描述:

第一行一个整数 T,表示有 T 组数据。接下来每行包含四个整数 m,n,K1,K2m,n,K1,K2,意义如「题目描述」所示。

输出描述:

输出 T 行,每行输出 K2−K1+1K2−K1+1 个数,表示答案。注意同行的数字中间不需要用空格隔开。
示例1

输入

复制

5
2 3 2 3
1 7 1 7
2 5 1 3
12345 54321 3 10
12345 54321 100000 100010

输出

复制

66
1428571
400
72601756
78428232175

备注:

1≤m≤n≤109,1≤K1≤K2≤1091≤m≤n≤109,1≤K1≤K2≤109;0≤K2−K1≤105,T≤200≤K2−K1≤105,T≤20。作者:RainAir链接:https://ac.nowcoder.com/discuss/173818来源:牛客网

简单的模拟题。

题目等价于求分数 ab 的小数点后 K1到 K2位的所有数字。

直接暴力模拟除法过程是肯定会 T 的,但是我们发现我们不用从头开始模拟,只需要从 K1K1 位开始模拟就可以了。

直接通过快速幂+取模算出第 K1 位的数字。然后我们发现 K2−K1≤105,所以暴力枚举除法过程就可以。

时间复杂度 O(n)。

因为m<n,小数点后第i位是(m*10^i)%n先快速幂求到x-1位,再枚举就可以了,我又傻逼了
#include<iostream>
using namespace std;
long long int n,m,t,x,y;
long long quick(long long a,long long b,long long c){long long ans=m;while(b){if(b&1) ans=(ans*a)%c;a=(a*a)%c;b>>=1;}return ans;
}
int main(){cin>>t;while(t--){cin>>m>>n>>x>>y;m=quick(10%n,x-1,n);for(x;x<=y;x++){m*=10;cout<<m/n;m%=n;}cout<<endl;}return 0;
}

链接:https://ac.nowcoder.com/acm/contest/548/C
来源:牛客网

题目描述

立华奏是一个刚刚开始学习 OI 的萌新。
最近,实力强大的 QingyuQingyu 当选了 IODS 9102 的出题人。众所周知, IODS 是一场极其毒瘤的比赛。为了在这次比赛中取得好的成绩,立华奏决定学习可能考到的每一个知识点。
在 QingyuQingyu 的博客中,立华奏得知这场比赛总共会考察选手 n 个知识点。此前,立华奏已经依靠自学学习了其中 k 个知识点。接下来,立华奏需要学习其他的知识点,每学习一个单独的知识点,需要消耗的时间为 TiTi 天。同时,某些知识点之间存在联系,可以加速学习的过程。经过计算,立华奏一共发现了其中 m 种联系,第 i 种联系可以表示为(Xi,Yi,Hi)(Xi,Yi,Hi),其含义为“在掌握了第 XiXi 个知识点和第 YiYi 个知识点中任意一个后,学习 HiHi 天即可掌握另一个知识点”。
留给立华奏的时间所剩无几,只有 t 天,因此,她想知道自己能不能在这 t 天内学习完成所有的知识点。

输入描述:

本题输入量较大,请注意使用效率较高的读入方式输入的第一行包含四个整数 n, m, k, t,含义见上所述。
接下来一行,包含 n 个整数,依次表示 T1,T2,⋯,TnT1,T2,⋯,Tn
接下来一行,包含 k 个整数,表示立华奏已经学习过的知识点。如果 k=0,则此处为一空行。接下来 m 行,每行 3 个整数 Xi,Yi,HiXi,Yi,Hi,描述一种联系。

输出描述:

如果立华奏能够学习完所有的知识点,输出一行 Yes。否则输出 No
示例1

输入

复制

4 3 2 5
4 5 6 7
2 3
1 2 3
1 3 2
3 4 2

输出

复制

Yes

说明

立华奏已经学习过了第 2, 3 个知识,由第 2 个关系,立华奏可以花 2 天学会知识点 1,在由关系 3, 立华奏可以 2 天学会知识点 4,因此总共需要花费 4 天,可以完成任务。

示例2

输入

复制

5 4 0 12
4 5 6 7 11 2 3
1 3 2
3 4 2
1 5 233

输出

复制

Yes

说明

立华奏比较菜,因此什么都没有学过。她可以选择先花 4 天的时间学会知识点 1。然后根据关系 1, 2,分别花 3, 2 天的时间学会知识点 2, 3,再根据关系 3,花 2 天的时间学会知识点 4。然后,她再单独学习知识点 5,花费1天,总共花费了 12 天 ,可以完成任务。

请注意,虽然关系 4 允许立华奏在知识点 1 的基础上学习知识点 5,但需要的时间比单独学习还要多,因此立华奏不会在知识点 1 的基础上学习知识点 5.

备注:

0⩽k⩽n⩽106,m⩽5×106,t⩽1018,Ti,Hi⩽103

作者:RainAir链接:https://ac.nowcoder.com/discuss/173818来源:牛客网

C. Review还不会,先标记一下

简单的图论题。

首先,我们考虑最简单的情况,即k=0k=0。然后,为了判定答案是否合法,我们考虑求出学完所有知识点的最小用时。考虑到一个知识点yy只能被下列两种途径学会:

  • 单独学习这一个知识点,耗时TyTy
  • 从某个已经学会的知识点xx中学习得来,耗时HxyHxy

如果我们新建一个“虚拟知识点”GG,并假设它刚开始便已经学会。那么,我们可以将第一种方案转化为第二种方案,即HGyHGy。而学会所有知识点,本质上就是将所有知识点联通,即求出原图的最小生成树即可。

下面,我们再考虑k>0k>0。我们可以再次使用虚拟节点GG,如果这个知识点初始时就已经学过,则只需要将其向虚拟节点GG连接一条边权为0的边,即可达到要求。

时间复杂度O((m+k)log(m+k))O((m+k)log⁡(m+k))。

当然这时肯定会有人怒斥出题人“你的题怎么卡常啊”。

std写道这一步已经通过了,但考虑到一些选手可能没有写读入优化的习惯,因此我们可以进一步优化。

  1. 注意到每条边的边权在103103以内,因此我们可以将Kruskal算法中的快速排序改为计数排序,砍掉排序的一个log,
  2. 结合并查集的路径压缩与启发式合并,可以O((m+k)α(m+k))O((m+k)α(m+k))解决此题。
  3. 注意到如果在计算某一条边时,你所消耗的时间已经超过了 TT,那么可以直接跳过。
  4. 同理,注意到 t⩽1018t⩽1018 ,但是如果 tt 超过了 103×边数103×边数, 答案一定为 Yes

实际只需要第2个优化,便可以轻松通过此题。

#include<bits/stdc++.h>
using namespace std;
#define F(i,a,b) for(int i=a;i<=(b);++i)
#define F2(i,a,b) for(int i=a;i<(b);++i)
#define dF(i,a,b) for(int i=a;i>=(b);--i)
#define MN 1000005
#define ll long long
#define MM 6000005
int n,m,k,c;ll t,ans;
int T[MN],f[MN];
int ff(int x){return f[x]?f[x]=ff(f[x]):x;}
struct edg{int u,v,w;}e[MM];
int read()
{ll x=0;char s=getchar();while(s<'0'||s>'9'){s=getchar();}while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();}return x;
}
int main(){int x,y,z;n=read(),m=read(),k=read();scanf("%lld",&t);F(i,1,n)T[i]=read();F(i,1,k)T[read()]=0;F(i,1,n)e[++c]=(edg){n+1,i,T[i]};F(i,1,m)x=read(),y=read(),z=read(),e[++c]=(edg){x,y,z};sort(e+1,e+c+1,[](edg i,edg j){return i.w<j.w;});F(i,1,c){int u=ff(e[i].u),v=ff(e[i].v);if(u!=v){f[u]=v;ans+=e[i].w;}}puts(ans<=t?"Yes":"No");return 0;
}

链接:https://ac.nowcoder.com/acm/contest/548/D
来源:牛客网

题目描述

立华奏是一个天天打比赛的 OIer。
有一天,立华奏正在打一场比赛,菜爆了的立华奏依靠运气解决了大部分的题目,还有最后一道题目没有解决。

这道题目给定了两个长度为 n 的序列 {ai}, {bi},要求两个长度为 n 的 0/1 序列 {ci}, {di},最大化:
min{∑ni=1aici,∑ni=1bidi}−∑ni=1ci−∑ni=1dimin{∑i=1naici,∑i=1nbidi}−∑i=1nci−∑i=1ndi

输入描述:

输入的第一行包含一个整数 n。接下来一行,包含 n 个整数,表示序列{ai}接下来一行,包含 n 个整数,表示序列{bi}

输出描述:

输出的第一行包含一个整数,表示式子的最大值。接下来一行,包含 n 个整数,表示你构造的序列 {ci}接下来一行,包含 n 个整数,表示你构造的序列 {di}如果有多种构造方法,你只需要输出任意一种。
示例1

输入

复制

3
100000 -100000 100000
-100000 100000 -100000

输出

复制

99998
0 0 1
0 1 0

备注:

n⩽105,|ai|,|bi|⩽105

作者:RainAir链接:https://ac.nowcoder.com/discuss/173818来源:牛客网

D.Sequence不会啊

简单的贪心题。最后一个测试点专门卡了一下n=0n=0可能让部分dalao的体验极差……出题人在此谢罪qwq

题目的含义其实是可以从{a},{b}{a},{b}中选出若干个数,选择一个数代价为11,你的利益为你{a}{a}和{b}{b}利益中的最小值。最大化你的利益。

我们记A=∑ni=1aici,B=∑ni=1bidi,K=∑ni=1ci+∑ni=1diA=∑i=1naici,B=∑i=1nbidi,K=∑i=1nci+∑i=1ndi,答案为min{A,B}−Cmin{A,B}−C

一个显然的贪心策略,是将两个序列从大到小排序,然后考虑A,BA,B中较小的那一个,从它所对应的序列(AA对应aiai,BB对应bibi)中选出最大的没有被选的一个数,将它选中,直到我们找不到一个大于11的数。

下面我们来考虑这种贪心的正确性。假设我们在{ai}{ai}中选择了k1k1个数ai1,ai2,⋯,aik1ai1,ai2,⋯,aik1,{bi}{bi}中选择了k2k2个数bj1,bj2,⋯,bjk2bj1,bj2,⋯,bjk2,记这种取数方案为G(I,J)G(I,J),其中I={i1,i2,⋯,i

转载于:https://www.cnblogs.com/yfr2zaz/p/10660454.html

牛客练习赛43 回顾相关推荐

  1. 牛客练习赛43 Tachibana Kanade Loves Probability(快速幂)

    链接:https://ac.nowcoder.com/acm/contest/548/B 来源:牛客网 题目描述 立华奏在学习初中数学的时候遇到了这样一道大水题: "设箱子内有 n 个球,其 ...

  2. 牛客练习赛 43 CTachibana Kanade Loves Review 最小生成树(Java版失败)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...

  3. 牛客练习赛43 Tachibana Kanade Loves Review C(最小生成树Kruskal)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 QingyuQingyu  ...

  4. 牛客练习赛 43 F Tachibana Kanade Loves Game 容斥原理(Java版ac)

    链接:https://ac.nowcoder.com/acm/contest/548/F 来源:牛客网 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始 ...

  5. 牛客练习赛 43 CTachibana Kanade Loves Review 线性做法,贪心(Java版成功)

    链接:https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IO ...

  6. 牛客练习赛43 c Tachibana Kanade Loves Review

    题目链接 题目描述 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 Qingyu 当选了 IODS 9102 的出题人.众所周知, IODS 是一场极其毒瘤的比赛.为了在这次比赛中取得好的 ...

  7. 牛客练习赛43 f Tachibana Kanade Loves Game

    题目链接 题目描述 立华奏是一个天天打比赛的萌新. 省选将至,萌新立华奏深知自己没有希望进入省队,因此开始颓废.她正在颓废一款名为<IODS 9102>的游戏. 在游戏中,立华奏拥有 k ...

  8. 牛客练习赛81 E. 小 Q 与函数求和 1( “简单莫比乌斯反演” ,欧拉函数性质)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 牛客练习赛81 E. 小 Q 与函数求和 1( "简单莫比乌斯反演" ) Prob ...

  9. 解题报告(一)C、(牛客练习赛41 F)简单数学题(数论 + FWT)(3.5)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

最新文章

  1. JVM内存泄漏检测与处理
  2. Linux Priority VS Nice
  3. 【Android 安全】DEX 加密 ( DEX 加密使用到的相关工具 | dx 工具 | zipalign 对齐工具 | apksigner 签名工具 )
  4. ASP.NET Page和Response 输出js的区别
  5. sql 2005分区表
  6. 跟我一起学Redis之加个哨兵让主从复制更加高可用
  7. 计算机网络结构示意图,计算机网络原理-计算机网络体系结构.pdf
  8. Maven实战(Maven+Nexus建立私服【Linux系统】)
  9. Jupyter修改默认文件保存路径
  10. [UOJ386]鸽子固定器
  11. PDF虚拟打印机的功能详解和使用方法
  12. linux开机自检时间长,Linux 开机自检的设置(tune2fs和fsck)
  13. 各种蜂蜜功效大全(收藏)
  14. win10专业版没有触摸板选项_win10鼠标光标不见了触摸板没反应的具体解决办法...
  15. QTP破解方法,插件延长使用时间方法,及mgn-mqt82.exe下载
  16. vue echart地图划分大区
  17. 搭建8086汇编语言学习环境——dosbox
  18. 数据分析中,到底什么是特征 feature
  19. LeetCode 287---Find the Duplicate Number
  20. 2018-11-05-mqtt-mosquitto系列01之编译安装启动

热门文章

  1. 15 个优秀开源的 Spring Boot 学习项目,一网打尽!
  2. AWS Boto3 使用介绍(一)
  3. Python3,9行批量提取PDF文件的指定内容,这种操作,保证人见人爱....
  4. java根据ip地址获取城市地域信息
  5. 服务器共享出去的文件显示脱机,Windows7中共享文件夹的脱机设置
  6. 计算机一级msoffice考试操作题教程,2014年计算机一级考试MSOffice第三章考点解析 10...
  7. 从懵懂走向成熟,证明属于自己的征程
  8. iPad2通过DFU模式刷机
  9. 中兴通讯能制造服务器吗,中兴通讯发布边缘计算服务器 实现边缘人工智能
  10. Unity URP Shader Graph Unit 阴影 light Atten