序列查询新解

  • 题目描述
    • 输入
    • 输出
    • 样例输入
    • 样例输出
      • 子任务
      • 源代码
      • 关于这题

题目描述

输入

输出

样例输入

样例1

3 10
2 5 8

样例2

9 10
1 2 3 4 5 6 7 8 9

样例3

2 10
1 3

样例输出

样例1

5

样例2

0

样例3

6

子任务

源代码

70分:

#include <iostream>
#include <math.h>
using namespace std;int main (){int  n,N;cin>>n>>N;long double *f=new long double [N+1];long double *g=new long double [N+1];long double *t=new long double [N+1];long double *c=new long double [N+1];int   rate=0;int   temp=0;int   i=0;int   result=0;int   h=0;int   count=0;int   k=0;f[0]=0;g[0]=0;c[0]=0;t[0]=0;for (i = 1; i <=n ; i++) {cin>>temp;t[i]=temp;c[i-1]=t[i]-t[i-1];}c[i-1]=N-t[i-1];rate=ceil((double )(N/(n+1)));for (int j = 0; j < N; j++) {g[j]= ceil((double )(j/rate));}for (int j = 0; j < N; j++) {if (c[h]!=count){count++;}else{h++;k++;count=1;}f[j]=abs(g[j]-k);}for (int j = 0; j <N ; j++) {result+=f[j];}cout<<result<<endl;return 0;
}

100分:

#include <iostream>
#include <cmath>
using namespace std;
#define ll long long// 求f数列某个区间的值。x表示区间的右边界开区间,y表示左边界闭区间,i表示区间内的任意元素值为i
ll getFSum(int x, int y, int i) {return (ll)(x - y) * i;
}// 计算g数列前pos项的和
ll getGSum(int pos, int r) {int st = 0;// 前pos项中完整长度为r的区间的个数int seqNum = (pos + 1) / r;// 前pos项中最后一个不完整区间的个数,为0或1int lastSeqNum = (pos + 1) % r == 0 ? 0 : 1;// 千seqNum个区间的区间和ll sum = (ll)seqNum * (seqNum - 1) / 2 * r;// 最后一个区间中的值的和ll lastSum = (ll)seqNum * lastSeqNum * ((pos + 1) % r);return sum + lastSum;
}// 计算yx区间内g-f的绝对值
ll getSum(int x, int y, int r, int i) {int f, gMin, gMax, changedIndex;ll sum = 0;f = i;gMin = y / r;gMax = (x - 1) / r;if(f >= gMax)sum += getFSum(x, y, i) - (getGSum(x - 1, r) - getGSum(y - 1, r));else if(f <= gMin)sum += (getGSum(x - 1, r) - getGSum(y - 1, r)) - getFSum(x, y, i);else {for(int k = gMin; k <= gMax; k ++)if(k >= i) {changedIndex = y + (k - gMin) * r;sum += getFSum(changedIndex, y, i) - (getGSum(changedIndex - 1, r) - getGSum(y - 1, r));sum += (getGSum(x - 1, r) - getGSum(changedIndex - 1, r)) - getFSum(x, changedIndex, i);break;}}return sum;
}int main() {int n, N, x = 0, y, r;ll sum = 0;cin >> n >> N;r = N / (n + 1);for(int i = 0; i < n; i ++) {y = x;cin >> x;if(x > y)sum += getSum(x, y, r, i);}// 最后计算xN区间sum += getSum(N, x, r, n);cout << sum;
}

关于这题

70分 其实都是int 也是70分…

100分: 还是换个思路 不再计算每个的值 再计算 |f(i)-g(i)| 而是计算 一整个区间的|f(i)-g(i)|的值
g(i)的每r个数的值是一样的(可能存在最后的几个数 ,不足r个数,这个要单独讨论)
既然是要计算整个区间的值,去绝对值,就分两种情况,f(i)>=g(i) 和 f(i)<g(i)

~5 ccf 2021-12-2 序列查询新解相关推荐

  1. CCF 202112-2 序列查询新解 python 满分

    CCF 202112-2 序列查询新解 python 满分 题目叙述 问题描述:略 输入格式:略 输出格式:略 样例 满分证明 解题思路 01Python超时70分 02满分python思路 第一,计 ...

  2. CCF CSP202112-2 序列查询新解

    CCF CSP202112-2 序列查询新解 题目背景 上一题"序列查询"中说道: A=[A0,A1,A2,⋯,An]A=[A_0,A_1,A_2,⋯,A_n]A=[A0​,A1​ ...

  3. CCF CSP 序列查询新解

    CCF CSP 序列查询新解(C语言) 题目背景 上一题"序列查询"中说道: A=[A0,A1,A2,⋯,An] 是一个由 n+1 个 [0,N) 范围内整数组成的序列,满足 0= ...

  4. CSP CCF: 202112-2 序列查询新解 (C++)

    题目链接:计算机软件能力认证考试系统 试题编号: 202112-2 试题名称: 序列查询新解 时间限制: 1.0s 内存限制: 512.0MB 题目背景 上一题"序列查询"中说道: ...

  5. CCF-CSP-202112-2:序列查询新解(C++11题解)

    文章目录 问题描述 解题思路 AC代码 问题描述 题目来源:CCF-CSP-202112-2:序列查询新解 解题思路 思路稍后再补. AC代码 PA了一次,是因为没开long long #includ ...

  6. CCF-CSP 202112-2 序列查询新解

    题目:序列查询新解 思路:在f区间内划分g区间,注意g区间左端点的定值,不断移动g区间(长度都为r),当g区间末端点超出f的范围,进入下一个f循环 #include<bits/stdc++.h& ...

  7. CCF CSP 202112-2 序列查询新解

    单纯地讲思路有些难懂,这里结合一个实际例子来说明: 我们假设A = {0,1,3},n = 2,N = 10,r = 10 / (2 + 1) = 3. i 0 1 2 3 4 5 6 7 8 9 f ...

  8. CCF - 202112-2 - 序列查询新解

    给出一个A数组,A = [0,2,5,8],n = 3,N = 10,r = 2: 在样例中可以看出在[0,2),[2,5),[5,8),[8,10)这些区间内,我们处在其中任何一个区间中时,f(i) ...

  9. csp202112-2:序列查询新解 题解

    题目 样例 思路: 前缀和思想 观察f(x)f(x)f(x)和g(x)g(x)g(x)的序列,其实是有规律的: f(x)f(x)f(x)在每个A[i]A[i]A[i]处+1+1+1,在[A[i],A[ ...

最新文章

  1. Android 自定义圆形图片
  2. 使用Gradle整合SpringBoot+Vue.js-开发调试与打包
  3. USB4 来了(一)
  4. 数学建模传染病模型_数学建模| 时间序列模型
  5. Python中都全局变量和局部变量
  6. 经典算法研究系列:七、深入浅出遗传算法,透析GA本质【转载】
  7. linux大io引起cpu使用率偏高,系统负载高, 但CPU使用率和IO都非常低
  8. 20172330 2018-2019-1 《程序设计与数据结构》实验一报告
  9. 单片机双击 长按 c语言,单片机三种按键模式 单击 双击 长按
  10. Luzj's ZTE Win版 终于开发完成
  11. Windows安装宝塔后跳过绑定手机号
  12. 深入理解java虚拟机(4)---类加载机制
  13. 近年来Person Re-identification论文汇总
  14. 6580 8.1 mtp模式,查看手机容量大小修改
  15. 苹果AppStore被拒理由大全
  16. Spring Security之过滤器链【探案】+源码剖析
  17. 弹性容器----六大属性(5、项目在交叉轴上的对齐方式)
  18. 【Python3爬虫(二)】【urlib.request模块】【付费代理+auth认证】
  19. python写入mysql数据库_Python_MySQL数据库的写入与读取
  20. Java创建大小顶堆

热门文章

  1. linux_时区修改
  2. 浅析 Transformer Stage 在 DataStage 作业中的用法及功能实现
  3. 【车载】ESP/ESC/DSC车身稳定系统
  4. 如何解决Win11系统显示你的账户已被停用
  5. 关于解决'\u'开头的字符串转中文的方法
  6. 8除以2表示什么意思_数字含义大全
  7. 手把手教你通过端口映射,轻松搭建Windows远程桌面
  8. Jenkin前端项目部署----远程服务
  9. map方法的常见使用
  10. 会议OA项目(项目原型图介绍发布会议功能)