NOIP2017金秋冲刺训练营杯联赛模拟大奖赛第一轮Day1

T1 天天去哪儿吃

直接枚举

#include<cstdio>
#include<algorithm>
using namespace std;
#define N 100001
int d[N<<];
bool g[N];
int main()
{
int n,m;
long long a,b;
scanf("%d%d%lld%lld",&n,&m,&a,&b);
scanf("%d%d",&d[],&d[]);
int now;
int len=n/;
for(int i=;i>=max(-len,);i--) g[d[i]]=true;
for(int i=;i<=m;i++)
{
now=(a*d[i-]+b*d[i-])%n;
while(g[now])
{
now++;
if(now==n) now=;
}
d[i]=now;
if(i-len>) g[d[i-len]]=false;
g[now]=true;
}
for(int i=;i<=m;i++) printf("%d ",d[i]);
}

T2 天天和树tree

找除去最长链之后的最长半链

3遍dfs即可

#include<cstdio>
#include<algorithm>
#define N 100001
using namespace std;
int front[N],nxt[N<<],to[N<<],tot;
int maxn,wh1,wh2;
int pre[N],d[N];
bool in[N];
void add(int u,int v)
{
to[++tot]=v; nxt[tot]=front[u]; front[u]=tot;
to[++tot]=u; nxt[tot]=front[v]; front[v]=tot;
}
void dfs1(int x,int fa,int dis)
{
if(dis>maxn) maxn=dis,wh1=x;
for(int i=front[x];i;i=nxt[i])
if(to[i]!=fa) dfs1(to[i],x,dis+);
}
void dfs2(int x,int fa,int dis)
{
pre[x]=fa;
if(dis>maxn) maxn=dis,wh2=x;
for(int i=front[x];i;i=nxt[i])
if(to[i]!=fa) dfs2(to[i],x,dis+);
}
void dfs3(int x,int fa,int dis)
{
d[x]=dis;
for(int i=front[x];i;i=nxt[i])
if(to[i]!=fa) dfs3(to[i],x,dis+);
}
int main()
{
int n;
scanf("%d",&n);
int u,v;
for(int i=;i<n;i++)
{
scanf("%d%d",&u,&v);
add(u,v);
}
dfs1(,,);
maxn=;
dfs2(wh1,wh1,);
in[wh1]=true;
for(int i=wh2;i!=pre[i];i=pre[i]) in[i]=true;
for(int i=;i<=n;i++)
if(in[i])
for(int j=front[i];j;j=nxt[j])
if(!in[to[j]]) dfs3(to[j],i,);
int ans=;
for(int i=;i<=n;i++) ans=max(ans,d[i]);
printf("%d",ans);
}

T3 摆摊

求区间的mex,主席树

防止出现0,1,,开始在1号位置加入一个无穷大

#include<cstdio>
#include<algorithm>
#define N 200011
using namespace std;
int n,m,q,tot,a[N];
int root[N],lc[],rc[],minn[];
void insert(int &x,int y,int l,int r,int pos,int w)
{
x=++tot;
minn[x]=minn[y];
lc[x]=lc[y],rc[x]=rc[y];
if(l==r)
{
minn[x]=max(minn[x],w);
return;
}
int mid=l+r>>;
if(pos<=mid) insert(lc[x],lc[y],l,mid,pos,w);
else insert(rc[x],rc[y],mid+,r,pos,w);
minn[x]=min(minn[lc[x]],minn[rc[x]]);
}
int query(int x,int l,int r,int w)
{
if(l==r) return l;
int mid=l+r>>;
if(minn[lc[x]]<w) return query(lc[x],l,mid,w);
else return query(rc[x],mid+,r,w);
}
int main()
{
scanf("%d%d%d",&n,&m,&q);
insert(root[],root[],,n+,,2e9);
for(int i=;i<=m;i++)
{
scanf("%d",&a[i]);
insert(root[i],root[i-],,n+,a[i],i);
insert(root[i],root[i],,n+,a[i]+,i);
}
int u,v,ans;
while(q--)
{
scanf("%d%d",&u,&v);
ans=query(root[v],,n+,u);
if(ans==n+) printf("-1 -1\n");
else printf("%d %d\n",ans-,ans);
}
}

NOIP模拟赛15的更多相关文章

  1. noip模拟赛#15

    #15 T1:a[i]>=a[i/2].输出a的最大字典序 =>可以发现这是二叉树的情况那么就先预处理出每个点有多少个儿子然后递归处理就可以了. #include<cstdio> ...

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

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

  3. NOIP模拟赛 by hzwer

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

  4. CH Round #48 - Streaming #3 (NOIP模拟赛Day1)

    A.数三角形 题目:http://www.contesthunter.org/contest/CH%20Round%20%2348%20-%20Streaming%20%233%20(NOIP模拟赛D ...

  5. 【noip模拟赛5】细菌 状压dp

    [noip模拟赛5]细菌   描述 近期,农场出现了D(1<=D<=15)种细菌.John要从他的 N(1<=N<=1,000)头奶牛中尽可能多地选些产奶.但是如果选中的奶牛携 ...

  6. 【HHHOJ】NOIP模拟赛 玖 解题报告

    点此进入比赛 得分: \(100+20+100=220\)(还不错) 排名: \(Rank\ 16\) \(Rating\):\(+20\) \(T1\):[HHHOJ263]「NOIP模拟赛 玖」三 ...

  7. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  8. NOIP模拟赛 6.29

    2017-6-29 NOIP模拟赛 Problem 1 机器人(robot.cpp/c/pas) [题目描述] 早苗入手了最新的Gundam模型.最新款自然有着与以往不同的功能,那就是它能够自动行走, ...

  9. NOIP模拟赛20161022

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

随机推荐

  1. MacOS下搭建python环境

    1. 安装须知 Mac OS自身其实已经带有Python,版本为2.7.X,这个Python主要用于支持系统文件和XCode,所以我们在安装新的Python版本时候最好不要影响这部分. 这里就会出现一 ...

  2. 【leetcode】59.Spiral Matrix II

    Leetcode59 Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 ...

  3. BZOJ 1066:[SCOI2007]蜥蜴(最大流)

    蜥蜴Description在一个r行c列的网格地图中有一些高度不同的石柱,一些石柱上站着一些蜥蜴,你的任务是让尽量多的蜥蜴逃到边界外. 每行每列中相邻石柱的距离为1,蜥蜴的跳跃距离是d,即蜥蜴可以跳到 ...

  4. Android四大组件之Intent(续2)

    1.你如何通过一个intent来唤醒activity? this.startActivity(intent,request);      2.什么是显式.隐式的intents? 显式:指定组件名,通常 ...

  5. [poi2011]bzoj 2277 —— strongbox·[洛谷3518]

    ·问题描述· 有一个密码箱,0到n-1中的某些数是它的密码.且满足:如果a和b都是它的密码,那么(a+b)%n也是它的密码.某人试了k次密码,前k-1次都失败了,最后一次成功. 问:该密码箱最多有多少 ...

  6. 常州day5

    Task 1 小 W 和小 M 一起玩拼图游戏啦~ 小 M 给小 M 一张 N 个点的图,有 M 条可选无向边,每条边有一个甜蜜值,小 W 要选 K条边,使得任意两点间最多有一条路径,并且选择的 K条 ...

  7. 【CF700E】Cool Slogans(后缀自动机)

    [CF700E]Cool Slogans(后缀自动机) 题面 洛谷 CodeForces 题解 构建后缀自动机,求出后缀树 现在有个比较明显的\(dp\) 设\(f[i]\)表示从上而下到达当前点能够 ...

  8. 【BZOJ2141】排队(树套树)

    [BZOJ2141]排队(树套树) 题面 BZOJ 洛谷 题解 傻逼题啊... 裸的树套树 树状数组套线段树,每次交换的时候,考虑一下前后的贡献,先删掉贡献,再重新算一遍就好了.. #include& ...

  9. 【loj2133】【NOI2015】品酒大会

    Portal --> loj2133 Solution 虽然说这题貌似用后缀树之类的好像会更加简短一点..但是还是因为在智力康复所以就还是用后缀数组好了嗯(哇好感动啊难得那么顺畅写了一道noi的 ...

  10. (转)C#中“EQUALS”与“==”的速度比较

    结论: true判断时,用"value" == string是最快的:false判断时,用"value".Equals(string)是最快的. 也就是说:一个 ...