202112-2 序列查询新解

简介: 202112-2 序列查询新解

090953e30f0d4cca90430bb1129585b7.png

8a66a9a4fb424efdad6c3b77d350afa3.png

a584a64df5524f08b4750bb1e7e59253.png


70分代码:

#include <bits/stdc++.h>//70分 30分运行错误
using namespace std;
const int maxn = 100005;
int n, N;
int a[maxn];
int f[maxn];
int g[maxn];
 
int main()
{
   cin >> n >> N;
   a[0] = 0;
   for (int i = 1; i <= n; i++)
   {
      cin >> a[i];
      f[a[i]] = f[a[i - 1]] + 1;
   }
   for (int i = 0; i < N; i++)
   {
      if (f[i] == 0)
         f[i] = f[i - 1];
   }
   int r=N/(n+1);
   for (int i = 0; i < N; i++)
   {
      g[i]=i/r;
   }
   int sum=0;
   for (int i = 0; i < N; i++)
   {
      sum+=abs(g[i]-f[i]);
   }
   cout<<sum;
  
}


100分代码:

利用区间内数字相同的特点,将数据压缩

#include <bits/stdc++.h> //分段思想
using namespace std;
typedef long long int ll;
const int maxn = 150000;
int n, N;
int a[maxn];
 
int main()
{
   cin >> n >> N;
   a[0] = 0;
   for (int i = 1; i <= n; i++)
   {
      cin >> a[i];
   }
   a[n + 1] = N;
   int r = N / (n + 1);
   long long sum = 0;
   for (int i = 0; i <= n; i++)
   {
      long long sum1 = 0, sum2 = 0;
      for (int j = a[i]; j < a[i + 1];)
      {
         int num = j / r; // g此时的值
         int cnt = r - j % r;//区间内共多少值
         cnt = min(cnt, a[i + 1] - j);
         sum1 = cnt * i;
         sum2 = cnt * num;
         sum+=abs(sum1-sum2);
         j+=cnt;
      }
   }
   cout<<sum;
}


相关文章
|
6月前
|
算法 JavaScript 测试技术
【数学】【组合数学】1830. 使字符串有序的最少操作次数
【数学】【组合数学】1830. 使字符串有序的最少操作次数
|
6月前
|
存储 算法 程序员
【算法训练-回溯算法 二】【子集组合问题】子集、组合、子集II、组合总和
【算法训练-回溯算法 二】【子集组合问题】子集、组合、子集II、组合总和
56 0
|
6月前
2572. 无平方子集计数(状态压缩dp)
2572. 无平方子集计数(状态压缩dp)
|
6月前
16.有一分数序列 1/2,2/3,3/5,5/8,8/13,13/21,…求出这个序列的前200 项之和
16.有一分数序列 1/2,2/3,3/5,5/8,8/13,13/21,…求出这个序列的前200 项之和
65 0
|
6月前
leetcode-187:重复的DNA序列
leetcode-187:重复的DNA序列
49 0
|
6月前
|
存储 算法 程序员
【算法训练-数组 一】【数组子集】:最长无重复子数组
【算法训练-数组 一】【数组子集】:最长无重复子数组
38 0
|
11月前
|
算法 测试技术 C#
C++单调向量算法:得到山形数组的最少删除次数
C++单调向量算法:得到山形数组的最少删除次数
|
算法
算法篇之二分查找(第74题探索二维矩阵、第287题寻找重复数)
算法篇之二分查找(第74题探索二维矩阵、第287题寻找重复数)
116 0
|
算法
无重复子集问题求解
给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。
72 0
m 序列(最长线性反馈移位寄存器序列)详解
m 序列(最长线性反馈移位寄存器序列)详解
497 0