怎么搜索网站,网站建设 重点,企业网站 建设过程,网站 网络推广目录
A 游游的you矩阵
题目#xff1a;
题解#xff1a;
AC 代码#xff1a; B 游游的01串操作
题目#xff1a;
题解#xff1a;
AC 代码#xff1a; C 游游的正整数
题目#xff1a;
题解#xff1a;
AC 代码#xff1a;
D 游游的选数乘积
题目#xf…目录
A 游游的you矩阵
题目
题解
AC 代码 B 游游的01串操作
题目
题解
AC 代码 C 游游的正整数
题目
题解
AC 代码
D 游游的选数乘积
题目
题解
AC 代码 A 游游的you矩阵
题目
游游拿到了一个字符矩阵。她想知道有多少个2*2的子矩阵同时包含了y、o和u这三种字符 输入描述: 第一行输入两个正整数n和m代表矩阵的行数和列数。
接下来的n行每行输入一个长度为m的、仅由英文小写字母组成的字符串代表游游拿到的矩阵。
1≤n,m≤1e3 输出描述: 一个整数代表同时包含了y、o和u三种字符的2*2的子矩阵数量。 输入 3 3
yuo
uiy
our
输出 1
只有一个2*2的子矩阵同时包含了y、o和u三种字符。
题解
两层for循环遍历求解
AC 代码
#includebits/stdc.h
using namespace std;
int d[4][2]{0,0,0,1,1,0,1,1};
void solve()
{int m,n,a0,b0,c0,sum0;cinnm;string x[1001];for(int i0;in;i){cinx[i];}for(int i0;in-1;i){for(int j0;jm-1;j){a0,b0,c0;for(int k0;k4;k){if(x[id[k][0]][jd[k][1]]y)a;else if(x[id[k][0]][jd[k][1]]o)b;else if(x[id[k][0]][jd[k][1]]u)c;}if(abc)sum;}}coutsumendl;
}
signed main()
{int t1;//cint;while(t--)solve();return 0;
} B 游游的01串操作
题目
游游拿到了一个01串仅由字符0和字符1构成的字符串。游游每次操作可以选择对其中一个字符取反即1变0或者0变1对第 iii 个字符取反的代价为 iii。代价从1开始计算即第一个字母的代价是1 游游希望最终字符串任意两个相邻的字符都不相同她想知道花费代价之和的最小值的多少 输入描述: 一行仅由 0 、 1 组成的字符串长度不超过 100000。 输出描述: 一个整数代表代价之和的最小值。 样例 1
输入 11101
输出 2
说明
把第二个字母取反代价为2。字符串变成10101。
样例 2
输入 0111111 输出 13
说明
取反第1、2、4、6个字符总代价为124613.
题解
分别判断从0开始和从1开始输出最小操作
AC 代码
#includebits/stdc.h
using namespace std;
void solve()
{int m,n,sum0,num0,l;string x;cinx;lx.size();for(int i0;il;i){if(((x[i]-0)1)(i1))numi1;elsesumi1;}coutmin(sum,num)endl;
}
signed main()
{int t1;//cint;while(t--)solve();return 0;
} C 游游的正整数
题目
游游拿到了一个正整数a她每次操作可以选择将a加上x但必须满足l≤x≤r。游游希望操作结束后a恰好等于b。游游想知道最少需要多少次操作最多需要多少次操作 输入描述: 共有t组询问。
每组询问输入四个正整数a,b,l,r。
1≤t≤1e4
1≤l≤r≤1e9
1≤a≤b≤1e9输出描述:
对于每组询问输出一行答案。
如果无论如何都不能让a等于b则输出-1。
否则输出两个整数分别代表最少操作次数和最多操作次数。 示例1
输入
3
1 6 2 5
1 4 2 2
2 10 2 6
输出
1 2
-1
2 4 说明 第一组询问操作一次的方案直接使a加5。操作2次的方案先加2再加3。
第二组询问由于只能加2显然无法使得1变成4。
第三组询问操作2次的方案先加3再加5方案不唯一。操作4次的方案加4次2。 题解
算出a和b的差值分别除以 l 向下取整为maxx和 除以 r向上取整为minn判断两者大小如果maxx小于minn输出-1否则输出maxx和minn
AC 代码
#includebits/stdc.h
using namespace std;
#define int long long
void solve()
{int a,b,l,r;int maxx,minn;cinablr;maxxfloor((b-a)*1.0/l);minnceil((b-a)*1.0/r);if(maxxminn)cout-1endl;elsecoutminn maxxendl;return ;
}
signed main()
{int t1;cint;while(t--)solve();return 0;
}
D 游游的选数乘积
题目
链接登录—专业IT笔试面试备考平台_牛客网 来源牛客网
游游拿到了一个数组她准备在其中选择两个数使得乘积的末尾至少有xxx个0。游游想知道至少有多少种不同的取数方法 输入描述: 第一行输入两个正整数n和x代表数组的大小以及乘积末尾0的数量。
第二行输入n个正整数ai代表游游拿到的数组。
1≤n,x≤1e5
1≤ai≤1e9 输出描述: 输出一个整数代表游游选择的方案数。示例1
输入 5 2
3 5 50 2 80 输出 3 说明 5*80400末尾有2个0。
50*2100末尾有2个0。
50*804000末尾有3个0。
有以上3种方案满足乘积至少有2个0。 题解
计算每个数ai分别被25整除的次数x,y,则a[x][y]1 2、枚举x,y(x,y32),计算最小值大于等于目标值。
AC 代码
#includebits/stdc.h
using namespace std;
#define int long long
mappairint,int,int m;
void solve()
{int n,x,a,sum0,num0,ans0;cinnx;for(int k1;kn;k){cina;sum0,num0;while(a%50){sum;a/5;}while(a%20){num;a/2;}for(int ix;imax(x-sum,0ll);i--){for(int jx;jmax(x-num,0ll);j--){ansm[{i,j}];}}m[{min(x,sum),min(x,num)}];}coutansendl;
}
signed main()
{int t1;//cint;while(t--)solve();return 0;
}
下一篇逆元求乘法逆元的几种方法
推荐音乐if We Ever Broke Up