hdu-6058 Kanade's sum
题意:略
思路:要我们求每个区间第K大数之和,其实可以转换为求多少个区间的第K大数是X,然后我们在求和就好了。
那么我们可以从小到大枚举所有可能成为第K大的数。为什么从小到大呢?
因为从小到大我们就略去了大小的比较了,后面我们维护的链表就要把这个值除去。
- /* gyt
- Live up to every day */
- #include<cstdio>
- #include<cmath>
- #include<iostream>
- #include<algorithm>
- #include<vector>
- #include<stack>
- #include<cstring>
- #include<queue>
- #include<set>
- #include<string>
- #include<map>
- #include <time.h>
- #define PI acos(-1)
- using namespace std;
- typedef long long ll;
- typedef double db;
- const int maxn = +;
- const ll maxm = 1e7;
- const int modd = ;
- const int INF = <<;
- const db eps = 1e-;
- int pos[maxn], pre[maxn], nex[maxn];
- void solve() {
- int n, k; scanf("%d%d", &n, &k);
- for (int i=; i<=n; i++) {
- int x; scanf("%d", &x);
- pos[x]=i; pre[i]=i-, nex[i]=i+;
- }
- pre[]=; nex[n+]=n+;
- ll sum=;
- for (int j=; j<=n; j++) {
- int x=pos[j];
- int rq[];
- int lc=, rc=;
- // cout<<"x:"<<x<<endl;
- for (int i=x; i<=n&&rc<k; i=nex[i]) {
- rq[++rc]=nex[i]-i;
- // cout<<nex[i]<<" "<<i<<endl;
- }
- ll ans=;
- for (int i=x; i>&&lc<k; i=pre[i]) {
- lc++;
- int r=k-lc+;
- if (r>rc) continue;
- ans+=(i-pre[i])*rq[r]; //前面有多少个比他小的数,我们就可以构成那么多的区间
- //cout<<"ans:"<<ans<<endl;
- //cout<<(i-pre[i])<<" "<<rq[r]<<endl;
- }
- //cout<<"rc:"<<rc<<" lc:"<<lc<<endl;
- sum+=ans*j;
- pre[nex[x]]=pre[x];
- nex[pre[x]]=nex[x];
- //cout<<j<<" "<<ans<<endl;
- //cout<<"---------------"<<endl;
- }
- cout<<sum<<endl;
- }
- int main() {
- int t = ;
- //freopen("in.txt", "r", stdin);
- scanf("%d", &t);
- //getchar();
- while(t--)
- solve();
- return ;
- }
hdu-6058 Kanade's sum的更多相关文章
- HDU 6058 - Kanade's sum | 2017 Multi-University Training Contest 3
/* HDU 6058 - Kanade's sum [ 思维,链表 ] | 2017 Multi-University Training Contest 3 题意: 给出排列 a[N],求所有区间的 ...
- hdu 6058 Kanade's sum(模拟链表)
Kanade's sum Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU 6058 Kanade's sum 二分,链表
Kanade's sum Problem Description Give you an array A[1..n]of length n. Let f(l,r,k) be the k-th larg ...
- HDU 6058 Kanade's sum —— 2017 Multi-University Training 3
Kanade's sum Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tota ...
- HDU - 6058 Kanade's sum
Bryce1010模板 http://acm.hdu.edu.cn/showproblem.php?pid=6058 /* 思路是:找出每个x为第k大的区间个数有多少 用pos[i]保存当前x的位置, ...
- 【链表】2017多校训练三 HDU 6058 Kanade's sum
acm.hdu.edu.cn/showproblem.php?pid=6058 [题意] 给定一个排列,计算 [思路] 计算排列A中每个数的贡献,即对于每个ai,计算有ni个区间满足ai是区间中的第k ...
- 2017ACM暑期多校联合训练 - Team 3 1003 HDU 6058 Kanade's sum (模拟)
题目链接 Problem Description Give you an array A[1..n]of length n. Let f(l,r,k) be the k-th largest elem ...
- hdu 6058 Kanade's sum (计算贡献,思维)
题意: 给你一个全排列,要你求这个序列的所有区间的第k大的和 思路:比赛的时候一看就知道肯定是算贡献,也知道是枚举每个数,然后看他在多少个区间是第K大,然后计算他的贡献就可以了,但是没有找到如何在o( ...
- 2017 Multi-University Training Contest - Team 3 Kanade's sum hd6058
地址:http://acm.split.hdu.edu.cn/showproblem.php?pid=6058 题目: Kanade's sum Time Limit: 4000/2000 MS (J ...
- hdu6058 Kanade's sum 区间第k大
/** 题目:Kanade's sum 链接:http://acm.hdu.edu.cn/showproblem.php?pid=6058 题意:给定[1,n]的排列,定义f(l,r,k)表示区间[l ...
随机推荐
- 如何正确获取MYSQL的ADO连接字符串
首先你正确安装了MYSQL的数据库驱动程序(mysql-connector-odbc-5.3.2-win32.msi )http://dev.mysql.com/downloads/connector ...
- sourceforge
sourceforge SourceForge.net,又称SF.net,是开源软件开发者进行开发管理的集中式场所. SourceForge.net由VA Software提供主机,并运行Source ...
- mac上为nodejs设置环境变量
Mac下面的环境变量设置和Linux差不多,一般为这几个文件(左边的先加载): /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.pro ...
- python中类变量和成员变量、局部变量总结
class Member(): num= #类变量,可以直接用类调用,或用实例对象调用 def __init__(self,x,y): self.x=x #实例变量(成员变量),需要它是在类的构造函数 ...
- [leetcode]304. Range Sum Query 2D - Immutable二维区间求和 - 不变
Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper lef ...
- Dockerfile里指定执行命令用ENTRYPOING和用CMD有何不同?
结论:运行时机不太一样. RUN是在Build时运行的,先于CMD和ENTRYPOINT.Build完成了,RUN也运行完成后,再运行CMD或者ENTRYPOINT. ENTRYPOINT和CMD的不 ...
- bean生命周期_Junit测试使用factory模式
在面试某互联网_保险 公司, 被问到了spring中bean的生命周期,不禁联想到我们之前作 junit测试时,使用了Factory模式,而没有用Mock.
- Windows系统崩溃后快速恢复Oracle数据库的妙招
Windows系统崩溃后快速恢复Oracle数据库,以下是操作步骤 假设oracle数据安装在d:\\oracle文件夹中,数据库名称orcl 1>将崩溃的数据库安装目录"d:\\or ...
- gRPC的.netClient客户端第一次连接出现StatusCode=Unavailable的解决办法?
1.问题还原: The service does not automatically connect, free after a period of time, the first call will ...
- MVC是架构模式,而不是设计模式
最早学编程的时候看过一些书,印象深刻的一本书<设计模式解析>,那本书给我后来的工作提供了很大的帮助. 他叫我站在问题模型的立场上指定解决方法,也教会了我软件设计中每个问题都可以细化到到不可 ...