常州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开发基础 面向对象高级语法部分 静态方法 ...
随机推荐
- NO--09今天遇到的一点小问题之axios全局注册
今天用 Vue 写项目的时候,用到 axios ,因为 axios 不能用 Vue.use() ,所以在每个 .vue 文件中使用 axios 时就需要 import , .vue 文件少的话还好说, ...
- java获取IP地址
最近在一个多系统集成的项目中,由于跳转路径含IP地址,每次IP改了重启项目都得改好多地方,甚是麻烦.刚在网上了解到java获取IP地址,给大家分享下: 首先要导入jar包 request.getRem ...
- 451. Swap Nodes in Pairs【LintCode java】
Description Given a linked list, swap every two adjacent nodes and return its head. Example Given 1- ...
- 【python 3.6】笨办法取出列表中的字典的value
#python 3.6 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'BH8ANK' x = {'RegionSet': [{' ...
- JQuery点击打开再点击关闭
$("#03").click(function() { $("#03").show(speed); $("#03").css("c ...
- Fulfilling Work: The Shippers More entrepreneurs hire 'fulfillment' outfits to store and ship their products
By Stu Woo June 23, 2011 Brett Teper faced a logistical problem when he and a partner founded ModPro ...
- [笔记] FreeBSD使用小技巧
非交互式添加用户 sed直接修改文件 sed -i '' 's/a/b/' file sed添加一行 sed '1a\ newline' file sed '1s/.*/&\'$'\nnewl ...
- 调试和开发npm模块的方式
ln -s(软连接) 假设my-project是运行npm模块的项目,vue-router是我们需要调试的npm模块 将vue-router下载到与my-project同级目录中. git clone ...
- USACO 1.3.3 Calf Flac(Manacher算法)
Description 据说如果你给无限只母牛和无限台巨型便携式电脑(有非常大的键盘),那么母牛们会制造出世上最棒的回文.你的工作就是去寻找这些牛制造的奇观(最棒的回文). 在寻找回文时不用理睬那些标 ...
- 王者荣耀交流协会 - 第7次Scrum会议(第二周)
1.例会照片 照片由王超(本人)拍摄,组内成员刘耀泽,高远博,王磊,王玉玲,王超,任思佳,袁玥全部到齐. 2.时间跨度: 2017年10月26日 17:05 — 17:47 ,总计42分钟. 3.地 ...