【Noip模拟By yxj】
1.random
Description
给定4个参数A0,N,c,p,你需要按下式构造A1~AN:
A[i]=(A[i-1]2+c)mod p
之后,你需要求出A1~AN中,第K大的数值。
Input
一行五个正整数A0,N,c,p,K。
Output
一行一个整数,描述答案。
Sample Input
123 10 435 3451 5
Sample Output
2936
Range
测试点 范围
1~3 K<=N<=105
4~10 K<=N<=5*106
直接stl
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; typedef long long LL; #define N 5000010 LL n,c,p,k; LL a[N]; bool cmp(const int & a,const int & b)
{
return a>b;
} int main()
{
freopen("random.in","r",stdin);freopen("random.out","w",stdout);
scanf("%lld%lld%lld%lld%lld",&a[],&n,&c,&p,&k);
for (LL i=;i<=n;i++)
a[i]=((a[i-]*a[i-])%p+c%p)%p;
nth_element(a+,a+k,a+n+,cmp);
printf("%I64d",a[k]);
return ;
}
2.sequence
Description
给一个长度为n的序列a,以及q个询问。每次询问给出两个参数l,r,你需要输出子 序列al~ar的最大连续字段和。
Input
第一行两个正整数n,q。
` 接下来一行n个整数,描述序列a。
接下来q行,每行两个参数l,r,描述一个询问。
Output
对于每个询问,输出一行一个整数,描述答案。
Sample Input
4 3
1 -2 3 2
1 4
1 2
2 2
Sample Output
5
1
0
Range
测试点 范围
1~3 N,Q<=1000
4~7 N,Q<=105
8~10 N<=105,Q<=106
线段树维护。
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; #define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout);
#define maxn 100010
#define IN inline
#define RE register typedef long long llg; int n,m,zhi[maxn*],now=maxn*-,ll,rr,D;
int sumv[maxn*],le[maxn*],ri[maxn*]; IN int getint()
{
int w=,q=;
char c=getchar();
while((c<''||c>'')&&c!='-') c=getchar();
if(c=='-') q=,c=getchar();
while(c>=''&&c<='') w=w*+c-'',c=getchar();
return q?-w:w;
} IN void update(int u,int lc,int lv)
{
sumv[u]=sumv[lc]+sumv[lv];
le[u]=max(le[lc],sumv[lc]+le[lv]);
ri[u]=max(ri[lv],sumv[lv]+ri[lc]);
zhi[u]=max(zhi[lc],zhi[lv]);
zhi[u]=max(zhi[u],ri[lc]+le[lv]);
} IN void build(int u,int l,int r)
{
int lc=u<<,lv=u<<|,mid=l+r>>;
if (l==r)
{
sumv[u]=getint();
if (sumv[u]>)
zhi[u]=le[u]=ri[u]=sumv[u];
return;
}
build(lc,l,mid);
build(lv,mid+,r);
update(u,lc,lv);
} IN void query(int u,int l,int r)
{
int lc=u<<,lv=u<<|,mid=l+r>>;
if (l>=ll && r<=rr)
{
if (!D)
{
zhi[now]=zhi[u];sumv[now]=sumv[u];
le[now]=le[u];ri[now]=ri[u];D++;
}
else
{
now^=;
update(now,now^,u);
}
return;
}
if (ll<=mid)
query(lc,l,mid);
if (rr>mid)
query(lv,mid+,r);
} int main(){
File("sequence");
n=getint();m=getint();
build(,,n);
while(m--)
{
ll=getint();rr=getint();
D=;query(,,n);
printf("%d\n",zhi[now]);
}
}
3.tree
Description
给一棵n个节点的无根树,求路径长度=K的简单路径数。
Input
第一行两个正整数n,K。
接下来n-1行,每行两个正整数x,y,描述一条边(x,y)。
Output
一行一个整数,描述答案。
Sample Input
4 2
1 2
2 3
2 4
Sample Output
3
Range
测试点 范围
1~3 2<=K<=N<=1000
4~10 2<=K<=N<=105
#include<algorithm>
#include<iostream>
#include<cstdlib>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std; #define File(s) freopen(s".in","r",stdin),freopen(s".out","w",stdout);
#define maxn 100010 typedef long long llg; int head[maxn],next[maxn<<],to[maxn<<],tt,n,ans,D;
int a[maxn],c1[maxn],c2[maxn],siz[maxn],val[maxn];
bool w[maxn]; void link()
{
int x,y;
scanf("%d%d",&x,&y);
to[++tt]=y;next[tt]=head[x];head[x]=tt;
to[++tt]=x;next[tt]=head[y];head[y]=tt;
} void dfs1(int u,int fa)
{
siz[u]=;a[++tt]=u;val[u]=;
for (int i=head[u],v;v=to[i],i;i=next[i])
if (v!=fa && !w[v])
{
dfs1(v,u);siz[u]+=siz[v];
val[u]=max(val[u],siz[v]);
}
} void dfs2(int u,int fa,int now){
c1[now]++;
if (now>=D)
return;
for (int i=head[u],v;v=to[i],i;i=next[i])
if (v!=fa && !w[v])
dfs2(v,u,now+);
} void solve(int u)
{
int x=u;tt=;
dfs1(u,);
for (int i=;i<=tt;i++)
{
val[a[i]]=max(val[a[i]],siz[u]-siz[a[i]]);
if (val[a[i]]<val[x])
x=a[i];
}
w[x]=;
for (int i=head[x],v;v=to[i],i;i=next[i])
if (!w[v])
{
dfs2(v,,);
ans+=c1[D];
for (int j=;c1[j];j++)
ans+=c2[D-j]*c1[j];
for (int j=;c1[j];j++)
c2[j]+=c1[j],c1[j]=;
}
for (int i=;c2[i];i++)
c2[i]=;
for (int i=head[x],v;v=to[i],i;i=next[i])
if (!w[v])
solve(v);
} int main()
{
File("tree");
scanf("%d%d",&n,&D);
for(int i=;i<n;i++)
link();
solve();
printf("%d",ans);
}
【Noip模拟By yxj】的更多相关文章
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
- CH Round #58 - OrzCC杯noip模拟赛day2
A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...
- CH Round #52 - Thinking Bear #1 (NOIP模拟赛)
A.拆地毯 题目:http://www.contesthunter.org/contest/CH%20Round%20%2352%20-%20Thinking%20Bear%20%231%20(NOI ...
随机推荐
- seq2seq(1)- EncoderDecoder架构
零 seq2seq是从序列到序列的学习过程,最重要的是输入序列和输出序列是可变长的,这种方式就非常灵活了,典型的机器翻译就是这样一个过程. 一 最基本的seq2seq网络架构如下所示: 可以看到,en ...
- ios打电话发短信接口
电话.短信是手机的基础功能,iOS中提供了接口,让我们调用.这篇文章简单的介绍一下iOS的打电话.发短信在程序中怎么调用. 1.打电话 [[UIApplication sharedApplicatio ...
- ''tensorflow.python.framework.errors_impl.ResourceExhaustedError: OOM when allocating tensor with shape[?]'' 错误分析
这是tensorflow 一个经常性错误,错误的原因在于:显卡内存不够. 解决方法就是降低显卡的使用内存,途径有以下几种措施: 1 减少Batch 的大小 2 分析错误的位置,在哪一层出现显卡不够,比 ...
- [Python3网络爬虫开发实战] 1.5.2-PyMongo的安装
在Python中,如果想要和MongoDB进行交互,就需要借助于PyMongo库,这里就来了解一下它的安装方法. 1. 相关链接 GitHub:https://github.com/mongodb/m ...
- 我们参与投资36Kr股权众筹项目“易途8”的决策过程
背景 中文接机.中文送机.中文包车. 当地玩乐 最大的竞争对手:皇包车,15年9月A轮 其它对手:唐人接等,订单量无法和 皇包车.易途8比. 看好理由 1.旅游行业和境外自由行,是 ...
- hibernate-validator验证请求参数
开发接口要进行请求参数内容格式校验,比如在接收到请求参数后依次需要进行数据内容判空.数据格式规范校验等,十分麻烦,于是尝试用hibernate-validator进行参数校验,简单记录一下使用步骤: ...
- Dijkstra算法C++实现总结
问题描述 求无负权图中点s到点t的最短凝聚力 备注 标准说法中,"缩短"/"松弛"(relax)操作是对边进行的.下面为了行文方便,将其拓展到点.即以下操作,其 ...
- 全文搜索(AB-2)-权重
概念 权重是一个相对的概念,针对某一指标而言.某一指标的权重是指该指标在整体评价中的相对重要程度.权重是要从若干评价指标中分出轻重来,一组评价指标体系相对应的权重组成了权重体系. 释义 等同于比重 ...
- 关于java对于大数处理的相关程序和用法
<span style="font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 13px; l ...
- hdu 4871 树的分治+最短路记录路径
/* 题意:给你一些节点和一些边,求最短路径树上是k个节点的最长的路径数. 解:1.求出最短路径树--spfa加记录 2.树上进行操作--树的分治,分别处理子树进行补集等运算 */ #include& ...