博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
zcmu-新生宝贝们的第五次试水题解
阅读量:3901 次
发布时间:2019-05-23

本文共 2673 字,大约阅读时间需要 8 分钟。

【题解】

题意么就是寻找一对a,b满足

第二条的意思就是b整除a,a%b==0

已经有的同学发现了,a=b=x的时候是符合题意的,但是还要考虑一种情况就是x=1的时候,a*b=x,a/b=x,不符合。

【代码】

#include
int main(){ int x; scanf("%d",&x); if(x==1) printf("-1"); else printf("%d %d",x,x);}

一看么数据就100,直接暴力跑也行。

【代码】

#include
int main(){ int x; scanf("%d",&x); for(int i=1;i<=x;i++) for(int j=i;j<=x;j+=i) { if(i*j>x&&j/i

 【题解】

题意么就是给定一个长度为n的序列,然后做k次操作,每次操作么选择非0最小值让剩下所有非0的数减去最小值,并输出这个最小值,如果剩下都是0么就输出0.

如果直接每次循环寻找最小值再遍历减去最小值的话是会超时的,这里做个小优化,定义一个变量存储需要减去的最小值之和,每次做判断即可。

【代码】

#include
#include
using namespace std;int main(){ int n,k,a[100005]; scanf("%d%d",&n,&k); for(int i=0;i

 【题解】

题意么就是给定一个长度为n的序列,要求执行给定操作1或者2不超过n+1次使得序列变成一个上升序列。

操作一加上一个数,操作二取模。通过取模我们可以把一个数变成任意一个不大于它本身的数,因此我们考虑把序列变成类似1,2,3,4,5...这种序列,a[i]∈[0,1e5],为了防止a[i]<i取模不到i,我们可以加上一个比较大的数,然后每个数对a[i]-i取模即得到i。

【代码】

#include
int main(){ int n,a[2010]; scanf("%d",&n); for(int i=1;i<=n;++i) scanf("%d",&a[i]); printf("%d\n1 %d 500000\n",n+1,n); for(int i=1;i<=n;++i) a[i]+=500000; for(int i=1;i<=n;++i) printf("2 %d %d\n",i,a[i]-i); return 0;}

 【题解】

题意:n个人选择k个工作,第i个人选择工作a[i],并且第i个人有不高兴程度b[i],为了使得每个工作都有人做,需要你去劝说部分的人改变工作意愿,这时候总的不高兴程度就会增加,输出使得每个工作岗位都有人做的总的最低不高兴程度。

考虑一点,我们需要改变多少人呢?记录下不止一个人有意愿的岗位的人数-1,与n-k的差,即需要更改意愿的人数。

首先,按不高兴程度升序排序,然后按顺序取需要更改意愿的人数个不高兴程度并求和输出。

【代码】

#include 
#include
using namespace std;#define maxn 100000#define ll long longstruct p{ int a,b;}f[maxn+5];bool cmp(p x,p y){ return x.b
1) vis[f[i].a]--,c--,ans+=f[i].b; } printf("%lld\n",ans);}

【题解】

题意:输出给定长度为n的字符串出现k次的最短字符串。

思路:寻找最长相同前后缀,除第一次的输出外都舍掉前缀再输出即为最短。

【代码】

#include 
#include
using namespace std;int main(){ int n,k; string a; cin>>n>>k; cin>>a; int l=n-1; string t1=a.substr(0,l); string t2=a.substr(n-l,l); while(t1!=t2&&l>0) { l--; t1=a.substr(0,l); t2=a.substr(n-l,l); } cout<

【题解】

题意:给定一个升序序列,输出最长连续满足ai<=ai-1*2的子序列长度。

思路:因为给定的是升序序列,问题就变的很简单了。遍历判断符合要求的子序列长度并更新答案即可。

【代码】

#include 
#define N 200000int main(){ int n,ans=0,a[N+5]; scanf("%d",&n); for(int i=1,l=1;i<=n;i++) { scanf("%d",&a[i]); if(a[i-1]*2
ans) ans=i-l+1; } printf("%d\n",ans);}

 【题解】

字符串的查找替换。

【代码】

#include 
#include
using namespace std;int main(){ string a; while(getline(cin,a)) { int l=a.size(); for(int i=0;i
='A'&&b[j]<='Z') b[j]=b[j]-'A'+'a'; if(b=="marshtomp") { a=a.replace(a.begin()+i,a.begin()+i+9,"fjxmlhx"); i+=7; } } cout<
<

后三题:

转载地址:http://lyben.baihongyu.com/

你可能感兴趣的文章
运算符重载参数的顺序对运算是否有影响
查看>>
什么时候要用虚析构函数?
查看>>
序列化、反序列化与jsoncpp学习
查看>>
同步/异步与阻塞非阻塞的关系
查看>>
epoll模型讲解/源码分析
查看>>
ELF格式与bss段
查看>>
java继承 long和float小记点
查看>>
记录几点在开发中遇到的问题 2015-7-28 (会更新)
查看>>
网银在线的异步操作代码示意图
查看>>
火狐Firefox浏览器安装Selenium_IDE的步骤以及其使用规则
查看>>
记录运行代码的时间长短
查看>>
关于yii2的一些知识的学习笔述
查看>>
用纯php实现MVC框架,文件目录模仿yii2
查看>>
新开发的体重管理项目----用纯php模仿yii2框架建立的
查看>>
JavaScript面向对象编程指南 的笔记
查看>>
在 2016 年做 PHP 开发是一种什么样的体验?(一)
查看>>
PHP获取客户端的IP
查看>>
从头开始学习yii2---1.搭建yii2开发环境
查看>>
从头开始学习yii2---3.语言包的配置
查看>>
yii2-表单验证的一些规则
查看>>