【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 ...
随机推荐
- gprc-java与golang分别实现服务端,客户端,跨语言通信(一.java实现)
1.在pom中引入 <dependency> <groupId>io.grpc</groupId> <artifactId>grpc-netty< ...
- No-4.变量的基本使用
变量的基本使用 程序就是用来处理数据的,而变量就是用来存储数据的 目标 变量定义 变量的类型 变量的命名 01. 变量定义 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 ...
- 第1节 yarn:15、关于yarn中常用的参数设置
第一个参数:container分配最小内存 yarn.scheduler.minimum-allocation-mb 1024 给应用程序container分配的最小内存 第二个参数:co ...
- Ubuntu 系统安装(这里用ubuntu 16.04)
一.安装Vmware Workstation 12 选择新建虚拟机- 下一步-安装根据红框部分及说明一步一步进行 点击下一步进行 接下来默认下一步,直到如下图 这里的最大磁盘大小100G.不会直接在本 ...
- c++基础_01字串
#include <iostream> using namespace std; int main(){ for(int a=0;a<=1;a++){ for(int b=0;b&l ...
- Sax解析xml文档
测试的xml数据: <?xml version="1.0" encoding="utf-8" ?> <note> <to>G ...
- ajax 简单学习
客户端代码function login(type) { $.ajax({ type: "post", url: "logindo.aspx", data: { ...
- 新进Linux菜鸟,请多多关照
早早知晓Linux的大名,一直未研究学习,近来看了kernel一些源代码,在网上搜过很多基础的知识.感觉这个Linux的世界很广大,值得好好深入学习.初生婴儿,呱呱落地,必先躺若干日后能坐,在学爬,进 ...
- 3D标签云
一.圆的坐标表达式 for(var i = 0;i < len;i++){ degree = (2*(k+1)-1)/len - 1;a = Math.acos(degree);//这样取得弧度 ...
- STM32F407 串口通信:分类&常见接口 个人笔记
串行通信的分类 常见串行通信接口 STM32 UART STM32串口异步通信需要定义的参数: ① 起始位 ② 数据位(8位或者9位) ③ 奇偶校验位(如果有的话是第9位) ④ 停止位(1,15,2位 ...