[51Nod]NOIP2018提高组省一冲奖班模测训练(四)翻车记+题解
下午5点的时候,突然想起来有这个比赛,看看还有一个小时,打算来AK一下,结果因为最近智商越来越低,翻车了,我还是太菜了。上来10分钟先切掉了C和A,结果卡在了B题,唉。
A.砍树
一眼题,两遍树形DP分黑的多还是白的多
#include<bits/stdc++.h>
#define REP(i,a,b) for(int i(a);i<=(b);++i)
#define dbg(...) fprintf(stderr,__VA_ARGS__)
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int>pii;
inline int read(){char c,p=0;int w;
while(isspace(c=getchar()));if(c=='-')p=1,c=getchar();
for(w=c&15;isdigit(c=getchar());w=w*10+(c&15));return p?-w:w;
}
template<typename T,typename U>inline char smin(T&x,const U&y){return x>y?x=y,1:0;}
template<typename T,typename U>inline char smax(T&x,const U&y){return x<y?x=y,1:0;}
const int N=1e5+5;
int n,f[N],c[N],ans;
vector<int>g[N];
void dfs(int x,int fa){
f[x]=c[x]==1?1:-1;
for(int y:g[x])if(y!=fa){
dfs(y,x);
smax(f[x],f[x]+f[y]);
}
smax(ans,f[x]);
}
int main(){
n=read();
REP(i,1,n)c[i]=read();
REP(i,2,n){
#define pb push_back
int x=read(),y=read();
g[x].pb(y),g[y].pb(x);
}
dfs(1,0);
REP(i,1,n)c[i]^=1;
memset(f,0,sizeof f);
dfs(1,0);
cout<<ans;
return 0;
}
B.奇怪的回文串
发现满足条件需要每隔一个都相等,two pointers直接扫,线段树维护区间众数即可
考场上想了个二分答案,写了个假队列T了2个点,最近智商真是越来越低了。。
#include<bits/stdc++.h>
#define REP(i,a,b) for(int i(a);i<=(b);++i)
#define dbg(...) fprintf(stderr,__VA_ARGS__)
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int>pii;
inline int read(){char c,p=0;int w;
while(isspace(c=getchar()));if(c=='-')p=1,c=getchar();
for(w=c&15;isdigit(c=getchar());w=w*10+(c&15));return p?-w:w;
}
template<typename T,typename U>inline char smin(T&x,const U&y){return x>y?x=y,1:0;}
template<typename T,typename U>inline char smax(T&x,const U&y){return x<y?x=y,1:0;}
const int N=5e5+7;
int k,n,a[N];
struct hash_table{
int head[N],to[N],ne[N],T;
inline int get(int x){
int p=x%N;
for(int i=head[p];i;i=ne[i])if(to[i]==x)return i;
to[++T]=x,ne[T]=head[p],head[p]=T;return T;
}
}mp;
struct SGT{
struct node{int ls,rs,w;}t[N<<2];
int rt,cnt;
inline void clr(){rt=cnt=0;}
inline void add(int x,int v,int&o,int l=1,int r=mp.T){
if(!o)t[o=++cnt]=(node){0,0,0};
if(l==r)return (void)(t[o].w+=v);
int mid=l+r>>1;
x<=mid?add(x,v,t[o].ls,l,mid):add(x,v,t[o].rs,mid+1,r);
t[o].w=max(t[t[o].ls].w,t[t[o].rs].w);
}
inline int gmax(){return t[1].w;}
}t[2];
void solve(){
int ans=0;
t[0].clr(),t[1].clr();
int l=1;
REP(i,1,n){
t[i&1].add(a[i],1,t[i&1].rt);
while(l<=i){
int x=t[0].gmax(),y=t[1].gmax();
int c0=i/2-(l-1)/2,c1=i/2-(l-1)/2+(i&1)-(l-1&1);
if(c0-x+c1-y<=k)break;
t[l&1].add(a[l],-1,t[l&1].rt);++l;
}
smax(ans,i-l+1);
}
cout<<ans;
}
int main(){
k=read(),n=read();
REP(i,1,n)a[i]=mp.get(read());
solve();
return 0;
}
C.范围查询
经典分块题,按照模数分块,小的存下来,大的暴力
#include<bits/stdc++.h>
#define REP(i,a,b) for(int i(a);i<=(b);++i)
#define dbg(...) fprintf(stderr,__VA_ARGS__)
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair<int,int>pii;
inline int read(){char c,p=0;int w;
while(isspace(c=getchar()));if(c=='-')p=1,c=getchar();
for(w=c&15;isdigit(c=getchar());w=w*10+(c&15));return p?-w:w;
}
template<typename T,typename U>inline char smin(T&x,const U&y){return x>y?x=y,1:0;}
template<typename T,typename U>inline char smax(T&x,const U&y){return x<y?x=y,1:0;}
const int N=40005;
int n,q,a[N];
vector<int>g[402][402],h[N];
int main(){
n=read(),q=read();int mxx=0;
REP(i,1,n)a[i]=read(),h[a[i]].push_back(i),smax(mxx,a[i]);
int B=sqrt(mxx);
REP(i,1,B)REP(j,1,n)g[i][a[j]%i].push_back(j);
while(q--){
#define Q(a) upper_bound(a.begin(),a.end(),r)-lower_bound(a.begin(),a.end(),l)
int l=read()+1,r=read()+1,x=read(),y=read();
if(x<=B)printf("%d\n",Q(g[x][y]));
else{
int ans=0;
for(int i=y;i<=mxx;i+=x)ans+=Q(h[i]);
printf("%d\n",ans);
}
}
return 0;
}
[51Nod]NOIP2018提高组省一冲奖班模测训练(四)翻车记+题解的更多相关文章
- [51Nod]NOIP2018提高组省一冲奖班模测训练(一)题解
http://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206 原题水题大赛.. A.珂朵莉的旅行 ...
- [51Nod]NOIP2018提高组省一冲奖班模测训练(三) 题解
链接 A.Anan的派对 题意:Anan想举办一个派对.Anan的朋友总共有 n 人.第i个人如果参加派对会得到 \(c_i\) 的快乐值,除他自己外每多一个人参加他会减少 \(d_i\) 的快乐值. ...
- [51Nod]NOIP2018提高组省一冲奖班模测训练(二)
http://www.51nod.com/contest/problemList.html#!contestId=73&randomCode=4408520896354389006 还是原题大 ...
- NOIP2018提高组省一冲奖班模测训练(六)
NOIP2018提高组省一冲奖班模测训练(六) https://www.51nod.com/Contest/ContestDescription.html#!#contestId=80 20分钟AC掉 ...
- NOIP2018提高组省一冲奖班模测训练(五)
NOIP2018提高组省一冲奖班模测训练(五) http://www.51nod.com/Contest/ContestDescription.html#!#contestId=79 今天有点浪…… ...
- NOIP2018提高组省一冲奖班模测训练(四)
NOIP2018提高组省一冲奖班模测训练(四) 这次比赛只AC了第一题,而且花了40多分钟,貌似是A掉第一题里面最晚的 而且还有一个半小时我就放弃了…… 下次即使想不出也要坚持到最后 第二题没思路 第 ...
- NOIP2018提高组省一冲奖班模测训练(三)
NOIP2018提高组省一冲奖班模测训练(三) 自己按照noip的方式考,只在最后一两分钟交了一次 第一题过了,对拍拍到尾. 第二题不会.考试时往组合计数的方向想,推公式,推了一个多小时,大脑爆炸,还 ...
- NOIP2018提高组省一冲奖班模测训练(二)
比赛链接 NOIP2018提高组省一冲奖班模测训练(二) 今天发挥正常,昨天不在状态…… 花了很久A了第一题 第二题打了30分暴力 第三题投机取巧输出test1答案(连暴力都不知道怎么打,太弱了) 2 ...
- NOIP2018提高组省一冲奖班模测训练(一)
比赛链接 https://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206 这次考试的题非常有质量 ...
随机推荐
- 2014 CodingTrip - 携程编程大赛 (预赛第二场)
1001: 食物链(poj1182),直接贴代码,稍作可过 并查集 // // main.cpp // 携程1 // // Created by zhang on 14-4-11. // Copyri ...
- MAC 文件加密
MAC 文件加密 (2011-10-08 00:08:52) 标签: 杂谈 分类: MAC技巧篇 我们都有一些私密的文件需要保存,在苹果操作系统下,如何为这些文件或文件夹设置密码呢? 利用系统自带的创 ...
- 特定位取反(js实现)
去华为面试的时候.没有做好准备工作.面试的流程没有问清也没有查,结果一过去就让上机做题,着实有点措手不及.笔者是擅长前端的Java Webproject师啊,主要的底层编程知识早已生疏了.机试题碰到了 ...
- NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息
NetFlow是一种数据交换方式,提供网络流量的会话级视图,记录下每个TCP/IP事务的信息.也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来时,它更加易于管理和易读.Netflo ...
- ACM的算法分类 2015-04-16 14:25 22人阅读 评论(0) 收藏
初期: 一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. ...
- Linux常用PDF阅读软件
1.福昕阅读器是一款PDF文档阅读器,对中文的支持度非常高.福昕阅读器作为全球最流行的PDF阅读器,能够快速打开.浏览.审阅.注释.签署及打印任何PDF文件. 2.evince是一个支持多种格式的文件 ...
- 天意——thinkphp方法名大小写问题
今天星期六,晚一小时上班.早起后背了会单词就骑自行车上班了.我是个有豪车梦的男生,每看到什么保时捷啊,雷克萨斯啊开过都会呆呆的看一会.现在虽然我买不上车,但是我可以靠我自己先买一台帅气的大摩托啊哈哈. ...
- 运输层协议——UDP
UDP概述: UDP只是做了运输层协议能做的最少工作,仅做了复用/分解,少量的差错检验. UDP是无连接的. UDP优点: 关于何时.发送什么数据的应用层控制更为精细:TCP在拥堵时会遏制发送方的发送 ...
- HDU 3911 Black And White
Black And White Time Limit: 3000ms Memory Limit: 32768KB This problem will be judged on HDU. Origina ...
- CODEVS——T 4189 字典
http://codevs.cn/problem/4189/ 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 大师 Master 题解 查看运行结果 题目描述 Des ...