【NOIP2017提高组模拟6.30】tty's maze
来源:互联网 发布:淘宝可以贷款么 编辑:程序博客网 时间:2024/05/30 23:29
Description
Input
Output
输出一行一个数表示最大的宝藏之和
Sample Input
input 1:
1 5 3
1 2 3 4 5
input 2:
2 5 6
5 1 3 4 2
Sample Output
output 1:
6
output 2:
22
Solution
一道水题,我太垃圾了,没有看出来
根据题目的特性:从最上面可以到最下面,说明无论从哪个位置进入一列,都可以不重复的走完
那么枚举i表示这一次最多往右走到走到第i列,那么这之前的每列一定都要至少选一个
那么还有
这个用权值线段树维护,前k大的和和第k大的值
Code
#include<cstdio>#include<algorithm>#include<cmath>#define fo(i,a,b) for(int i=a;i<=b;i++)#define N 1001000#define ll long longusing namespace std;int mx=0,a[N];ll ans,k,n,m,t[N*10],s[N*10];void insert(int v,int i,int j,ll x){ t[v]++;s[v]+=x; if(i==j) return; int m=(i+j)/2; if(x<=m) insert(v*2,i,m,x); else insert(v*2+1,m+1,j,x);}ll get1(int v,int i,int j,ll x){ if(i==j) return (ll)i*x; if(x==t[v]) return s[v]; int m=(i+j)/2; ll jy=get1(v*2+1,m+1,j,min(t[v*2+1],x)); x-=t[v*2+1]; if(x>0) jy+=get1(v*2,i,m,x); return jy;}ll get2(int v,int i,int j,ll x){ if(i==j) return (ll)i; int m=(i+j)/2; if(t[v*2+1]>=x) return get2(v*2+1,m+1,j,x); else return get2(v*2,i,m,x-t[v*2+1]);}int main(){ scanf("%d%d%lld",&n,&m,&k); fo(i,1,m) scanf("%d",&a[i]),mx=max(mx,a[i]); int x=(k-1)/n; fo(i,1,x) insert(1,1,mx,a[i]); for(x++;x<=min(k,m);x++) { insert(1,1,mx,a[x]); ll jy=s[1]; int kk=n-1==0?0:(k-x)/(n-1); jy+=(ll)(n-1)*get1(1,1,mx,kk); jy+=(ll)(k-x-(n-1)*kk)*get2(1,1,mx,kk+1); ans=max(ans,jy); } printf("%lld\n",ans);}
阅读全文
1 0
- 【NOIP2017提高组模拟6.30】tty's maze
- JZOJ5187. 【NOIP2017提高组模拟6.30】tty's maze
- [JZOJ5187]【NOIP2017提高组模拟6.30】tty's maze
- 【NOIP2017提高组模拟6.30】tty's home
- 【ZJOJ5186】【NOIP2017提高组模拟6.30】tty's home
- JZOJ 5185. 【NOIP2017提高组模拟6.30】tty's sequence
- JZOJ 5186. 【NOIP2017提高组模拟6.30】tty's home
- JOZJ5185. 【NOIP2017提高组模拟6.30】tty's sequence
- 4920. 【NOIP2017提高组模拟12.10】降雷皇
- 【NOIP2017提高组模拟12.10】神炎皇
- 【NOIP2017提高组模拟12.10】神炎皇
- 【NOIP2017提高组模拟12.10】幻魔皇
- JZOJ4919. 【NOIP2017提高组模拟12.10】神炎皇
- 【NOIP2017提高组模拟12.10】神炎皇
- 【NOIP2017提高组模拟12.10】幻魔皇
- 【NOIP2017提高组模拟12.10】幻魔皇
- 【JZOJ4921】【NOIP2017提高组模拟12.10】幻魔皇
- 【JZOJ4920】【NOIP2017提高组模拟12.10】降雷皇
- 四方定理
- 加载图片
- 分类模型的评估方法-召回率(Recall)
- NOIP2017模拟赛(十一)总结
- SpringMVC实现文件上传
- 【NOIP2017提高组模拟6.30】tty's maze
- 1002 数塔取数问题
- tensorflow63 《深度学习原理与TensorFlow实战》03 Hello TensorFlow
- C++多态
- CGAL的安装与环境配置
- java中的几个常用流
- Android Studio实用插件集合
- 多个对象无锁
- Java多线程基础