杭州集训Day5
下面是Day5的题目!(其实都咕了好几天了
100+70+40=210.
T1 皇后 XY 的疑难 (1s 512MB)
4 3
4 8
6 5
1 6
T2 快来 pick sxk(1s 512MB)
千古神犇邵徐坤 sxk,他现在利用自己猴子的属相变成了n个会打篮球的分身,每个会打篮球的分身都
有一个鸡儿你真美值,这些分身是乱序的。
你需要将其按鸡儿你真美值从小到大排序,每次你可以将一个分身揪到任意一个位置(某两个分身中
间),代价是你要掉该分身的鸡儿你真美值的毛。
为了不变成sxk这样的聪明"绝顶"的大猴子,你要以尽量少的代价完成这个任务,你需要回答每一次
分身后你会掉的最少毛数。
2.2 输入格式
从文件pick.in中读入数据。
数据的第1行包含一个非负整数t表示sxk分身的次数。
对于每一组数据
第1行包含一个非负整数n表示分身的个数
第2行包含n个数,ai表示第i个分身的鸡儿你真美值
2.3 输出格式
输出到文件pick.out中。
对于每一个询问输出一个整数,表示你最少会掉的毛数
2.4 样例输入
2.6 数据约定
对于30%的数据满足 Σn≤1000.
对于另外30%的数据满足 ai>ai+1.
对于100%的数据满足 Σn≤200000,ai≤107.
#include<bits/stdc++.h>
#define Lowbit(i) (i&(-i))
#define ll long long
using namespace std;
const int N=2e5+1e4;
int n,a[N],b[N],p[N*]; ll w[N];
ll Max(ll x,ll y){
return x>y?x:y;
}
int rd(){
int s=,ff=;
char w=getchar();
while(w<''||w>''){
if(w=='-') ff=-;
w=getchar();
}
while(w>=''&&w<=''){
s=s*+(w-'');
w=getchar();
}
return s*ff;
}
ll Query(int x){ ll maxn=;
for(int i=x;i;i-=Lowbit(i))
maxn=Max(maxn,w[i]);
return maxn;
}
void Add(int x,ll y){
for(int i=x;i<=n;i+=Lowbit(i))
w[i]=Max(w[i],y);
}
int main(){
// freopen("pick.in","r",stdin);
// freopen("pick.out","w",stdout);
int t=rd();
while(t--){ n=rd(); int fla=; ll tot=;
for(int i=;i<=n;i++)
a[i]=rd(),b[i]=a[i],tot+=a[i];
sort(b+,b++n); int ct=;
for(int i=;i<=n;i++){
if(i==||b[i]!=b[i-]) ct++;
p[b[i]]=ct;
}
ll maxn=-1e17;
for(int i=;i<=n;i++){
ll f=Query(p[a[i]]); Add(p[a[i]],f+a[i]);
// for(int j=1;j<i;j++)
// if(a[j]<=a[i])
// f[i]=Max(f[i],f[j]+a[i]);
maxn=Max(maxn,f+a[i]);
}
for(int i=;i<=n;i++) p[a[i]]=,w[i]=;
printf("%lld\n",tot-maxn); continue;
}
return ;
}
对了,我订正的时候用的是树状数组,
因为是求前缀的最大值,所以树状数组是可以的,
记住区间求最大值千万不能用树状数组。
T3 一道另类的前缀和(1s 512MB)
一道数论题,先推式子:

现在求出
即可
前20%的n≤2000,预处理下,直接这样模拟就行了
再来看k=0,由二项式定理得:
S(n)就可以算出来了
到这里你就可以获得40分的好成绩,当然还不够,
要继续的话,我得先引出一个推论:

证明如下:

k=1就可以了
很简单对吧,我们继续
先模拟下k=2的情况

以此类推就可以得出最终答案:

就是

发现用到的
只有k个,把它和2i滚动地处理出来,但需要求n!
所以时间复杂度为O(n)。

拜拜~
杭州集训Day5的更多相关文章
- Loj #6073.「2017 山东一轮集训 Day5」距离
Loj #6073.「2017 山东一轮集训 Day5」距离 Description 给定一棵 \(n\) 个点的边带权的树,以及一个排列$ p\(,有\)q $个询问,给定点 \(u, v, k\) ...
- 「2017 山东一轮集训 Day5」苹果树
「2017 山东一轮集训 Day5」苹果树 \(n\leq 40\) 折半搜索+矩阵树定理. 没有想到折半搜索. 首先我们先枚举\(k\)个好点,我们让它们一定没有用的.要满足这个条件就要使它只能和坏 ...
- 2019暑期金华集训 Day5 树上数据结构
自闭集训 Day5 树上数据结构 前置知识 点分治 边分治 树链剖分 LCT Top Tree LCT时间复杂度 线段树每次查询是严格\(\log n\)的,然而splay维护连续段的时候,如果每次查 ...
- 2019暑期金华集训 Day5 生成函数
自闭集训 Day5 生成函数 一般生成函数 无脑地把序列变成多项式: \[ \{a_i\}\rightarrow A(x)=\sum_{n} a_nx^n \] 形式幂级数 生成函数是一种形式幂级数. ...
- 「疫期集训day5」火焰
我们就像一把穿刺敌人的利刃,把敌人开肠破肚----凡尔登高地前气势汹汹的德军 今天没有考试,挺好,有时间自己做题了 今天主要复习+学习了数据结构,列了个表: 已完成:单调队列,线段树,set/vect ...
- 2022寒假集训day5
day5 五道栈的题加上字符串. 单调队列. T1 表达式括号匹配 洛谷P1739 题目描述 假设一个表达式有英文字母(小写).运算符(+,-,*,/)和左右小(圆)括号构成,以"@&q ...
- [日常训练]常州集训day5
T1 Description 小$W$和小$M$一起玩拼图游戏啦~ 小$M$给小$M$一张$N$个点的图,有$M$条可选无向边,每条边有一个甜蜜值,小$W$要选$K$条边,使得任意两点间最多有一条路径 ...
- 2015湖南省选集训DAY5——work(BZOJ4177)
Description Mike有一个农场,这个农场n个牲畜围栏,如今他想在每一个牲畜围栏中养一仅仅动物,每仅仅动物能够是牛或羊,并且每一个牲畜围栏中的饲养条件都不同,当中第i个牲畜围栏中的动物长大后 ...
- FJ省队集训DAY5 T1
思路:考试的时候打了LCT,自以为能过,没想到只能过80.. 考完一想:lct的做法点数是100W,就算是nlogn也会T. 讲一下lct的做法把:首先如果一条边连接的两个点都在同一个联通块内,那么这 ...
随机推荐
- keep-alive 组件级缓存
前言 在Vue构建的单页面应用(SPA)中,路由模块一般使用vue-router.vue-router不保存被切换组件的状态, 它进行push或者replace时,旧组件会被销毁,而新组件会被新建,走 ...
- ESP8266--TCP Server
所谓server,可以简单理解为提供服务,提供数据的一个地方 ESP8266上建立一个server是比较简单的,不过是属于局域网内的server,因为真正意义上的server并不是这样的,大伙了解一个 ...
- pt-online-schema-change的用法
pt-online-schema-change的用法 环境: 10.192.30.53 主库 10.192.30.60 从库 mysql版本:8.0.17 为了方便操作,简单的写了如下的脚本. #!/ ...
- NOIP2016提高A组模拟10.15总结
第一题,就是将原有的式子一步步简化,不过有点麻烦,搞了很久. 第二题,枚举上下边界,维护一个单调队列,二分. 比赛上没有想到,只打了个暴力,坑了80分. 第三题,贪心,最后的十多分钟才想到,没有打出来 ...
- IDC机房跳线
服务网卡口与配线架 这里有一根网线 记录方式 签 A:23FM-23U-T07 (配线架网线) B:23FM-23U-NIC1(服务器网线) 在配线架的机柜旁边一定写明了 跳线的对面的 交换和配线 ...
- 19. ClustrixDB 执行计划解读
EXPLAIN语句用于显示ClustrixDB查询优化器(也称为Sierra)如何执行INSERT.SELECT.UPDATE和DELETE语句.EXPLAIN的输出有三列: Operation - ...
- N皇后问题 --使用位运算解决
关键位运算 x & (-x) 取得最低位1 x & (x-1) 去掉最低位1 class Solution(object): def totalNQueens(self, n): &q ...
- Linux基础教程 linux下使用find命令根据系统时间查找文件用法
LinuxFind 兄弟连Linux培训 总结这些时间戳包括 复制代码代码如下: mtime 文件内容上次修改时间 atime 文件被读取或访问的时间 ctime 文件状态变化时间 mtime 和 ...
- sh_08_打印小星星
sh_08_打印小星星 # 在控制台连续输出五行 *,每一行星号的数量依次递增 # * # ** # *** # **** # ***** # 1. 定义一个计数器变量,从数字1开始,循环会比较方便 ...
- 详解cocos2dx 3.0的release版本在android平台的签名过程
当您的游戏准备发布前,需要编译成为release版本,命令中需要增加 -m release,编译命令如下: cocos compile -p android -m release 在编译结束后,生成x ...