A

link



很简单

遍历,判断模\(k\)是否为\(0\),如果为\(0\),输出\(a_i/k\)。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

int n,k;
int a[105]; signed main(){ cin >> n >> k; for(int i = 1;i <= n;++ i){
cin >> a[i];
if(a[i]%k == 0) cout << a[i]/k << " ";
} return 0; }

B

link



前置知识:\(map\)

\(map\)类似数组,如\(a_b\),\(a\),\(b\)均可为任何类型,如字符串,大概意思就是,\(a\)对应\(b\)。

遍历每一个子串,看看这个子串在前面出没出现过,没出现过,答案加\(1\)。

怎样遍历子串。

首先两重循环,枚举子串的左右边界,在用一重循环,枚举在当前边界内每一个字符,组成子串。

怎样判断子串出没出过。

使用\(map\),看看\(map\)的当前字符串是否为\(1\),是,出现过,否,没出现过,答案加一,赋为\(1\),即出现过了。

点击查看代码
#include<bits/stdc++.h>

using namespace std;

char s[105];
int n;
string t;
map<string,int> mp;
int ans; signed main(){ cin >> s+1;
n = strlen(s+1); for(int i = 1;i <= n;++ i){
for(int j = i;j <= n;++ j){
t.clear();
for(int k = i;k <= j;++ k){
t += s[k];
}
if(!mp[t]) mp[t] = 1,ans++;
}
} cout << ans; return 0; }

C

link



首先,把每一个对应到第一周的上班日和第二周的休息日中。

那么只需要往后移动,把第一周上班日中的全移到第二周休息日,同时第二周休息日中的不能移出去。

找到这些中最大的和最小的(改后的数),如果大于休息日的时间,即会移出去,不可以。

还有一种方案,我们可以从前面截一段放到后面再判断。

点击查看代码
#include<bits/stdc++.h>

#define int long long

using namespace std;

int n,a,b;
int p[200005];
int d,ans = 1e18;
int ma,mi = 1e18; signed main(){ cin >> n >> a >> b;
for(int i = 1;i <= n;++ i){
cin >> d;
d %= (a+b);
if(d == 0) d = a+b;
if(d <= a){
d += a+b;
}
ma = max(ma,d);
mi = min(mi,d);
p[i] = d;
} sort(p+1,p+1+n); for(int i = 1;i < n;++ i){
ans = min(ans,a+b-p[i+1]+p[i]+1);
} ans = min(ans,ma-mi+1);
if(ans <= a) cout << "Yes";
else cout << "No"; return 0; }

D

link



首先,我们定义一个\(cy\)为\(y\)中\(1\)的个数。

则,如果\(cy>a+b\),肯定不行。

如果\(cy=a+b\),把\(a\)个\(1\)给第一个数,\(b\)个\(1\)给第二个数,要对应到位置,即可。

如果\(cy<a+b\),\(a\)和\(b\)剩的是单数,不可以,双数可以。

双数的话,首先,在\(a\)和\(b\)中把多出来的平分去掉,剩下的把\(a\)个\(1\)给第一个数,\(b\)个\(1\)给第二个数,找够第一个和第二个数都是\(0\)的位置都赋成\(1\),即可。

注意不超过\(2^{60}\)。

点击查看代码
#include<bits/stdc++.h>

#define int long long

using namespace std;

int a,b,c,cy;
int ca[65];
int aa[65],ba[65]; signed main(){ cin >> a >> b >> c; int t = c;
for(int i = 0;i <= 59;++ i){
if(t&1) ca[i] = 1,cy++;
t >>= 1;
} if(cy > a+b||(a+b-cy)%2 != 0){
cout << -1;
return 0;
} int mu = (a+b-cy)/2;
a -= mu,b -= mu; for(int i = 0;i <= 59;++ i){
if(ca[i]){
if(a) aa[i] = 1,a--;
else if(b) ba[i] = 1,b--;
}
} if(a < 0||b < 0){
cout << -1;
return 0;
} for(int i = 0;i <= 59;++ i){
if(!ca[i]){
if(mu){
aa[i] = 1;
ba[i] = 1;
mu--;
}
}
} if(mu){
cout << -1;
return 0;
} int y,e,w;
y = e = 0ll;
w = 1ll; for(int i = 0;i <= 59;++ i){
if(aa[i]) y += w;
if(ba[i]) e += w;
w *= 2;
} cout << y << " " << e << endl; return 0; }

随机推荐

  1. 如何启动?win11下的Linux子系统【4种方法】

    实验室的开发环境在Linux操作系统下,时不时就需要打开Linux环境去操作,而且需要本地编译或者远程SSH.这时候window和Linux切换很不方便.本科的做法就是window+虚拟机的Linux ...

  2. C#简易商城收银系统v1.0(2-1)

    C#简易商城收银系统v1.0(2-1) 当初: 面向编程对象的好处及应用简单工厂模式(继承,多态) 现在: 制作一个简易的收银窗体应用程序 可以参考之前的 计算器 随笔 创建窗体程序 客户端代码 us ...

  3. 用Yacht管理docker容器

    今天是六一儿童节,祝大小朋友们节日快乐! 从今天开始起,防范区的上海市民可以自由出入小区了.始于愚人节,终于儿童节,整整两个月时间,终于迎来了期盼已久的自由和正常. 周一上午的的核酸可能是我们最后一次 ...

  4. 【论文笔记】R-CNN系列之论文理解

    [深度学习]总目录 RCNN全称region with CNN features,即用CNN提取出Region Proposals中的featues.RCNN系列论文(R-CNN,Fast R-CNN ...

  5. uniapp 跳转指定的tab导航页面

    考察的知识点:1.uniapp的页面跳转方法:uni.navigateTo2.页面跳转传值的方法:'?名称=值' 的方式3.参数的接收 onload(option){} 第一个页面的写法: toCom ...

  6. 获得centos7网络yum源

    获得centos73网络yum源 wget http://mirrors.163.com/.help/CentOS7-Base-163.repo 网易 wget -O /etc/yum.repos.d ...

  7. go随笔

    1)声明在函数内部,是函数的本地值,类似private 2)声明在函数外部,是对当前包可见(包内所有.go文件都可见)的全局值,类似protect 3)声明在函数外部且首字母大写是所有包可见的全局值, ...

  8. Javascript高级程序设计第七章 | ch7 | 阅读笔记

    迭代器与生成器 在软件开发领域,"迭代"的意思是按照顺序反复多次执行一段程序 理解迭代 在JavaScript中,计数循环就是最简单的迭代 但是这种迭代有点问题: 1. 迭代之前需 ...

  9. org.springframework.beans.BeanUtils属性赋值 Date类型处理转换为LocalDateTime, Date不能直接赋值给LocalDateTime

    Date createTime = book.getCreateTime(); Date updateTime = book.getUpdateTime(); //属性值处理 BeanUtils.co ...

  10. LocalDateTime日期格式化和指定日期的时分秒

    LocalDateTime日期格式化和指定日期的时分秒 package com.example.core.mydemo.date; import java.time.LocalDate; import ...