2025-10-17 学习日记

发布于 2025-10-17 12:00 402 字 3 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. Problem - F - Codeforces 关键词: 问题分析: 把数组分成 k 段,si 为第 i 段的总和,求$s1+2s2+3s3 ...+n*sn = ans$ 给出多组测试数据,每组都要进行 k 次切割,每次输出经过 k 次切割得到的最大 ans 值 核心思路: (我看到这道题的时候想到的是哈夫曼编码贪心,是求带权路径最短的,这道题是求最大)...

今日学习记录

1. Problem - F - Codeforces

关键词:贪心 前缀和 排序 问题分析: 把数组分成 k 段,si 为第 i 段的总和,求s1+2∗s2+3∗s3...+n∗sn=anss1+2*s2+3*s3 ...+n*sn = ans 给出多组测试数据,每组都要进行 k 次切割,每次输出经过 k 次切割得到的最大 ans 值

核心思路: (我看到这道题的时候想到的是哈夫曼编码贪心,是求带权路径最短的,这道题是求最大) 先一个小贪心,我要把数组分成 k 段,然后求最大权值,后面的段乘的值越大结果越优,所以我们要先求后缀和,再对后缀和数组进行排列,把大的放在前面,要求 k 段和,其实不用枚举每个段再总和,直接利用后缀和来进行片段的累加 例如: [1,2,3,4,5]这段后缀和为[15,14,12,9,5],我们可以看当我们使用 15+12 时,其实就是 04 和 24 的片段叠加和,等价于 02 的数总和加上 2 倍的 24 的总和,这样就达到题目要求的了,排序就是要求最大的这个后缀,往前加小的时候倍数就小 **最终代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=5e5+10;
ll a[N]; 
int n;
int main(){
	int q=1;
	cin >> q;
	while(q--){
        cin>>n;
	    for(int i=1;i<=n;i++) cin>>a[i];
	    for(int i=n-1;i>=1;i--) a[i]+=a[i+1];
	    sort(a+2,a+n+1);
	    ll sum=a[1];
	    cout<<sum<<" ";
	    for(int i=n;i>=2;i--) {
	        sum+=a[i];
	        cout<<sum<<" ";
	    }
	    cout<<endl;
    }
    return 0;
}

学到的点:

  1. 贪心

2. 题目名称题目来源标号

关键词: 问题分析:

核心思路

最终代码:

学到的点: 1.


执笔 手写

随机文章

加载中...