链接

下午5点的时候,突然想起来有这个比赛,看看还有一个小时,打算来AK一下,结果因为最近智商越来越低,翻车了,我还是太菜了。上来10分钟先切掉了C和A,结果卡在了B题,唉。

A.砍树

一眼题,两遍树形DP分黑的多还是白的多

  1. #include<bits/stdc++.h>
  2. #define REP(i,a,b) for(int i(a);i<=(b);++i)
  3. #define dbg(...) fprintf(stderr,__VA_ARGS__)
  4. using namespace std;
  5. typedef long long ll;
  6. typedef unsigned int uint;
  7. typedef unsigned long long ull;
  8. typedef pair<int,int>pii;
  9. inline int read(){char c,p=0;int w;
  10. while(isspace(c=getchar()));if(c=='-')p=1,c=getchar();
  11. for(w=c&15;isdigit(c=getchar());w=w*10+(c&15));return p?-w:w;
  12. }
  13. template<typename T,typename U>inline char smin(T&x,const U&y){return x>y?x=y,1:0;}
  14. template<typename T,typename U>inline char smax(T&x,const U&y){return x<y?x=y,1:0;}
  15. const int N=1e5+5;
  16. int n,f[N],c[N],ans;
  17. vector<int>g[N];
  18. void dfs(int x,int fa){
  19. f[x]=c[x]==1?1:-1;
  20. for(int y:g[x])if(y!=fa){
  21. dfs(y,x);
  22. smax(f[x],f[x]+f[y]);
  23. }
  24. smax(ans,f[x]);
  25. }
  26. int main(){
  27. n=read();
  28. REP(i,1,n)c[i]=read();
  29. REP(i,2,n){
  30. #define pb push_back
  31. int x=read(),y=read();
  32. g[x].pb(y),g[y].pb(x);
  33. }
  34. dfs(1,0);
  35. REP(i,1,n)c[i]^=1;
  36. memset(f,0,sizeof f);
  37. dfs(1,0);
  38. cout<<ans;
  39. return 0;
  40. }

B.奇怪的回文串

发现满足条件需要每隔一个都相等,two pointers直接扫,线段树维护区间众数即可

考场上想了个二分答案,写了个假队列T了2个点,最近智商真是越来越低了。。

  1. #include<bits/stdc++.h>
  2. #define REP(i,a,b) for(int i(a);i<=(b);++i)
  3. #define dbg(...) fprintf(stderr,__VA_ARGS__)
  4. using namespace std;
  5. typedef long long ll;
  6. typedef unsigned int uint;
  7. typedef unsigned long long ull;
  8. typedef pair<int,int>pii;
  9. inline int read(){char c,p=0;int w;
  10. while(isspace(c=getchar()));if(c=='-')p=1,c=getchar();
  11. for(w=c&15;isdigit(c=getchar());w=w*10+(c&15));return p?-w:w;
  12. }
  13. template<typename T,typename U>inline char smin(T&x,const U&y){return x>y?x=y,1:0;}
  14. template<typename T,typename U>inline char smax(T&x,const U&y){return x<y?x=y,1:0;}
  15. const int N=5e5+7;
  16. int k,n,a[N];
  17. struct hash_table{
  18. int head[N],to[N],ne[N],T;
  19. inline int get(int x){
  20. int p=x%N;
  21. for(int i=head[p];i;i=ne[i])if(to[i]==x)return i;
  22. to[++T]=x,ne[T]=head[p],head[p]=T;return T;
  23. }
  24. }mp;
  25. struct SGT{
  26. struct node{int ls,rs,w;}t[N<<2];
  27. int rt,cnt;
  28. inline void clr(){rt=cnt=0;}
  29. inline void add(int x,int v,int&o,int l=1,int r=mp.T){
  30. if(!o)t[o=++cnt]=(node){0,0,0};
  31. if(l==r)return (void)(t[o].w+=v);
  32. int mid=l+r>>1;
  33. x<=mid?add(x,v,t[o].ls,l,mid):add(x,v,t[o].rs,mid+1,r);
  34. t[o].w=max(t[t[o].ls].w,t[t[o].rs].w);
  35. }
  36. inline int gmax(){return t[1].w;}
  37. }t[2];
  38. void solve(){
  39. int ans=0;
  40. t[0].clr(),t[1].clr();
  41. int l=1;
  42. REP(i,1,n){
  43. t[i&1].add(a[i],1,t[i&1].rt);
  44. while(l<=i){
  45. int x=t[0].gmax(),y=t[1].gmax();
  46. int c0=i/2-(l-1)/2,c1=i/2-(l-1)/2+(i&1)-(l-1&1);
  47. if(c0-x+c1-y<=k)break;
  48. t[l&1].add(a[l],-1,t[l&1].rt);++l;
  49. }
  50. smax(ans,i-l+1);
  51. }
  52. cout<<ans;
  53. }
  54. int main(){
  55. k=read(),n=read();
  56. REP(i,1,n)a[i]=mp.get(read());
  57. solve();
  58. return 0;
  59. }

C.范围查询

经典分块题,按照模数分块,小的存下来,大的暴力

  1. #include<bits/stdc++.h>
  2. #define REP(i,a,b) for(int i(a);i<=(b);++i)
  3. #define dbg(...) fprintf(stderr,__VA_ARGS__)
  4. using namespace std;
  5. typedef long long ll;
  6. typedef unsigned int uint;
  7. typedef unsigned long long ull;
  8. typedef pair<int,int>pii;
  9. inline int read(){char c,p=0;int w;
  10. while(isspace(c=getchar()));if(c=='-')p=1,c=getchar();
  11. for(w=c&15;isdigit(c=getchar());w=w*10+(c&15));return p?-w:w;
  12. }
  13. template<typename T,typename U>inline char smin(T&x,const U&y){return x>y?x=y,1:0;}
  14. template<typename T,typename U>inline char smax(T&x,const U&y){return x<y?x=y,1:0;}
  15. const int N=40005;
  16. int n,q,a[N];
  17. vector<int>g[402][402],h[N];
  18. int main(){
  19. n=read(),q=read();int mxx=0;
  20. REP(i,1,n)a[i]=read(),h[a[i]].push_back(i),smax(mxx,a[i]);
  21. int B=sqrt(mxx);
  22. REP(i,1,B)REP(j,1,n)g[i][a[j]%i].push_back(j);
  23. while(q--){
  24. #define Q(a) upper_bound(a.begin(),a.end(),r)-lower_bound(a.begin(),a.end(),l)
  25. int l=read()+1,r=read()+1,x=read(),y=read();
  26. if(x<=B)printf("%d\n",Q(g[x][y]));
  27. else{
  28. int ans=0;
  29. for(int i=y;i<=mxx;i+=x)ans+=Q(h[i]);
  30. printf("%d\n",ans);
  31. }
  32. }
  33. return 0;
  34. }

[51Nod]NOIP2018提高组省一冲奖班模测训练(四)翻车记+题解的更多相关文章

  1. [51Nod]NOIP2018提高组省一冲奖班模测训练(一)题解

    http://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206 原题水题大赛.. A.珂朵莉的旅行 ...

  2. [51Nod]NOIP2018提高组省一冲奖班模测训练(三) 题解

    链接 A.Anan的派对 题意:Anan想举办一个派对.Anan的朋友总共有 n 人.第i个人如果参加派对会得到 \(c_i\) 的快乐值,除他自己外每多一个人参加他会减少 \(d_i\) 的快乐值. ...

  3. [51Nod]NOIP2018提高组省一冲奖班模测训练(二)

    http://www.51nod.com/contest/problemList.html#!contestId=73&randomCode=4408520896354389006 还是原题大 ...

  4. NOIP2018提高组省一冲奖班模测训练(六)

    NOIP2018提高组省一冲奖班模测训练(六) https://www.51nod.com/Contest/ContestDescription.html#!#contestId=80 20分钟AC掉 ...

  5. NOIP2018提高组省一冲奖班模测训练(五)

    NOIP2018提高组省一冲奖班模测训练(五) http://www.51nod.com/Contest/ContestDescription.html#!#contestId=79 今天有点浪…… ...

  6. NOIP2018提高组省一冲奖班模测训练(四)

    NOIP2018提高组省一冲奖班模测训练(四) 这次比赛只AC了第一题,而且花了40多分钟,貌似是A掉第一题里面最晚的 而且还有一个半小时我就放弃了…… 下次即使想不出也要坚持到最后 第二题没思路 第 ...

  7. NOIP2018提高组省一冲奖班模测训练(三)

    NOIP2018提高组省一冲奖班模测训练(三) 自己按照noip的方式考,只在最后一两分钟交了一次 第一题过了,对拍拍到尾. 第二题不会.考试时往组合计数的方向想,推公式,推了一个多小时,大脑爆炸,还 ...

  8. NOIP2018提高组省一冲奖班模测训练(二)

    比赛链接 NOIP2018提高组省一冲奖班模测训练(二) 今天发挥正常,昨天不在状态…… 花了很久A了第一题 第二题打了30分暴力 第三题投机取巧输出test1答案(连暴力都不知道怎么打,太弱了) 2 ...

  9. NOIP2018提高组省一冲奖班模测训练(一)

    比赛链接 https://www.51nod.com/contest/problemList.html#!contestId=72&randomCode=147206 这次考试的题非常有质量 ...

随机推荐

  1. Unity WebGL 窗口自适应

    unity 打包好WebGL后,用文本编辑器编辑打包生成的 index.html 文件 在生成的html里面修改代码     <script type="text/javascript ...

  2. ArcGIS api for javascript——地图配置-增加标注到滑动器

    描述 ArcGISTiledMapServiceLayer,这意味着图层有一个在明确的比例的预先渲染的地图切片的cache.能够从tileInfo属性获得图层的的缓存比例数组.这是本例中标注如何被得到 ...

  3. static_cast 与 dynamic_cast

  4. HDFS中的命令行

    HDFS中的命令行 本文介绍了HDFS以命令行执行的时候.几个经常使用的命令行的作用和怎样使用~ 1. fs fs是启动命令行动作,该命令用于提供一系列子命令. 使用形式为hadoop fs –cmd ...

  5. leetcode第一刷_Text Justification

    这个题的接受率好低,搞得我一直不敢做.后来认真的看了一下题目,不是非常难嘛.字符串的题目ac率就是低,除了难,还由于它的測试用例太多. 思路不难,主要是由于特殊情况太多.纯模拟,我把全部的情况罗列一下 ...

  6. webpack02

    consumer-index.html <!DOCTYPE html> <html lang="en"> <head> <meta cha ...

  7. How Blink works

    How Blink works Author: haraken@ Last update: 2018 Aug 14 Status: PUBLIC Working on Blink is not eas ...

  8. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  9. Java基础String的方法

    Java基础String的方法 字符串类型写法格式如下: 格式一: String 变量名称; 变量名称=赋值(自定义或传入的变量值); 格式二: String 变量名称=赋值(自定义或传入的变量值); ...

  10. Spring Cloud学习笔记【三】服务消费者Feign

    Feign 是一个声明式的 Web Service 客户端,它的目的就是让 Web Service 调用更加简单.它整合了 Ribbon 和 Hystrix,从而让我们不再需要显式地使用这两个组件.F ...