A

Add and Divide

题意:给你两个正整数a和b,每次操作可以将a改为a/b向下取整,或让b=b+1,求让a=0时的最小操作数。

思路:显然b=1时,必须先进行b=b+1。先求一直进行a=a/b的操作数记为ans,然后遍历b~b+ans,计算操作数,不断取最小。

#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;using namespace std;
ll a,b;
void solve()
{cin>>a>>b;int cnt=0;int ans=0;if(a==b) cout<<2<<'\n';else if(a<b) cout<<1<<'\n';else{ll aa=a,bb=b;if(b==1) bb++,ans++;while(aa!=0){aa/=bb;ans++;}for(int i=max(b,(ll)2);i<=b+ans;i++){cnt=i-b;aa=a;while(aa!=0){aa/=i;cnt++;}ans=min(ans,cnt);}cout<<ans<<'\n';}
}
int main()
{//ios;int _t=1;cin>>_t;while(_t--){solve();}system("pause");return 0;
}

B

Replace and Keep Sorted

题意:给你正整数k,若两个数组满足以下条件,则称两数组为k相似。

(1)它们是严格递增的

(2)它们具有相同的长度

(3)它们的元素在1~k的范围内

(4)它们只有一位不同

给你数组a[n],求在区间a[l]~a[r]的k相似数组的数量

思路:因为只有一位不同,可以在[l,r]枚举不同的位i,第一位不同时,第一位可以改为[1,a[l])(a[l],a[l+1]),共a[l+1]-2种选择,对于最后一位不同,可以改为(a[r-1],a[r])(a[r],k],共a[r]-2种选择.对于中间的位,可以改为(a[i-1],a[i])(a[i],a[i+1]),共a[i+1]-a[i-1]-2种选择。将l~r每位上的选择累加即为答案,得k+a[r]-a[l]-2*(r-l)-1

#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;using namespace std;
ll a[N];
ll n,q,k;
void solve()
{cin>>n>>q>>k;for(int i=1;i<=n;i++) cin>>a[i];while(q--){ll l,r;cin>>l>>r;ll ans=0;cout<<(ll)(k+a[r]-a[l]-2*(r-l)-1)<<'\n';}
}
int main()
{ios;int _t=1;//cin>>_t;while(_t--){solve();}system("pause");return 0;
}

C

Floor and Mod

题意:若a/b向下取整=a%b,则称(a,b)对儿是特殊的。给你两个正整数x和y,求1<=a<=x,1<=b<=y的(a,b)对儿的数量。

思路:首先⌊a / b⌋ == a % b 可以转化为,(设余数为k) a=kb+k (b > k)

由于b>k,所以a∈(,x],然后,将b看作自变量,a为因变量,所以当余数k确定后, a与b是唯一对应的.令a=x,b=x/k-1;所以b∈(k,x/k-1]

最终确定b的范围为b ∈ [1, y] ∩ (k, x / k - 1] = (k, min(y, x / k - 1)].

因为a与b是唯一对应的,所以对于每一个k, 就有 min(y, x / k - 1) - k 个 (a, b).

注意当从小到大枚举k时,b的范围是不断缩小的,注意判断无解的情况

参考博客

#include <bits/stdc++.h>using namespace std;
typedef long long ll;
int main()
{int t; cin >> t;while (t--) {int x, y; scanf("%d %d", &x, &y);ll res = 0;for(int i=1;i<=x/i;i++) {res += max(min(y, x / i - 1) - i, 0); //与0取max, 是过滤无解的情况.}printf("%lld\n", res);}return 0;
}

D

Multiples and Power Differences

题意:给你一个n行m列的矩阵,让你构造出满足以下条件的矩阵b

(1)bij∈[1,1e6]

(2)bij是aij的倍数

(3)bij与相邻元素之差为 (k>=1)

思路:首先注意到输入的aij<=16,因此可以构造出一个数是所有aij的倍数(lcm)

用lcm处理1~16得这个数是720720,满足条件1.2,先用lcm填满矩阵b

考虑如何满足第三个条件,既要满足倍数关系,又要与相邻元素构造出差值,只能让lcm加上aij的四次方。注意相邻元素不能相等,要把这些值隔开,因此使用行列的奇偶性来判断

#include <bits/stdc++.h>
#define lowbit(x) x&(-x)
#define endl '\n'
#define sf(x) scanf("%d",&x)
#define rep(i,x) for(i=0;i<(x);i++)
#define gen(x) x##_
#define ios std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0)
#define PII pair<int,int>
typedef long long ll;
const int N=1e6+10;
const int inf=0x3f3f3f3f;using namespace std;
int n,m;
int a[510][510];
void solve()
{int ans=1;for(int i=1;i<=16;i++){ans=ans*i/__gcd(i,ans);}cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];if((i+j)&1) cout<<ans<<' ';else cout<<ans+a[i][j]*a[i][j]*a[i][j]*a[i][j]<<' ';}cout<<'\n';}
}
int main()
{ios;int _t=1;//cin>>_t;while(_t--){solve();}system("pause");return 0;
}

Codeforces Round #701 (Div. 2)相关推荐

  1. Codeforces Round #701 (Div. 2) A ~ F ,6题全,超高质量良心题解【每日亿题】2021/2/13

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Add and Divide B - Replace and Keep Sorted C ...

  2. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)

    Codeforces Round #701 (Div. 2)赛后补题报告(A~D) A. Add and Divide 原题信息 http://codeforces.com/contest/1485/ ...

  3. Codeforces Round #701 (Div. 2) E. Move and Swap 思维 + dp

    传送门 文章目录 题意: 思路: 题意: 思路: 由于是按层来的,所以我们肯定先按照层来分组. 定义dp[i]dp[i]dp[i]为红棋在位置iii的时候的最大得分和. 先考虑不换的情况,我们对于每个 ...

  4. Codeforces Round #701 (Div. 2) D. Multiples and Power Differences 思维构造

    传送门 题意: 给定一个矩阵aaa,让你构造一个矩阵bbb,要求矩阵bbb的每个元素是aaa对应位置元素的倍数,且矩阵bbb的每两个相邻元素相差为k4(k>=1)k^4(k>=1)k4(k ...

  5. Codeforces Round #701 (Div. 2) C. Floor and Mod 数学分块

    传送门 题意: 给两个数x,yx,yx,y.现在你计算有多少对a(a<=x)a(a<=x)a(a<=x)和b(b<=y)b(b<=y)b(b<=y)使得⌊ab⌋=a ...

  6. Codeforces Round #701 (Div. 2) 总结

    其实Round699也有打的,但是总结变成鸽子飞走了. 赛前30min:睡觉真舒服. 开场一个A题,看了个题感觉这玩意好像不能直接算. 目测答案肯定小于100,log1e18才64不到. 那就枚举给b ...

  7. Codeforces Round #701 (Div. 2)小结

    2023大厂真题提交网址(含题解): www.CodeFun2000.com(http://101.43.147.120/) 最近我们一直在将收集到的机试真题制作数据并搬运到自己的OJ上,供大家免费练 ...

  8. Codeforces Round #506 (Div. 3)

    Codeforces Round #506 (Div. 3) 实习期间事不多,对div3 面向题解和数据编程了一波 A. Many Equal Substrings 题目链接 A题就是找后缀和前缀重合 ...

  9. Codeforces Round #563 (Div. 2)/CF1174

    Codeforces Round #563 (Div. 2)/CF1174 CF1174A Ehab Fails to Be Thanos 其实就是要\(\sum\limits_{i=1}^n a_i ...

最新文章

  1. ant Table td 溢出隐藏(省略号)
  2. 《研磨设计模式》chap20 享元模式 Flyweight (2)模式介绍
  3. AngularJs 1.5 $location获取url参数
  4. 大龄开发者正在消失?NO,听听这3位50岁程序员怎么说
  5. linux232转usb接口驱动程序,USB转RS232串口驱动程序下载
  6. 华为开发者学堂 | 囤课畅学 码住未来
  7. 图解通信原理与案例分析-34:车联网中的系统架构与主要的通信技术
  8. Rust高并发编程总结
  9. 服务器虚拟主机,非根目录jsp文件的引包报错
  10. 汽车研发企业试验数据管理系统建设研究
  11. 王逸凡的十万个为什么
  12. Oracle数据库update语句用法,多表批量更新对应的字段值
  13. 苹果电脑修改用户名方法
  14. 一个完整的Windows驱动程序示例(应用与内核通信)
  15. php 格式化银行卡,PHP 格式化数字返回银行卡号码
  16. 云计算演义(11)为什么阿里云不及格?
  17. Xunsearch迅搜项目实战经验
  18. 欢迎访问互联网进化论官方网站
  19. 【信息量判别块:语义监督:GAN:IVIF】
  20. 中国软考2006年各地报名方式和咨询地址

热门文章

  1. 大型网站技术架构(六)网站的伸缩性架构
  2. Fallen Art 堕落的艺术
  3. JavaScript中getElementById()方法和getElementByName()方法
  4. hdu4348 为 心灵之旅To The Moon 出的 时光穿梭 题。主席树
  5. PMSM的有感FOC闭环控制讲解
  6. onbeforeunload与onunload事件总结:
  7. SAP 创建成本中心
  8. 汇编语言常用的DOS功能调用
  9. 念了十几年书,想起来还是幼儿园比较好混!
  10. 使用代码实现Android的清除数据的功能