NOIp2018集训test-9-6(pm)
T1T2是洛谷原题。Orz辉神290,被辉神吊起来打。
二分答案。这题似乎卡精度,不开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
*/
状态定义写代码里了,比较蠢的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)的更多相关文章
- NOIp2018集训test-10-24(am&pm)
李巨连续AK三场了,我跟南瓜打赌李巨连续AK七场,南瓜赌李巨连续AK五场. DAY1 T1 qu 按题意拿stack,queue和priority_que模拟即可.特判没有元素却要取出的情况. T2 ...
- 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++ ...
- NOIp2018集训test-9-19(am&pm)
AM 这是一套在长沙考过而且我能记得全部正解的题,然后期望得分300实际得分155. T1 很套路,随便搞(我当年是怎么花大半场时间写T1并且写出现在两倍长的代码的??) //Achen #inclu ...
- NOIp2018集训test-9-22(am/pm) (联考三day1/day2)
szzq学长出的题,先orz一下. day1 倾斜的线 做过差不多的题,写在我自己的博客里,我却忘得一干二净,反而李巨记得清清楚楚我写了的. 题目就是要最小化这个东西 $|\frac{y_i-y_j} ...
- NOIp2018集训test-9-17(pm)
T1记忆(memory) 我大概是只记忆只有七秒的金鱼吧.看了下以前的代码发现真的很简单,但是考场上只打了个暴力,虽然骗了88pt.就是枚举选的是哪个串,然后vis[i]表示选了i这些位能不能猜出它, ...
- NOIp2018集训test-9-8(pm) (联考一day2)
把T1题读错了,想了一个多小时发现不可做.然后打了t2,常数不优秀.然后去打t3,lct,结果打挂爆0了. 然后今天就爆炸了. 如果这是noip我今年就可以直接回去学常规了.学常规多好,多开心. 今天 ...
- NOIp2018集训test-9-7(pm) (联考一day1)
又被辉神吊打了.今天不仅被辉神李巨吊打,还给基本上给全班垫底了. 看到T3就知道是十进制快速幂,全机房考试的当时应该就我会,结果我tm没找到递推. Orz lyc BM直接水过,Orz wys六个fo ...
- NOIp2018集训test-9-5(pm)
老张说:这套题太简单啦,你们最多两个小时就可以AK啦! 题 1 数数 我看到T1就懵了,这就是老张两个小时可以AK的题的T1?? 然后我成功地T1写了1h+,后面1h打了t2.t3暴力,就很开心. 等 ...
- NOIp2018集训test-9-2(pm)
其实这套题我爆0了,T1define 写成ddefine编译错误 T2有两个变量爆int 但是我看zwh不在悄悄地改了,我心里还是十分愧疚(没有)的.主要是林巨已经虐我125了要是再虐我200分我大概 ...
随机推荐
- k8s集群搭建之二:etcd集群的搭建
一 介绍 Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现. 简单:支持 curl 方式的用户 API (HTTP+JSON) 安全:可选 SSL 客户端证书认证 快速 ...
- leetcood学习笔记-13
错误记录 class Solution: def romanToInt(self, s: str) -> int: d = {'I':1,'V':5,'X':10,'L':50,'C':100, ...
- JVM调优学习 【更新中】
JVM调优(jdk1.8) 老生常谈,面试吹牛的的最佳谈资,在接下来的几天里,我找了点资料来对其进行一波学习: 本地环境是不需要对我们的虚拟机进行优化的,一般在生产环境下,也就是Linux下才有对JV ...
- Openstack组件部署 — Nova overview
目录 目录 前文列表 前言 Compute service overview Nova 的组件 nova-api service nova-api-metadata service nova-comp ...
- 1251 client does not support
1.mysql -uroot -p 123456 (用户root,密码123465) 2.use mysql: 3.ALTER USER 'root'@'localhost' IDENT ...
- AI应用在金融领域,如何能够在商业上有所突破
AI应用在金融领域,如何能够在商业上有所突破 如今,随着社会不断发展,技术不断进步,国内外各大金融机构已经在大数据.人工智能.区块链等新技术上有很多尝试,智能客服.智能投顾等新金融形式也早已不新鲜.那 ...
- 16. Jmeter-监听器
jmeter-监听器介绍与使用 察看结果树 Summary Report 聚合报告 Backend Listener Aggregate Graph 断言结果 Comparison Assertion ...
- 文本表征:SoW、BoW、TF-IDF、Hash Trick、doc2vec、DBoW、DM
原文地址:https://www.jianshu.com/p/2f2d5d5e03f8 一.文本特征 (一)基本文本特征提取 词语数量 常,负面情绪评论含有的词语数量比正面情绪评论更多. 字符数量 常 ...
- CodeForces1249E-By Elevator or Stairs?-好理解自己想不出来的dp
Input The first line of the input contains two integers nn and cc (2≤n≤2⋅105,1≤c≤10002≤n≤2⋅105,1≤c≤1 ...
- 专题:『systemd』
[COMMAND] Systemd Daemons: systemd networkd journald logind "user session" Systemd units: ...