2025-12-24 学习日记

发布于 2025-12-24 12:00 739 字 4 min read 手写 每个字都是我自己敲的。

2025-12-24 学习日记2025-12-17 学习日记2025-12-14 学习日记2025-12-09 学习日记2025-12-08 学习日记2025-12-07 学习日记2025-12-06 学习日记2025-12-05 学习日记2025-12-04 学习日记2025-12-03 学习日记2025-12-02 学习日记2025-12-01 学习日记2025-11-30 学习日记2025-11-29 学习日记2025-11-28 学习日记2025-11-27 学习日记2025-11-26 学习日记2025-11-25 学习日记2025-11-24 学习日记2025-11-23 学习日记2025-11-22 学习日记2025-11-21 学习日记2025-11-20 学习日记2025-11-19 学习日记2025-11-18 学习日记2025-11-17 学习日记2025-11-16 学习日记2025-11-15 学习日记2025-11-14 学习日记2025-11-13 学习日记2025-11-12 学习日记2025-11-11 学习日记2025-11-10 学习日记2025-11-09 学习日记2025-11-08 学习日记2025-11-07 学习日记2025-11-06 学习日记2025-11-05 学习日记2025-11-04 学习日记2025-11-03 学习日记2025-11-02 学习日记2025-11-01 学习日记2025-10-31 学习日记2025-10-30 学习日记2025-10-29 学习日记2025-10-28 学习日记2025-10-27 学习日记2025-10-26 学习日记2025-10-25 学习日记2025-10-24 学习日记2025-10-23 学习日记2025-10-22 学习日记2025-10-21 学习日记2025-10-20 学习日记2025-10-19 学习日记2025-10-18 学习日记2025-10-17 学习日记2025-10-16 学习日记2025-10-15 学习日记2025-10-14 学习日记2025-10-13 学习日记2025-10-11 学习日记2025-10-10 学习日记2025-10-09 学习日记2025-10-03 学习日记2025-10-02 学习日记2025-10-01 学习日记2025-09-30 学习日记2025-09-29 学习日记2025-09-28 学习日记2025-09-27 学习日记2025-09-26 学习日记2025-09-25 学习日记2025-09-24 学习日记2025-09-23 学习日记2025-09-22 学习日记2025-09-21 学习日记2025-09-20 学习日记2025-09-18 学习日记2025-09-17 学习日记2025-09-16 学习日记2025-09-15 学习日记2025-09-14 学习日记2025-09-13 学习日记2025-09-12 学习日记2025-09-11 学习日记2025-09-10 学习日记2025-09-09 学习日记2025-09-08 学习日记2025-09-04 学习日记2025-09-03 学习日记2025-09-02 学习日记2025-09-01 学习日记2025-08-31 学习日记2025-08-29 学习日记2025-08-28 学习日记2025-08-27 学习日记2025-08-26 学习日记2025-08-25 学习日记2025-08-24 周记2025-08-23 学习日记2025-08-22 学习日记2025-08-21 学习日记2025-08-20 学习日记2025-08-19 学习日记2025-08-18 学习日记2025-08-17 周记2025-08-16 学习日记2025-08-15 学习日记2025-08-14 学习日记2025-08-13 学习日记2025-08-12 学习日记2025-08-11 学习日记
好多题不能再让我有进步了,我记录的也少了,还是说尽可能的记录我感想多的题目 今日学习记录 1. P14826 踩踩标 - 洛谷 关键词: 问题分析: 根据$ab+c=n,y=a+b+kc$计算 y 的最小值,给定 n 和 k,其中$c>=0$. 核心思路: 这里很重要,要讲一个思维性的突破 我们在做这种数学的时候,比如...

前言

好多题不能再让我有进步了,我记录的也少了,还是说尽可能的记录我感想多的题目

今日学习记录

1. P14826 踩踩标 - 洛谷

关键词:数学 问题分析: 根据a∗b+c=n,y=a+b+k∗ca*b+c=n,y=a+b+k*c计算 y 的最小值,给定 n 和 k,其中c>=0c>=0.

核心思路: 这里很重要,要讲一个思维性的突破 我们在做这种数学的时候,比如蓝桥杯那样的数学填空题时,并不是真的让你算完了再填答案,而是真正的使用计算机去算,但是怎么使用计算机就是主要问题,这里详细说明 先点明主题,使用计算机就是使用他的强大的计算能力,我们学算法的都知道,我们先使用暴力模拟,再想办法设计合适的算法进行优化,所以回归本质就是枚举暴力,那么这里就是这样的 那么在实际思考数学题目的时候,我们该怎么想,比如当前这道题目 我们可以看到,有三个变量,两个式子,那么可以化简一个式子,使其中一个变量用其他变量表达 于是,只剩下两个变量了,那么我们开始使用枚举思想,都要枚举了,自然就假设我们已经知道枚举的那个数字,这样就直接思考后面的式子是否能成立,假设知道 x,y 能不能算出来 当然,我们不能无脑的去枚举(计算机的优势就在这里,因为我们要使用的是数学计算,时间复杂度在 O(n)左右,所以程序几乎可以跑 1~1e9 的数据,可以枚举的范围算是大的),我们要通过式子和题目的背景对变量进行范围约束,看这个变量的范围能否找到,优先考虑枚举范围明确的变量,这样要简单多,性能要好很多 这题我们可以看出,c>=0,所以n>=a∗bn>=a*b,这里有个极值问题,当 a=b 的时候a∗ba*b有最大值,所以可以取 a=b,得到a<=根号下的ca<=根号下的c,a 又大于 0,所以 a 的范围明确了,c=n−a∗b,b=n/ac=n-a*b,b=n/a 这样所以的未知数都知道了,直接记录 y 的最小值就行了

**最终代码:

#include <bits/stdc++.h>
using namespace std;
#define ve vector
using ll = long long;
using ull = unsigned long long;
using sr = string;
using db = double;
using dll = double long;
const int MOD=998244353;
const ll INF=1e18;
const int DIR[4][2] = {{1,0},{-1,0},{0,-1},{0,1}};
int T;
void solve(){
    ll n, k;
        cin>>n>>k;
        if(k == 0){
            cout<<0<<endl;
            return;
        }
        ll  ans = k * n;
        ll sqrt_n = sqrt(n);
        for(ll a = 1;a <= sqrt_n;a++) {
            ll b = n / a;
            ll c = n - a * b;
            ll val = a + b + k * c;
            if(val < ans){
                ans = val;
            }
        }
        cout<<ans<<endl;
}
signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin>>T;
    while(T--) solve();
}

学到的点:

  1. 如何看待计算机中的数学题

执笔 手写

随机文章

加载中...