2024“钉耙编程”中国大学生算法设计超级联赛(8)

news/2024/10/22 18:49:04/

🚀欢迎来到本文🚀
🍉个人简介:陈童学哦,彩笔ACMer一枚。
🏀所属专栏:杭电多校集训
本文用于记录回顾总结解题思路便于加深理解。

不是哥们,怎么我tm什么都不会。

在这里插入图片描述

📢📢📢传送门

  • 1004 cats 的重力拼图
    • 解题思路
    • AC代码
  • 1007 cats 的 k-xor
    • 解题思路
    • AC代码

1004 cats 的重力拼图

ProblemDescription
cats 有一个有 n 行,每行有 m 个方格的重力拼图。其中第 i 行第 j 个方格坐标为 (i,j)。重力拼图中有一个物块,初始位于坐标 (a,b) 的方格。若当前物块位于 (r,c),在一次操作中,cats 可以选择以下四种操作之一:

  1. 将重力切换为向上:将物块从当前位置移动到 (1,c)。这个过程中物块将经过所有坐标为 (i,c) (1≤i≤r) 的方格。
  2. 将重力切换为向下:将物块从当前位置移动到 (n,c)。这个过程中物块将经过所有坐标为 (i,c) (r≤i≤n) 的方格。
  3. 将重力切换为向左:将物块从当前位置移动到 (r,1)。这个过程中物块将经过所有坐标为 (r,i) (1≤i≤c) 的方格。
  4. 将重力切换为向右:将物块从当前位置移动到 (r,m)。这个过程中物块将经过所有坐标为 (r,i) (c≤i≤m) 的方格。

cats 可以最多进行 142857 次操作。现在 cats 希望最大化被拼图块经过至少一次(包括初始位置和最终位置)的方格的总数。你需要告诉 cats 这个总数的最大值。

解题思路

首先我们发现,一个点只能走到该点的左右极限端点和上下极限端点。
我们先考虑极端条件,当现在的点处于四个角落时,那么显然该点的运动轨迹应该为我们矩阵的最外面的那一圈矩形。
一般条件下的点的话我们则需要额外考虑是n大还是m大。
需要注意的是这里求得是格子数,所以计算答案时应该减去2。
最后还有一个特殊情况就是n 或 m 等于1的时候

AC代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;
void solve(){int n,m,a,b;cin >> n >> m >> a >> b;int ans = 0;//特殊情况 if(n == 1 || m == 1){cout << n * m << "\n";return;}//极端条件下的格子数 ans = (n + m) * 2 - 4;//如果在四个角落就直接输出 if((a == 1 || a == n) && (b == 1 || b == m)){	cout << ans << "\n";return;}int cnt = 0;//一般条件下的点的额外贡献 if(a > 1 && a < n){cnt = max(cnt,m - 2);}if(b > 1 && b < m){cnt = max(cnt,n - 2);}cout << ans + cnt << "\n";
}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;cin >> t;while(t --){solve();}return 0;
}

1007 cats 的 k-xor

Problem Description

定义两个数 x,y 的 k-xor 为 x,y 在正整数 k (k≥2) 进制意义下的不进位加法。现在 cats 有两个整数 a,b,cats 算出了它们在某个进制 k 下的 k-xor 为 c。但在 cats 计算出 c 后,cats 忘记了 k 的值。你能帮 cats 算出所有大于等于 2 的可能是 k 的不同正整数个数吗?如果有无穷多个满足条件的 k,输出 −1。

注:两个数在 k 进制下的不进位加法为,将两个数分别写出它们的 k 进制表示,并将两个数对应的位分别相加,然后将每一位相加得到的结果分别对 k 取模,将结果看做一个新的 k 进制数,这个结果即为两个数 k 进制下不进位加法的结果。例如 16=(121)3 和 8=(022)3 在 3 进制下的不进位加法的结果即为 (110)3=12。

解题思路

一般这种有特殊情况的,我考虑先判断出什么情况下会造成特殊情况成立。
那么这里很显然当我们的 a + b = c a + b = c a+b=c时会有无穷个k满足条件,因为只要 k > c k > c k>c即可。
其次当 a + b < c a + b < c a+b<c的时候是没有无解的。因为 a + b a + b a+b是不进位加法,那么无论 k k k为何值
都无法满足 a + b = c a + b = c a+b=c
最后就是 a + b > c a + b > c a+b>c 时,我们观察到a,b,c的最大值为1e9,开个根号大概50000左右。
2 到 50000 我们直接枚举有多少个k满足条件,大于50000的进制必然只有一个,大家可以自己
想想。

AC代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;
int calc(int a,int b,int k){vector<int> f;while(a || b){int u = a % k;a /= k;int v = b % k;b /= k;f.push_back((u + v) % k);}int sum = 0;int res = 1;for(auto x : f){sum += x * res;res *= k;}return sum;
}
void solve(){int a,b,c;cin >> a >> b >> c;int ans = 0;//无穷的情况 if(a + b == c){cout << -1 << "\n";return;//0的情况 }else if(a + b < c){cout << 0 << "\n";return;//大于50000的情况 }else if(a + b - c > 50000) {if(calc(a,b,a + b - c) == c){ans ++;}}//枚举小范围 for(int i = 2;i <= 50000;i ++){if(calc(a,b,i) == c){ans ++;}}cout << ans << "\n";
}
int main() {ios::sync_with_stdio(false);cin.tie(nullptr);int t = 1;cin >> t;while(t --){solve();}return 0;
}

http://www.ppmy.cn/news/1514572.html

相关文章

案·理探析 | 网络爬虫技术滥用的刑事责任

案理探析 | 网络爬虫技术滥用的刑事责任 刘荣 王爱强 中国检察官 2021年10月31日 19:32 北京 摘 要&#xff1a;网络爬虫是高效收集、分类、整理海量网络信息的程序或者脚本&#xff0c;具有很高的实用价值。但当网络爬虫使用者为了获取经济利益&#xff0c;将其作为犯罪工具…

无感更新浏览器的URL

在不重新加载页面的情况下&#xff0c;更新浏览器的URL&#xff0c;移除查询字符串中的参数&#xff0c;并更新浏览器的历史记录。 实现代码 const currentUrl new URL(window.location); const searchParams new URLSearchParams(currentUrl.search); searchParams.delete(…

前端使用 Konva 实现可视化设计器(21)- 绘制图形(椭圆)

本章开始补充一些基础的图形绘制&#xff0c;比如绘制&#xff1a;直线、曲线、圆/椭形、矩形。这一章主要分享一下本示例是如何开始绘制一个图形的&#xff0c;并以绘制圆/椭形为实现目标。 请大家动动小手&#xff0c;给我一个免费的 Star 吧~ 大家如果发现了 Bug&#xff0c…

PHP轻创推客集淘客地推任务平台于一体的综合营销平台系统源码

&#x1f680;轻创推客&#xff0c;营销新纪元 —— 集淘客与地推任务于一体的全能平台&#x1f310; &#x1f308;【开篇&#xff1a;营销新潮流&#xff0c;轻创推客引领未来】 在瞬息万变的营销世界里&#xff0c;你还在为寻找高效、全面的营销渠道而烦恼吗&#xff1f;&…

听专家的,不如听国家的,网络安全究竟值不值得报?

考学选专业&#xff0c;或者跳槽选行业的&#xff0c;看这篇&#xff01; 如果你什么都不懂&#xff0c;家里也没有矿&#xff0c;那就紧跟国家大事和地方政策。 关于网络安全专业究竟是否值得报考? 要知道“二十大”、“十四五”等大会一直在提一个词叫做“数字中国建设”…

探索Swift的精髓:玩转Swift标准库

标题&#xff1a;探索Swift的精髓&#xff1a;玩转Swift标准库 Swift语言以其简洁、强大和安全著称&#xff0c;而其标准库&#xff08;Swift Standard Library&#xff09;是这一语言的核心组成部分。标准库提供了一系列的基础功能&#xff0c;包括集合、字符串处理、数值类型…

做外贸如何判断国外采购商公司规模

判断客户公司的规模&#xff0c;对于业务员来说很重要&#xff0c;这样在谈价格以及其他条款的时候才能掌握主动。一般要怎么去判断客户公司的规模呢?我们都是做实事的&#xff0c;实际经验很重要&#xff0c;做过和没做过的看多了就知道。最基本的信息是公司的注册时间及相关…

数据库系统 第22节 事务隔离级别案例分析

1. 读未提交 (Read Uncommitted) 场景&#xff1a;假设有两个事务&#xff0c;事务A正在更新账户余额&#xff0c;事务B正在读取账户余额。 事务A&#xff08;未提交&#xff09;&#xff1a;开始更新账户余额&#xff0c;将余额从$1000减少到$900。事务B&#xff08;读取&am…