2025-09-29 学习日记

发布于 2025-09-29 12:00 926 字 5 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. First one-hdu-5358 好久没做出来的题,当时没能做出来,ai 也做不出来,然后就做不出来了,没题解,没人教,所以就先放着了 时隔一个月,我再来看,思考了大概半个小时就想出来,我独自想出来的,至少说明我比一个月前强了不少 那么类似的题不止一个,还有csp的这道题,一模一样的板子,但是不...

今日学习记录

1. First one-hdu-5358

好久没做出来的题,当时没能做出来,ai 也做不出来,然后就做不出来了,没题解,没人教,所以就先放着了 时隔一个月,我再来看,思考了大概半个小时就想出来,我独自想出来的,至少说明我比一个月前强了不少 那么类似的题不止一个,还有csp的这道题,一模一样的板子,但是不同的规律和处理,大值思考方向和实现是一样的,我原本以为我这道题做出来了后就能解决所以此类问题,但是这类题其实特别难,此题就比 csp 的第四题要简单一点点,真的就一点点,log 的规律容易发现,而 gcd 不容易发现,其实此类题就是在这个核心部分出题,改变题目的处理手段(考察其他数学之类的知识),但是大体框架是一模一样的 **最终代码:

#include<iostream>

#include<vector>

#include<algorithm>

using namespace std;

typedef long long ll;

int main(){

    ios_base::sync_with_stdio(false);

    cin.tie(NULL);

    int T; cin >> T;

    while(T--){

        int n; cin >> n;

        int a;

        vector<ll> prefix(n + 1, 0);

        for(int i = 1; i <= n; i++){

            cin >> a;

            prefix[i] = prefix[i - 1] + a;

        }

        ll ans = 0;

        for(int i = 1; i <= n; i++){

            int j = i;

            while(j <= n){

                ll sum = prefix[j] - prefix[i - 1];

                if(sum == 0){

                    int k = j;

                    while(k <= n && prefix[k] == prefix[i - 1]) k++;

                    k--;

                    int cnt = k - j + 1;

                    ans += 1LL*cnt * i + 1LL*(j + k) * cnt / 2;// t=0, 所以(t+1)=1

                    j = k + 1;

                    continue;

                }

                int t = 0;

                ll temp = sum;

                while(temp > 1){

                    t++;

                    temp >>= 1;

                }

                ll lower = (1LL << t);

                ll upper = (1LL << (t + 1)) - 1;

                int left = j, right = n, R = j;

                while(left <= right){

                    int mid = (left + right) / 2;

                    ll sum_mid = prefix[mid] - prefix[i - 1];

                    if(sum_mid <= upper){

                        R = mid;

                        left = mid + 1;

                    } else {

                        right = mid - 1;

                    }

                }

                int cnt = R - j + 1;

                ans += (t+1)*(1LL*cnt * i + 1LL*(j + R) * cnt / 2);

                j = R + 1;

            }

        }

        cout << ans << "\n";

    }

    return 0;

}

学到的点:

  1. 三指针
    i,对 i 进行分析,映射出要查找的范围,再进行答案匹配和计算

执笔 手写

随机文章

加载中...