Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
题目列表
- 1,A. Divide and Multiply-Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
- 2,B. William the Vigilant-Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
- 3,C. Complex Market Analysis-Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
1,A. Divide and Multiply-Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
题意:n个整数组成的数组。选择两个任意不相同的元素a,b,使a/2,b * 2.(a必须使2的倍数)可以进行上面的操作任意次数,求经 过操作后的数组的所有元素的乘积最大是多少。
题解:num=0。从第一个元素开始,如果取余2等于零,就将该数除2,并且num++。将进行操作过的数组进行排序,找到最大的元素, 并且乘num次2,并输出。
解释:奇数没有办法除2只能用来乘。一个偶数可以看成是以及操作过的多个2乘一个奇数(比如8就是3个2乘1),把所有的2都提取出 来,最后都乘到一个最大的奇数上去就可以了。
代码:
#include<iostream>
#include<algorithm>using namespace std;
#define ll long long
ll n,m;
ll a[20];
int main()
{int t;cin>>t;while(t--){cin >> n;ll sum=0,i2; for(int i1=1;i1<=n;i1++)cin >> a[i1];sort(a+1,a+1+n);i2=0;for(int i1=1;i1<=n;i1++){while(a[i1]>=2&&a[i1]%2==0) {sum++;a[i1]/=2;}}sort(a+1,a+n+1);for(m=1;m<=sum;m++) a[n]*=2;sum=0;for(m=1;m<=n;m++) sum+=a[m];cout <<sum<< endl;}return 0;
}
2,B. William the Vigilant-Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
题意:给出n,m和一个字符串s。n是字符串的长度,m是问题的数量。每个问题有两个参数,k,c,意思是把x中第k个字符换成c。每 个问题输出一个答案ans。ans表示x中abc子串的数量。
题解:首先求出原字符串x中abc子串的数量num。当输入每个问题的时候,先判断是否替换值和被替换值相等,如果相等,直接输出 num。不相等,判断被替换的字符是子串abc中的一个(如何判断看解释),如果是则num++输出。如果不是则判断是否替换后能够形 成一个abc子串。
解释:判断原字符是abc子串中的一个,有三个if语句,x[k-3]= =‘a’&&x[k-2]= =‘b’&&x[k-1]= =‘c’ ,x[k-2]= =‘a’&&x[k-1]= =‘b’&&x [k]= =‘c’,x[k-1]= =‘a’&&x[k]= =‘b’&&x[k+1]= =‘c’。判断形成新的abc子串也有三个if,x[k-3]= =‘a’&&x[k-2]= =‘b’&&x[k-1]= =‘c’ ,x[k-2]= =‘a’&&x[k-1]= =‘b’&&x[k]= =‘c’,x[k-1]= =‘a’&&x[k]= =‘b’&&x[k+1]==‘c’。因为abc子串是互相独立的,所以增加或者是 减少一个对后面的无影响。
代码:
/***@author wrcccccccc */
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>using namespace std;string x,y="abc";
int n,m;
int f()
{int i1,i2;int ans=0;
// cout<<x<<endl;if(x.size()<=2) return ans;for(i1=0;i1<x.size()-2;i1++){if(x[i1]=='a'&&x[i1+1]=='b'&&x[i1+2]=='c') {ans++;i1+=2;}}return ans;
}
int main()
{// freopen("1.txt","r",stdin);int i1,i2,i3,i4,i5;int k;cin>>n>>m;cin>>x;char c;i2=f();for(i1=1;i1<=m;i1++){scanf("%d %c",&k,&c);if(x[k-1]==c) {printf("%d\n",i2);continue;}else if(x[k-3]=='a'&&x[k-2]=='b'&&x[k-1]=='c') i2--;else if(x[k-2]=='a'&&x[k-1]=='b'&&x[k]=='c') i2--;else if(x[k-1]=='a'&&x[k]=='b'&&x[k+1]=='c') i2--;x[k-1]=c;if(x[k-3]=='a'&&x[k-2]=='b'&&x[k-1]=='c') i2++;else if(x[k-2]=='a'&&x[k-1]=='b'&&x[k]=='c') i2++;else if(x[k-1]=='a'&&x[k]=='b'&&x[k+1]=='c') i2++;printf("%d\n",i2);}return 0;
}
3,C. Complex Market Analysis-Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)
题意:有n个整数的数组并且给出参数值e,问有多少个(i,k)组合,使得1,i和k>=1,2,i+ek<=n,3,aiai+e*ai+2e…*ai+ke是也 一个质数。
题解:ans=0。首先知道题目中元素个范围是1e6之内的,找出1e6内的所有质数。从一个元素开始找到是质数的值停止,令num=1,向 前每次加e找值为1的元素,如果找到ans++并且num++,如果不为1则退出。同样的向后找,每次减e,但是如果是1每次ans+=num,不 为1则退出。
解释,例如1,1,1,3其实也算,但是前面有两个1,如果每一个数都向后找到最后的话会超时,但是从质数出发就可以减小运算的次 数。
代码:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <math.h>using namespace std;
const int Maxsize=1000005;
int flag1[Maxsize+20],a[Maxsize+20];
int temp[Maxsize+20];
long long n,m,e,ans;void f(int x)
{int i1,i2,i3,i4;if(flag1[a[x]]==1) return ;long long num=0;for(i1=x+e;i1<=n;i1+=e){if(a[i1]==1){ans++;num++;}else break;}num++;for(i1=x-e;i1>=1;i1-=e){if(a[i1]==1){ans+=num;}else break;}return ;
}
int main()
{//freopen("3.txt","r",stdin);int i1,i2,i3,i4,i5;for(i1=2;i1<=sqrt(Maxsize);i1++)if(flag1[i1]!=1)for(i2=2;i2*i1<=Maxsize;i2++){flag1[i2*i1]=1;}flag1[1]=1;int t;cin>>t;while(t--){scanf("%d%d",&n,&e);for(i1=1;i1<=n;i1++)scanf("%d",&a[i1]);ans=0;for(i1=1;i1<=n;i1++){f(i1);}cout<<ans<<endl;}return 0;
}
Deltix Round, Autumn 2021 (open for everyone, rated, Div. 1 + Div. 2)相关推荐
- Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2)
Deltix Round, Summer 2021 (open for everyone, rated, Div. 1 + Div. 2) 题号 题目 知识点 A A Variety of Opera ...
- Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2)
Deltix Round, Spring 2021 (open for everyone, rated, Div. 1 + Div. 2) 题号 题目 知识点 A Game of Life B Lor ...
- Deltix Round, Spring 2021 D. Love-Hate 随机化 + sos dp(高维前缀和)
传送门 文章目录 题意: 思路: 题意: 给你nnn个朋友,一共有mmm种货币,一个朋友最多喜欢ppp种,用二进制给出111代表喜欢,让你选出最多的一个货币集合使得至少有⌈n2⌉\left \lcei ...
- Deltix Round, Spring 2021 E. Crypto Lights 组合数学 + 推公式
传送门 文章目录 题意: 思路: 题意: 给你nnn个灯,每次可以打开一个灯,当连续的kkk个灯有至少两个灯开着的时候停止,问最终期望能打开多少灯. 思路: 由于不想打latexlatexlatex, ...
- Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Final)切题报告(A-B题)
这是我第二次参加CF比赛,也是第一次写博客,写得不好,望各位大佬海涵. A. Single Wildcard Pattern Matching 原题链接 这道题,这是难到让人无法直视,太水了. 题目大 ...
- [区间记忆化dp入门][Bribe the Prisoners SPOJ - GCJ1C09C][Codeforces Round #505D (rated, Div. 1 + Div. 2, ba]
Bribe the Prisoners SPOJ - GCJ1C09C 作为这类题代表,f[i][j]代表第i点到第j点单独处理的最值 这题关键:释放某个囚犯后,就把囚犯分成两段,两段互相独立 这类d ...
- CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)A~E
比赛连接:Dashboard - CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!) - Codeforces A. Beautiful Sequenc ...
- Codeforces Round #733 (Div. 1 + Div. 2) E. Minimax 分情况讨论 + 思维
传送门 文章目录 题意: 思路: 题意: 给你一个串,你可以随意安排这个串,使得这个串的每个前缀的kmpkmpkmp数组最大值最小,定义为f(a)f(a)f(a),并且字典序最小,输出安排之后的串. ...
- Codeforces Round #586 (Div. 1 + Div. 2) B. Multiplication Table 思维 + 公式
传送门 文章目录 题意: 思路: 题意: 给你一个n∗nn*nn∗n的矩阵,每个位置由ai∗aja_i*a_jai∗aj得来,主对角线为000,让你求出来aia_iai. n≤1e3n\le1e ...
- Codeforces Round #586 (Div. 1 + Div. 2) D. Alex and Julian 数学 + 思维
传送门 文章目录 题意: 思路: 题意: 给你一个无限个点的坐标轴,一个集合BBB,如果存在∣i−j∣=bk|i-j|=b_k∣i−j∣=bk的话,那么i,ji,ji,j之间就连边.现在问你至少要从 ...
最新文章
- iOS 仿通讯录索引
- python自增_关于 python 的自增运算
- 系统架构设计师 - 项目管理 - 挣值管理
- 虚拟机网络连接模式中桥接模式和NAT模式的区别
- 由于找不到opencv_world412d.dll,无法继续执行代码
- SQL各个关键字的顺序
- 解压缩软件:WinRAR V5.71
- 家庭局域网_玩转Windows 10家庭组,轻松共享局域网资源,人人都可以做到
- [转]成功=狼+狐狸+豹子
- 引流效果差?一文详解轻松获取优质流量的两大要点
- STM32系列(HAL库)——F103C8T6点亮1.44寸TFT-LCD彩屏
- 毕业论文找文献是个问题,我直接用python把全网文献爬了一遍,这波就很舒服
- mysql慢查询常用语句
- C语言中,再对文件的操作模式中,a和a+、w和w+、r和r+有什么区别?
- CSP 202112-3 登机牌条码 40分
- TCP协议的RST标志
- 【UE4】射线检测获取屏幕中心位置与制作瞄准准星
- nedc和epa续航里程什么意思_NEDC续航600公里 实际要打几折?实测结果来了
- AI应用之Deepfake实现换脸
- 横河川仪压力变送器故障代码_压力变送器常见故障分析