T1.中位数

二分答案x,原序列大于x的置为1,小于x的置为-1,判断是否存在长度大于m的区间和大于0(也就是大于x的数多于小于x的数),若有,则ans>=x,否则ans<x

#include<iostream>
#include<cstdio> using namespace std; inline int rd(){
int ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} const int MAXN=; int n,m; int a[MAXN],b[MAXN];
bool check(int x){
int mn=<<;
for(int i=;i<=n;i++)b[i]=a[i]<x?-:;
for(int i=;i<=n;i++){
if(i>=m) mn=min(mn,b[i-m]);
b[i]+=b[i-];
if(i>=m&&b[i]>mn)return ;
}
return ;
} int main(){
n=rd();m=rd();
int l=,r=<<,mid,ans;
for(int i=;i<=n;i++) a[i]=rd();
while(l<=r){
mid=l+r>>;
if(check(mid))ans=mid,l=mid+;
else r=mid-;
}
cout<<ans;
return ;
}

T2.数数字

数位DP还行,记忆化搜索实现

#include<iostream>
#include<cstdio>
#include<map> using namespace std; typedef long long ll; inline ll rd(){
ll ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} const int MAXN=; int a[MAXN];
ll l,r,l1,r1;
map<ll,ll> mp[MAXN]; ll dfs(int cur,ll sum,ll lim,ll xzero){
if(!cur){
if(xzero) sum=;
return (l1<=sum&&sum<=r1);
}
if(!xzero&&!lim&&mp[cur].count(sum))return mp[cur][sum];
ll ret=;
int mx=;
if(lim)mx=a[cur];
for(int i=;i<=mx;i++){
if(xzero)ret+=dfs(cur-,(i==)?1ll:i*1ll,lim&&(i==mx),xzero&&(i==));
else ret+=dfs(cur-,sum*1ll*i,lim&&(i==mx),xzero&&(i==));
}
if(!xzero&&!lim)mp[cur][sum]=ret;
return ret;
} ll solve(ll x){
int cnt=;
while(x){
a[++cnt]=x%;
x/=;
}
return dfs(cnt,,,);
} int main(){
l=rd();r=rd();l1=rd();r1=rd();
cout<<solve(r)-solve(l-);
return ;
}

T3.保护

ErkkiErkko的主席树想法

#include<iostream>
#include<cstdio>
#include<vector> using namespace std; inline int rd(){
int ret=,f=;char c;
while(c=getchar(),!isdigit(c))f=c=='-'?-:;
while(isdigit(c))ret=ret*+c-'',c=getchar();
return ret*f;
} const int MAXN=; int n,m,q;
vector<int> vec[MAXN]; int rt[MAXN]; struct Edge{
int next,to;
}e[MAXN<<];
int ecnt,head[MAXN];
inline void add(int x,int y){
e[++ecnt].next = head[x];
e[ecnt].to = y;
head[x] = ecnt;
} int fa[MAXN],hson[MAXN],siz[MAXN],dep[MAXN];
int top[MAXN],id[MAXN],tim=;
int ll[MAXN],rr[MAXN];
void dfs1(int x,int pre){
fa[x]=pre;siz[x]=;dep[x]=dep[pre]+;
ll[x]=++tim;id[tim]=x;
int mx=;
for(int i=head[x];i;i=e[i].next){
int v=e[i].to;
if(v==pre) continue;
dfs1(v,x);siz[x]+=siz[v];
if(siz[v]>mx){mx=siz[v];hson[x]=v;}
}
rr[x]=tim;
} void dfs2(int x,int tp){
top[x]=tp;
if(hson[x])dfs2(hson[x],tp);
for(int i=head[x];i;i=e[i].next){
int v=e[i].to;
if(v==fa[x]||v==hson[x]) continue;
dfs2(v,v);
}
}
int lca(int x,int y){
while(top[x]!=top[y]){
if(dep[top[x]]<dep[top[y]])swap(x,y);
x=fa[top[x]];
}
return dep[x]<=dep[y]?x:y;
}
int ch[MAXN*][],val[MAXN*],tot;
void update(int x,int &cur,int l,int r){
int f=cur;cur=++tot;val[cur]=val[f]+;
ch[cur][]=ch[f][];ch[cur][]=ch[f][];
if(l==r)return;
int mid=l+r>>;
if(x<=mid)update(x,ch[cur][],l,mid);
else update(x,ch[cur][],mid+,r);
}
int query(int cur,int l,int r,int f,int K){
if(val[f]-val[cur]<K) return -;
if(l==r)return l;
int mid=l+r>>;
if(K<=val[ch[f][]]-val[ch[cur][]])
return query(ch[cur][],l,mid,ch[f][],K);
return query(ch[cur][],mid+,r,ch[f][],K-(val[ch[f][]]-val[ch[cur][]]));
} int main(){
int x,y;
n=rd();m=rd();
for(int i=;i<n;i++){
x=rd();y=rd();add(x,y);add(y,x);
}
dfs1(,);dfs2(,);
for(int i=;i<=m;i++){
x=rd();y=rd();
int z=lca(x,y);
vec[x].push_back(dep[z]);
vec[y].push_back(dep[z]);
}
for(int i=;i<=n;i++){
rt[i]=rt[i-];
int up=vec[id[i]].size();
for(int j=;j<=up-;j++){
update(vec[id[i]][j],rt[i],,n);
}
}
q=rd();
int ans=;
for(int i=;i<=q;i++){
x=rd();y=rd();
if(!y)ans=dep[x]-dep[];
else{
int tmp=query(rt[ll[x]-],,n,rt[rr[x]],y);
if(tmp==-||tmp>=dep[x])ans=;
else ans=dep[x]-tmp;
}
printf("%d\n",ans);
}
}

NowCoder 9.9 模拟赛的更多相关文章

  1. 「NOWCODER」CSP-S模拟赛第3场

    「NOWCODER」CSP模拟赛第3场 T1 货物收集 题目 考场思路即正解 T2 货物分组 题目 考场思路 题解 60pts 算法:一维 DP 100pts 算法:一维 DP ?线段树 + 单调栈 ...

  2. nowcoder 提高组模拟赛 选择题 解题报告

    选择题 链接: https://www.nowcoder.com/acm/contest/178/B 来源:牛客网 题目描述 有一道选择题,有 \(a,b,c,d\) 四个选项. 现在有 \(n\) ...

  3. nowcoder 提高组模拟赛 最长路 解题报告

    最长路 链接: https://www.nowcoder.com/acm/contest/178/A 来源:牛客网 题目描述 有一张 \(n\) 个点 \(m\) 条边的有向图,每条边上都带有一个字符 ...

  4. nowcoder(牛客网)提高组模拟赛第一场 解题报告

    T1 中位数(二分) 这个题是一个二分(听说是上周atcoder beginner contest的D题???) 我们可以开一个数组b存a,sort然后二分b进行check(从后往前直接遍历check ...

  5. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  6. NOI模拟赛 Day1

    [考完试不想说话系列] 他们都会做呢QAQ 我毛线也不会呢QAQ 悲伤ING 考试问题: 1.感觉不是很清醒,有点困╯﹏╰ 2.为啥总不按照计划来!!! 3.脑洞在哪里 4.把模拟赛当作真正的比赛,紧 ...

  7. NOIP第7场模拟赛题解

    NOIP模拟赛第7场题解: 题解见:http://www.cqoi.net:2012/JudgeOnline/problemset.php?page=13 题号为2221-2224. 1.car 边界 ...

  8. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  9. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

随机推荐

  1. 洛谷 P3381 【模板】最小费用最大流

    题目描述 如题,给出一个网络图,以及其源点和汇点,每条边已知其最大流量和单位流量费用,求出其网络最大流和在最大流情况下的最小费用. 输入输出格式 输入格式: 第一行包含四个正整数\(N.M.S.T\) ...

  2. spark RPC详解

    前段时间看spark,看着迷迷糊糊的.最近终于有点头绪,先梳理了一下spark rpc相关的东西,先记录下来. 1,概述 个人认为,如果把分布式系统(HDFS, HBASE,SPARK等)比作一个人, ...

  3. 关于C#解析shp文件

    最近在做项目时,要求可以上传shp文件到指定的地图中,地图开发使用的arcgisapi,网上找了好多解析shp文件的js,但都不是太理想,直到群里的小伙伴提到Gdal 首先,到GDAL官网下载自己使用 ...

  4. 关于使用memcached提高并发的文章,很有用

    http://blog.csdn.net/ywh147/article/details/9385137 http://phl.iteye.com/category/292555 memcached 解 ...

  5. css3动画:animation

    例: -webkit-animation: myfirst 5s linear 2s infinite alternate; animation: myfirst 5s linear 2s infin ...

  6. java中循环的不同终止方式

    1.break:直接强行跳出当前循环,不再执行剩余代码.但在多重循环的情况下,若break在内层循环中,则仅仅终止了内层循环,外循环照常执行. 2.continue:仅仅终止此次循环. 3.retur ...

  7. RxJava四个基础接口

    Publisher Subscriber Subscription Processor ----------------------------------- public interface Pub ...

  8. arcgis jsapi接口入门系列(0):总览

    开发环境: arcgis jsapi版本4.9 由于我们这套代码是基于vue,webpack开发的,会有少数vue代码,但总体不影响 里面还有些我们公司的js库和html css,给出的代码不能百分百 ...

  9. UIWebView全解

    是iOS内置的浏览器控件,可以浏览网页.打开文档等 能够加载html/htm.pdf.docx.txt等格式的文件 系统自带的Safari浏览器就是通过UIWebView实现的 MIME的英文全称是“ ...

  10. json格式引起的 parse 报错

    json格式: {"ID":"4","PICDATAS":"[{"picDevNo": 1},{"p ...