动态规划,而已! CodeForces 433B - Kuriyama Mirai's Stones

简介:

Kuriyama Mirai has killed many monsters and got many (namely n) stones. She numbers the stones from 1 to n. The cost of the i-th stone is vi. Kuriyama Mirai wants to know something about these stones so she will ask you two kinds of questions:

  1. She will tell you two numbers, l and r (1 ≤ l ≤ r ≤ n), and you should tell her .
  2. Let ui be the cost of the i-th cheapest stone (the cost that will be on the i-th place if we arrange all the stone costs in non-decreasing order). This time she will tell you two numbers, l and r (1 ≤ l ≤ r ≤ n), and you should tell her .

For every question you should give the correct answer, or Kuriyama Mirai will say "fuyukai desu" and then become unhappy.

Input

The first line contains an integer n (1 ≤ n ≤ 105). The second line contains n integers: v1, v2, ..., vn (1 ≤ vi ≤ 109) — costs of the stones.

The third line contains an integer m (1 ≤ m ≤ 105) — the number of Kuriyama Mirai's questions. Then follow m lines, each line contains three integers typel and r (1 ≤ l ≤ r ≤ n; 1 ≤ type ≤ 2), describing a question. If type equal to 1, then you should output the answer for the first question, else you should output the answer for the second one.

Output

Print m lines. Each line must contain an integer — the answer to Kuriyama Mirai's question. Print the answers to the questions in the order of input.

Sample test(s)
input
6
6 4 2 7 2 7
3
2 3 6
1 3 4
1 1 6
output
24
9
28
input
4
5 5 2 3
10
1 2 4
2 1 4
1 1 1
2 1 4
2 1 2
1 1 1
1 3 3
1 1 3
1 4 4
1 2 2
output
10
15
5
15
5
5
2
12
3
5
Note

Please note that the answers to the questions may overflow 32-bit integer type.

题目说给一串数字,然后给指令1或2。输入l。r求第l到r的和。讲具体点:先输入一个n,代表有多少个元素,然后输入n个元素,然后输入一个q代表有多少次指令,1的指令就是直接将a[l]一直加加到a[r],然后输出和,2的指令是先将a[]排序,sort即可了。然后和上面一样求和。思路非常easy,哈哈。看到这种B题非常开心吧,普通写法for循环一个个加的话。写完你就发现TLE了。并且TLE的非常开心啊!!!

!!

都说了这是动态规划啊。!!

!!!

咱们这样存储:每一个元素存储的是前i个元素的和。这样a[l]一直到a[r]的表达式就为a[r]-a[l-1];
好好理解下,对吧?。
动态规划就是拿空间换时间的算法,在执行过程中会产生大量中间数据进行抉择。每个状态始终影响下一步的状态!!!

嗯。贴代码时间:
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
#define maxn 100006
__int64 sum;
__int64 pp[maxn]={0},p[maxn]={0},liu[maxn],xp[maxn];
int main()
{
    int i,j,k;
    int t,n,m;
    int l,r;
    while(scanf("%d",&n)!=EOF)
    {
        p[0]=0;
        for(i=1;i<=n;i++)
        {
            scanf("%I64d",&liu[i]);
            xp[i]=liu[i];
            p[i]=p[i-1]+liu[i];
        }
        xp[0]=0;
        sort(xp,xp+n+1);
        for(i=1;i<=n;i++)
            pp[i]=pp[i-1]+xp[i];
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d",&m);
            if(m==1)
            {
                scanf("%d%d",&l,&r);
                sum=p[r]-p[l-1];
                printf("%I64d\n",sum);
            }
            else if(m==2)
            {
                scanf("%d%d",&l,&r);
                sum=pp[r]-pp[l-1];
                printf("%I64d\n",sum);
            }
        }
    }
    return 0;
}
看出bug就讲吧,谢谢;

版权声明:本文博客原创文章,博客,未经同意,不得转载。








本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4675296.html,如需转载请自行联系原作者


相关文章
|
8月前
|
数据库
新瓶装旧酒,纯生信三表一图孟德尔随机化8分Nature子刊
**摘要** 一项发表在《英国癌症杂志》(IF 8.8)上的研究利用孟德尔随机化方法分析了吸烟与结直肠癌(CRC)风险的关联。研究发现,吸烟开始会增加CRC风险,而戒烟则有保护效果,这些关联独立于其他吸烟特征和饮酒。通过基因预测的DNA甲基化,识别出CpG位点cg17823346 [ZMIZ1] 低甲基化降低CRC风险,而cg02149899高甲基化增加风险。共定位和基因-环境交互分析支持了这些表观遗传变化与CRC关联的生物学意义。研究强调了吸烟、DNA甲基化与CRC风险的显著联系,并为理解吸烟的致病机制提供了新见解。
102 2
|
8月前
|
算法 Python
Python技术分享:使用穷举法解决鸡兔同笼问题
Python技术分享:使用穷举法解决鸡兔同笼问题
358 1
leetcode 1222. 可以攻击国王的皇后(每日一题)
leetcode 1222. 可以攻击国王的皇后(每日一题)
83 0
尼科彻斯定理
1.题目概述 2.题解 思路分析 具体实现
112 0
|
人工智能
【动态规划】守望者的逃离
【动态规划】守望者的逃离
101 0
|
算法 Android开发 容器
LeetCode 周赛上分之旅 #35 两题坐牢,菜鸡现出原形
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
97 0
|
算法 C++
蓝桥杯(聪明的猴子)克鲁斯卡尔算法最小生成树
蓝桥杯(聪明的猴子)克鲁斯卡尔算法最小生成树
118 0
|
C++
【力扣·每日一题】913. 猫和老鼠(C++ 记忆化搜索 博弈)
【力扣·每日一题】913. 猫和老鼠(C++ 记忆化搜索 博弈)
232 0
【力扣·每日一题】913. 猫和老鼠(C++ 记忆化搜索 博弈)
|
人工智能
codeforces455——A. Boredom(线性DP)
codeforces455——A. Boredom(线性DP)
132 0
codeforces455——A. Boredom(线性DP)