首页 > 小苯的区间选数
头像 _MZT_
发表于 2024-11-11 13:18:15
本题虽然说给定了l1,r1,l2,r2,让从两个区间各选一个数,使加和的数位和最大,这个题等价于从l=l1+l2到r=r1+r2选择一个数使其数位和最大。最大的数取决于r值,让r的后面几位是九就是这个题的思路。例如,r=14783,如果后四位是9,则为9999,后三位为九,则为13999,后两位为九 展开全文
头像 Bezime
发表于 2024-11-11 23:53:35
E题题解 (最简方法,运行最快,不需要特判,不需要算法,只有一个for循环!) 首先 与 取数发现可以遍历 ++ 所有数, 令 +、+,问题转化为在 取一个数。 举例一个 、 : 贪心考虑从高位往低位看,如果 、 对应数位值相等,没有办法,只能取这个值,现在 。 一直到不等的地方,例子 展开全文
头像 betterer
发表于 2024-11-10 22:03:48
区间数位和最大值 若当前要求[l,r]的数位和,等价于求对于最后一个数位b,求b+FUNC[ceil((l-b)/10,floor((r-b)/10)]。 注意l>r时不合法,应该返回-inf。 vector<int> ksm10{1}; int max0(int x,int l 展开全文
头像 AK_heaven
发表于 2024-11-10 22:11:26
A 算法:模拟【1】 顺序遍历字符串 3 遍,第一遍输出小写字母,第二遍输出数字,第三遍输出大写字母。 B 算法:数学【1】/ 二分【4】(雾) 我们考虑一个大致的位置 ans = b * c / d,然后再来偏移一下,具体二分过不了不知道是为什么? C 算法:模拟【1】 考虑到 n 和 c 很小, 展开全文
头像 CARLJOSEPHLEE
发表于 2024-11-13 12:50:48
思路很简单,直接上代码 from sys import stdin input = stdin.readline t = int(input()) def sumdigit(x): return sum(int(i) for i in str(x)) def f(ltrue,rtrue,te 展开全文
头像 AzeQ
发表于 2024-11-11 21:43:21
暴力C #include <iostream> using namespace std; #define int long long typedef unsigned long long ull; #define js \ ios::sync_ 展开全文

等你来战

查看全部