常州day7
Task1
蛤布斯有一个序列,初始为空。它依次将 1-n 插入序列,其中 i 插到当前第 ai 个数的右边 (ai=0 表示插到序列最左边)。它希望你帮 它求出最终序列。
对于 100%的数据,n<=1000000,0<=ai<i。
倒着做,寻找第ai+1个空位插入即可,用线段树维护,注意卡常
O(nlogn)
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<string.h>
#include<algorithm>
#include<math.h>
#include<queue>
#include<set>
#include<map>
#include<vector>
#define re register
#define il inline
using namespace std;
const int N=;
int n,a[N],c[N],m=,ans[N],tot=;
char t[];
il int read(){
re int hs=;re char c=getchar();
while(!isdigit(c)) c=getchar();
while(isdigit(c)){
hs=(hs<<)+(hs<<)+c-'';
c=getchar();
}
return hs;
}
il void print(re int h){
tot=;
while(h>){
t[++tot]=h%+'';
h/=;
}
for(re int i=tot;i>;--i)
putchar(t[i]);
putchar(' ');
}
int main(){
freopen("sequence.in","r",stdin);
freopen("sequence.out","w",stdout);
n=read();
while(m<n+) m<<=;
for(int i=;i<=n;++i) a[i]=read(),c[i+m]=;
for(int i=m-;i>;--i) c[i]=c[i+i]+c[i+i+];
for(re int i=n,j,k;i>=;--i){
k=a[i]+;
for(re int p=;;){
if(c[p+p]>=k){
p<<=;
}
else{
k-=c[p+p];
p<<=;++p;
}
if(p>m){
j=p-m;break;
}
}
ans[j]=i;
for(c[j+=m]=,j>>=;j;j>>=)
c[j]=c[j<<]+c[(j<<)+];
}
for(int i=;i<=n;i++)
print(ans[i]);
return ;
}
Task2
蛤布斯有 n 个物品和一个大小为 m的背包,每个物品有大小和价 值,它希望你帮它求出背包里最多能放下多少价值的物品。
对于 100%的数据,n<=40,0<=m<=10^18,0<=xi,wi<=10^15。
折半枚举,二分查找
O(2^n*n)
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<string>
#include<string.h>
#include<math.h>
#include<algorithm>
#define il inline
#define re register
using namespace std;
typedef long long ll;
const int N=;
int n,s,t,l,r,mid;
ll W,w[],v[],x,y,tot,ans;
struct data{ll p,q;} a[N],b[N];
il bool cmp(re data a,re data b){
return (a.p!=b.p)?(a.p<b.p):(a.q>b.q);
}
int main(){
freopen("pack.in","r",stdin);
freopen("pack.out","w",stdout);
scanf("%d%I64d",&n,&W);
for(int i=;i<=n;i++)
scanf("%I64d%I64d",&w[i],&v[i]);
s=n/;t=n-s;
for(re int S=(<<s)-;S>;--S){
x=y=;
for(re int i=;i<s;++i)
if(S&(<<i)){
x+=w[i+];
y+=v[i+];
}
a[S].p=x;a[S].q=y;
}
sort(a+,a+(<<s),cmp);
for(re int i=;i<(<<s);++i){
if(a[i].p>W) break;
if(a[i].q>b[tot].q) b[++tot]=a[i];
}
b[].p=b[].q=;
for(re int S=(<<t)-;S>;--S){
x=y=;
for(re int i=;i<t;++i)
if(S&(<<i)){
x+=w[i++s];
y+=v[i++s];
}
if(x>W) continue;
l=;r=tot;
while(l<r){
mid=(l+r+)/;
if(b[mid].p<=W-x) l=mid;
else r=mid-;
}
ans=max(ans,y+b[l].q);
}
cout<<ans;
return ;
}
Task3


对于 100%的数据,n<=5000,m<=100000
显然如果一条线段树上的线段如果和一个查询有重叠,那么就会被这个查询访问一次。
容易得到暴力动规方程令f[i][j]表示选取区间[i,j]作为线段树上一节点的答案,g[i][j]为[i,j]与多少个查询重叠
f[i][j]=min(f[i][k]+f[k][j]+g[i][j])
显然这满足四边形不等式优化。
时间复杂度O(n^2)
常州day7的更多相关文章
- [日常训练]常州集训day7
T1 Description 给定一个序列,初始为空.依次将$1-n$插入序列,其中$i$插到当前第$a_i$个数的右边($a_i=0$表示插到序列最左边).求最终序列. Input 第一行一个整数$ ...
- 常州培训 day7 解题报告
最后一天..有些感慨,这七天被虐的感动万分 第一题: 题目大意: 求出 n*i(i=1,2,3....n) mod p的逆元 n<p<=3000000 ,p是质数. 之前写过了,懒得再写 ...
- 【2016常州一中夏令营Day7】
序列(sequence)[题目描述]蛤布斯有一个序列,初始为空.它依次将 1-n 插入序列,其中 i插到当前第 ai 个数的右边 (ai=0 表示插到序列最左边).它希望你帮它求出最终序列.[输入数据 ...
- day7
本节作业: 选课系统 角色:学校.学员.课程.讲师要求:1. 创建北京.上海 2 所学校2. 创建linux , python , go 3个课程 , linux\py 在北京开, go 在上海开3. ...
- Python之路,Day7 - Python基础7 面向对象
本节内容: 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法. 引子 你现在是一家游戏公司的开发人员,现在需要你开发一款叫做<人狗大战> ...
- Python Day7
概述 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 静态方法 通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法 ...
- Python之路,Day7 - 面向对象编程进阶
本节内容: 面向对象高级语法部分 经典类vs新式类 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 作业:开发一个支持多用户在线的FTP程序 经典类vs新式类 把下面代 ...
- 冲刺阶段day7
day7 项目进展 又是一个周三,有轮到我写东西了.首先我们对昨天的成果调试了几遍,改了几个小Bug之后就没有什么问题了,完善了登录界面的代码,学生管理这部分终于被敲定下来,并且正式完工了.然后还生下 ...
- python学习之路-day7
本节内容: 面向对象高级语法部分 静态方法.类方法.属性方法 类的特殊方法 反射 异常处理 Socket开发基础 面向对象高级语法部分 静态方法 ...
随机推荐
- sklearn半监督学习
标签: 半监督学习 作者:炼己者 欢迎大家访问 我的简书 以及 我的博客 本博客所有内容以学习.研究和分享为主,如需转载,请联系本人,标明作者和出处,并且是非商业用途,谢谢! --- 摘要:半监督学习 ...
- LumiSoft.Net 收发邮件
一:LumiSoft.Net简介 Lumisoft is a software development company specialised in mobile phones and tablets ...
- cocos2dx2.0 帧动画的创建和播放过程 深入分析
一.帧动画的创建过程帧动画的实现有四个不可或缺的类,如下:1.CCSpriteFrame:精灵帧信息.存储帧动画的每一帧的纹理基本信息. class CC_DLL CCSpriteFrame : pu ...
- Springboot 配置实现定时任务
善于思考,拥抱变化,才能拥有未来 在springboot项目中可以通过配置文件来实现定时任务的轮询,当然也可以将具体执行的corn表达式配置到数据库,实现动态从数据库获取. @Configuratio ...
- boot,rebuild,resize,migrate有关的scheduler流程
代码调用流程: 1. nova.scheduler.client.query.SchedulerQueryClient#select_destinations 2. nova.scheduler.rp ...
- mysql基础知识大全
前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是 ...
- ECharts之force力导向布局图——数据源说明及后端API约定
Echarts ? 关于 Echarts 请移步这里 force 力导向图 实现方式,如: function require_EC () { require( [ 'echarts', //载入for ...
- Alpha发布用户使用报告
此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2325] 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙 ...
- 王者荣耀交流协会scrum立会20171111
1.立会照片 成员王超,高远博,冉华,王磊,王玉玲,任思佳,袁玥全部到齐. master:高远博 2.时间跨度: 2017年11月10日 18:00 - 18:33 ,总计33分钟. 3.地 点: 一 ...
- 20135208 JAVA第四次实验
课程:Java程序与设计 班级:1352 姓名:贺邦 小组成员: 20135212池彬宁 20135208贺邦 学号:20135208 成绩: 指导教师:娄嘉鹏 ...