T1T2是洛谷原题。Orz辉神290,被辉神吊起来打。

题 1 包裹快递

二分答案。这题似乎卡精度,不开long double二分500次都过不去。

 //Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<set>
#include<map>
#define Formylove return 0
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=;
typedef long long LL;
typedef long double db;
using namespace std;
int n,x[N],y[N],s[N]; template<typename T>void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} int ck(db v) {
if(v==0.0) return ;
db now=0.0;
For(i,,n) {
db ti=((db)s[i])/(1.0*v);
if(now+ti>(db)y[i]) return ;
now=max(now+ti,(db)x[i]);
}
return ;
} #define ANS
int main() {
#ifdef ANS
freopen("express.in","r",stdin);
freopen("express.out","w",stdout);
#endif
read(n);
For(i,,n) {
read(x[i]); read(y[i]); read(s[i]);
}
db l=0.0,r=1e7;
int cnt=;
while(cnt<) {
cnt++;
db mid=((l+r)/2.0);
if(ck(mid)) r=mid;
else l=mid;
}
printf("%.2Lf\n",l);
Formylove;
}
/*
3
1 2 2
6 6 2
7 8 4
*/

题 2 迎接仪式

状态定义写代码里了,比较蠢的dp,但是当时我把自己蠢哭了,只考虑了这样换((()))没考虑这样换(())(())(),写了个奇奇怪怪的dp,然后只有50

//Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<set>
#include<map>
#define Formylove return 0
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int f[][][][],a[N],n,K,ans;
char s[N]; template<typename T>void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} void get_max(int &a,int b) { if(b>a) a=b; } #define ANS
int main() {
#ifdef ANS
freopen("welcome.in","r",stdin);
freopen("welcome.out","w",stdout);
#endif
read(n); read(K);
scanf("%s",s+);
For(i,,n) {
if(s[i]=='j') a[i]=;
else a[i]=;
}
memset(f,,sizeof(f));
int inf=f[][][][],o=;
f[o][][][]=; //f[i][j][k][l] 前i个数换了j次,有k次是1,第i个数换没有
For(i,,n) {
o^=;
memset(f[o],,sizeof(f[o]));
For(j,,K*) For(k,,K) For(l,,) if(f[o^][j][k][l]!=inf) {
get_max(f[o][j][k][],f[o^][j][k][l]+((i>)&&(a[i-]^l)&&!a[i]));
get_max(f[o][j+][k+a[i]][],f[o^][j][k][l]+((i>)&&(a[i-]^l)&&a[i]));
}
}
For(i,,K) {
get_max(ans,f[o][i*][i][]);
get_max(ans,f[o][i*][i][]);
}
printf("%d\n",ans);
Formylove;
}

题 3 与众不同

从后往前扫一遍就可以知道每个数开头的连续的互不相同的序列的长度,n^2做法就每个询问挨着枚举开头,长度和当前结尾减开头+1取min。

去掉取min的过程就可以线段树了,发现对于一个数,完美序列包涵它的开头是一段连续区间,预处理出最靠前的位置,询问离线下来按结尾排序,每次把当前结尾之外的点的包涵它的开头的区间长度-1即可。

 //Achen
#include<algorithm>
#include<iostream>
#include<cstring>
#include<cstdlib>
#include<vector>
#include<cstdio>
#include<queue>
#include<cmath>
#include<set>
#include<map>
#define Formylove return 0
#define For(i,a,b) for(int i=(a);i<=(b);i++)
#define Rep(i,a,b) for(int i=(a);i>=(b);i--)
const int N=;
typedef long long LL;
typedef double db;
using namespace std;
int n,m,a[N],b[N],ls[N],sz,f[N],r[N],l[N],ans[N]; template<typename T>void read(T &x) {
char ch=getchar(); x=; T f=;
while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
if(ch=='-') f=-,ch=getchar();
for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
} #define lc (x<<1)
#define rc ((x<<1)|1)
#define mid ((l+r)>>1)
int sg[N<<],lz[N<<];
void down(int x,int l,int r) {
if(!lz[x]) return;
sg[lc]+=lz[x]; sg[rc]+=lz[x];
lz[lc]+=lz[x]; lz[rc]+=lz[x];
lz[x]=;
} void update(int x,int l,int r,int ql,int qr,int v) {
if(l>=ql&&r<=qr) {
sg[x]+=v; lz[x]+=v; return;
}
down(x,l,r);
if(ql<=mid) update(lc,l,mid,ql,qr,v);
if(qr>mid) update(rc,mid+,r,ql,qr,v);
sg[x]=max(sg[lc],sg[rc]);
} int qry(int x,int l,int r,int ql,int qr) {
if(l>=ql&&r<=qr) return sg[x];
down(x,l,r);
if(qr<=mid) return qry(lc,l,mid,ql,qr);
if(ql>mid) return qry(rc,mid+,r,ql,qr);
return max(qry(lc,l,mid,ql,qr),qry(rc,mid+,r,ql,qr));
} struct node {
int id,l,r;
}qs[N];
vector<node>vc[N]; #define ANS
int main() {
#ifdef ANS
freopen("diff.in","r",stdin);
freopen("diff.out","w",stdout);
#endif
read(n); read(m);
For(i,,n) read(a[i]),b[i]=a[i];
sort(b+,b+n+);
sz=unique(b+,b+n+)-(b+);
For(i,,n) a[i]=lower_bound(b+,b+sz+,a[i])-b;
Rep(i,n,) {
f[i]=f[i+]+;
if(!r[i+]) r[i]=i;
else r[i]=r[i+];
if(ls[a[i]]) {
if(ls[a[i]]-<r[i]) r[i]=ls[a[i]]-;
f[i]=min(f[i],ls[a[i]]-i);
}
update(,,n,i,i,f[i]);
ls[a[i]]=i;
}
For(i,,n) l[i]=i;
For(i,,n) l[r[i]]=min(l[r[i]],i);
Rep(i,n-,) l[i]=min(l[i],l[i+]);
For(i,,m) {
int l,r;
read(l); read(r);
l++; r++;
qs[i].l=l; qs[i].r=r;
qs[i].id=i;
vc[qs[i].r].push_back(qs[i]);
}
Rep(i,n,) {
int upp=vc[i].size();
For(j,,upp-) {
node q=vc[i][j];
ans[q.id]=qry(,,n,q.l,q.r);
}
if(l[i]<=i)
update(,,n,l[i],i,-);
}
For(i,,m) printf("%d\n",ans[i]);
Formylove;
}
/*
9 2
2 5 4 1 2 3 6 2 4
0 8
2 6
*/

NOIp2018集训test-9-6(pm)的更多相关文章

  1. NOIp2018集训test-10-24(am&pm)

    李巨连续AK三场了,我跟南瓜打赌李巨连续AK七场,南瓜赌李巨连续AK五场. DAY1 T1 qu 按题意拿stack,queue和priority_que模拟即可.特判没有元素却要取出的情况. T2 ...

  2. NOIp2018集训test-9-21(am/pm)

    Am DAY1 抄代码 送分题 //Achen #include<bits/stdc++.h> #define For(i,a,b) for(int i=(a);i<=(b);i++ ...

  3. NOIp2018集训test-9-19(am&pm)

    AM 这是一套在长沙考过而且我能记得全部正解的题,然后期望得分300实际得分155. T1 很套路,随便搞(我当年是怎么花大半场时间写T1并且写出现在两倍长的代码的??) //Achen #inclu ...

  4. NOIp2018集训test-9-22(am/pm) (联考三day1/day2)

    szzq学长出的题,先orz一下. day1 倾斜的线 做过差不多的题,写在我自己的博客里,我却忘得一干二净,反而李巨记得清清楚楚我写了的. 题目就是要最小化这个东西 $|\frac{y_i-y_j} ...

  5. NOIp2018集训test-9-17(pm)

    T1记忆(memory) 我大概是只记忆只有七秒的金鱼吧.看了下以前的代码发现真的很简单,但是考场上只打了个暴力,虽然骗了88pt.就是枚举选的是哪个串,然后vis[i]表示选了i这些位能不能猜出它, ...

  6. NOIp2018集训test-9-8(pm) (联考一day2)

    把T1题读错了,想了一个多小时发现不可做.然后打了t2,常数不优秀.然后去打t3,lct,结果打挂爆0了. 然后今天就爆炸了. 如果这是noip我今年就可以直接回去学常规了.学常规多好,多开心. 今天 ...

  7. NOIp2018集训test-9-7(pm) (联考一day1)

    又被辉神吊打了.今天不仅被辉神李巨吊打,还给基本上给全班垫底了. 看到T3就知道是十进制快速幂,全机房考试的当时应该就我会,结果我tm没找到递推. Orz lyc BM直接水过,Orz wys六个fo ...

  8. NOIp2018集训test-9-5(pm)

    老张说:这套题太简单啦,你们最多两个小时就可以AK啦! 题 1 数数 我看到T1就懵了,这就是老张两个小时可以AK的题的T1?? 然后我成功地T1写了1h+,后面1h打了t2.t3暴力,就很开心. 等 ...

  9. NOIp2018集训test-9-2(pm)

    其实这套题我爆0了,T1define 写成ddefine编译错误 T2有两个变量爆int 但是我看zwh不在悄悄地改了,我心里还是十分愧疚(没有)的.主要是林巨已经虐我125了要是再虐我200分我大概 ...

随机推荐

  1. Hadoop(二)HDFS

    海量数据处理 分而治之 核心思想: 把数据分发到多个节点 移动计算到数据附近 计算节点进行本地数据处理 优选顺序,次之随机读 一.HDFS概述 修改,先删除,再重新生成 1.架构 namenode维护 ...

  2. C之输入输出函数(2) -- gets()

    https://www.ibm.com/support/knowledgecenter/en/ssw_ibm_i_71/rtref/gets.htm#gets #include <stdio.h ...

  3. ( vant ) 新手踩坑

    最近在用vant 做H5 页面,坑太他娘的坑娘啊!!!!!!!!!!!!!!!! 1,修改vant组件样式问题 vant 修改组件的样式时,在scoped 属性下没有效果.如果去掉scope 会造成全 ...

  4. composer安装后台模板

    先下载composer的windows安装包 cmd切换到源代码所在目录 https://www.cnblogs.com/wgphp/p/8001434.html 安装过程可以参照这篇文章 一点问题是 ...

  5. 【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包

    一,匿名方法定义 (参数1,参数2,....){ 方法体... return 返回值 } 二,匿名方法特性 可赋值给变量,通过变量进行调用 可在其他方法中直接调用或传递给其他方法 void main( ...

  6. JAVA学习之Java语音基础组成

    Java语音基础组成一.关键字:被Java赋予含义的单词(如class.interface) 二.标识符:在程序中自定义的一些名称三.注释:单行注释(//).多行注释(/**/).文档注释(被java ...

  7. DNF游戏币拼团

    DNF游戏币拼团活动方案 活动目的: 通过拼团的方式来实现老拉新和现实新用户转换,可以通过有需求的用户来告知好友来进行用户裂变 活动时间:预计时间2018.11.11-2018.11.23 SLOGA ...

  8. mtv 与mvc

    1.MVC与MTV模型 MVC模型 Web服务器开发领域里著名的MVC模式,所谓MVC就是把Web应用分为模型(M),控制器(C)和视图(V)三层,他们之间以一种插件式的.松耦合的方式连接在一起,模型 ...

  9. Promise 的深度学习

    1.Promise 是什么? Promise 是异步编程的一种解决方案,比传统的解决方案–回调函数和事件--更合理和更强大.Promise ,简单说就是一个容器,里面保存着某个未来才回结束的事件(通常 ...

  10. 使用Postman模拟HTTP请求

    使用Postman模拟HTTP请求 Postman是一款强大的前端调试工具,不管是开发人员还是测试人员都会需要调试接口程序,如RestAPI,此时可以通过向服务器发送不同的HTTP请求来判断接口返回结 ...