T1 斐波那契

一道找规律题,被我做成了贼难的题。

观察图片可知x=f[i-1]+j。(j为x的父亲)且j<=f[i-1],然后就二分找父亲没了。

  1. #include<bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. const int mod=;
  5. ll f[];
  6. struct Hush{
  7. int head[],nxt[],cnt;
  8. ll to[];
  9. void insert(ll x)
  10. {
  11. int k=x%mod;
  12. to[++cnt]=x;
  13. nxt[cnt]=head[k];
  14. head[k]=cnt;
  15. return ;
  16. }
  17. bool find(ll x)
  18. {
  19. int k=x%mod;
  20. for(int i=head[k];i;i=nxt[i])if(to[i]==x)return ;
  21. return ;
  22. }
  23. void clear()
  24. {
  25. memset(head,,sizeof(head));
  26. cnt=;
  27. }
  28. }H;
  29. ll Getlca(ll a,ll b)
  30. {
  31. if(a>b)swap(a,b);
  32. H.clear();
  33. H.insert(a);
  34. while(a!=)
  35. {
  36. ll fa=lower_bound(f+,f+,a)-f;
  37. fa=a-f[fa-];
  38. H.insert(fa);
  39. a=fa;
  40. }
  41. if(H.find(b))return b;
  42. while(b!=)
  43. {
  44. ll fb=lower_bound(f+,f+,b)-f;
  45. fb=b-f[fb-];
  46. if(H.find(fb))return fb;
  47. b=fb;
  48. }
  49. }
  50. int main()
  51. {
  52. f[]=;f[]=;
  53. for(int i=;i<=;i++)f[i]=f[i-]+f[i-];
  54. int m;
  55. scanf("%d",&m);
  56. for(int i=;i<=m;i++)
  57. {
  58. ll a,b;
  59. scanf("%lld%lld",&a,&b);
  60. printf("%lld\n",Getlca(a,b));
  61. }
  62. return ;
  63. }

T2 水题不说了

T3 分组

一道好题。

k=1:

以前做过一道菜肴制作,然后就可以知道:区间越往后放,就越靠前。然后就维护最长的区间即可

k=2:

用扩展域并查集,直接维护,特判很恶心。

  1. #include<bits/stdc++.h>
  2. #define MAXN 333333
  3. using namespace std;
  4. int nxt[MAXN],a[MAXN],pf[MAXN],dr[MAXN],f[MAXN];
  5. bool vst[MAXN];
  6. vector<int>ans,cl;
  7. inline int find(int x)
  8. {
  9. return f[x]==x?x:f[x]=find(f[x]);
  10. }
  11. inline void merge(int x,int y)
  12. {
  13. int fa=find(x),fb=find(y);
  14. f[fa]=fb;
  15. return ;
  16. }
  17. void bcj_clear(int l,int r)
  18. {
  19. for(int i=l;i<=r;i++)f[a[i]]=a[i],vst[a[i]]=,dr[a[i]]=;
  20. cl.clear();
  21. return ;
  22. }
  23. int main()
  24. {
  25. int n,k,maxa=;
  26. scanf("%d%d",&n,&k);
  27. for(int i=;i<=n;i++)
  28. {
  29. scanf("%d",&a[i]);
  30. maxa=max(maxa,a[i]);
  31. }
  32. int ed=n;
  33. for(int i=;i<=;i++)pf[i]=i*i;
  34. if(k==)
  35. {
  36. for(int i=n;i>=;i--)
  37. {
  38. bool ok=;
  39. for(int j=sqrt(maxa*);j>=&&pf[j]>=a[i];j--)
  40. if(vst[pf[j]-a[i]]){ok=;break;}
  41. if(!ok){
  42. ed=i;
  43. for(int k=;k<cl.size();k++)
  44. vst[cl[k]]=;
  45. cl.clear();
  46. ans.push_back(i);
  47. }
  48. vst[a[i]]=;
  49. cl.push_back(a[i]);
  50. }
  51. if(!ans.size())printf("1\n");
  52. cout<<ans.size()+<<endl;
  53. for(int i=ans.size()-;i>=;i--)
  54. printf("%d ",ans[i]);
  55. return ;
  56. }
  57. else
  58. {
  59. int last=n;
  60. for(int i=;i<=maxa*;i++)f[i]=i;
  61. for(int i=n;i>=;i--)
  62. {
  63. bool ok=;
  64. for(int j=sqrt(maxa*);j>=&&pf[j]>=a[i];j--)
  65. {
  66. if(vst[pf[j]-a[i]]&&!vst[a[i]])
  67. {
  68. // cout<<i<<"---"<<endl;
  69. int now=pf[j]-a[i];
  70. if(find(a[i])==find(now)){ok=;break;}
  71. if(!dr[now])dr[now]=a[i];
  72. else if(dr[now]!=now)merge(dr[now],a[i]);
  73. else {ok=;break;}
  74. if(!dr[a[i]])dr[a[i]]=now;
  75. else if(dr[a[i]]!=a[i])merge(dr[a[i]],now);
  76. else {ok=;break;}
  77. }
  78. else if(vst[pf[j]-a[i]]&&a[i]==pf[j]-a[i])
  79. {
  80. // cout<<i<<' '<<dr[a[i]]<<endl;
  81. if(dr[a[i]]){ok=;break;}
  82. else dr[a[i]]=a[i];
  83. //cout<<i<<' '<<a[i]<<")S"<<endl;
  84. }
  85. }
  86. if(!ok){
  87. ed=i;
  88. bcj_clear(i,last);
  89. last=i;
  90. ans.push_back(i);
  91. }
  92. vst[a[i]]=;
  93. cl.push_back(a[i]);
  94. }
  95. if(!ans.size()){printf("1\n");return ;}
  96. cout<<ans.size()+<<endl;
  97. for(int i=ans.size()-;i>=;i--)
  98. printf("%d ",ans[i]);
  99. return ;
  100. }
  101. }

主要反思一下:

考试策略不好,时间分配不合理,难度评估sb 认为T1最难,T3最水?????????

端正心态,不要去刚题,但也不要轻易放弃(暴力还是要打的)

NOIP模拟测试12的更多相关文章

  1. 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组

    2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...

  2. 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色

    2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...

  3. 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)

    2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...

  4. 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】

    [题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...

  5. 20190803 NOIP模拟测试12「斐波那契(fibonacci)· 数颜色 · 分组 」

    164分 rank11/64 这次考的不算太差,但是并没有多大的可能性反超(只比一小部分人高十几分而已),时间分配还是不均,T2两个半小时,T1半个小时,T3-额十几分钟吧 然额付出总是与回报成反比的 ...

  6. [NOIP模拟测试12]题解

    A. 找规律题.儿子的编号减去 小于它编号的最大的fibonacci数 即可得到它父亲的编号. 然后两个节点都暴力上跳就好了.预处理一下fibonacci数,每次二分查找即可. #include< ...

  7. 「题解」NOIP模拟测试题解乱写II(36)

    毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...

  8. 2019.8.1 NOIP模拟测试11 反思总结

    延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...

  9. NOIP模拟测试17&18

    NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...

随机推荐

  1. Django学习之文件下载

    在实际的项目中很多时候需要用到下载功能,如导excel.pdf或者文件下载,当然你可以使用web服务自己搭建可以用于下载的资源服务器,如nginx,这里我们主要介绍django中的文件下载. 我们这里 ...

  2. C语言I博客作业03

    这个作业属于那个课程 C语言程序设计II 这个作业要求在哪里 https://edu.cnblogs.com/campus/zswxy/CST2019-2/homework/8717 我在这个课程的目 ...

  3. bugku--web--输入密码查看flag

    首先打开网页链接 随机五位数的密码爆破,先用python写一个脚本来生成随机五位数: x=range(0,10) f=open("3.txt",'w') for i in x: f ...

  4. CentOS 7 的 systemctl 命令

    Centos 7.* 使用 Systemd 进行系统初始化,因此,Centos 7.* 中我们可以使用 systemctl 管理系统中的服务. systemctl 管理的服务均包含了一个以 .serv ...

  5. ES三节点重启后报错no known master node

    问题 一直在研究ES的监控怎么做,想偷点懒,不去通过API获取然后计算,就想找个现成的插件或者监控软件,只要装个agent就可以,然后就找到了x-pack,插件装好了之后,需要重启ES集群,线上的ES ...

  6. django后台管理-admin

    0922自我总结 django后台管理-admin 一.模型注册 admin.py 注册方式一: #在对于注册的app中的admin文件中导入模型然后注册模型 admin.site.register( ...

  7. u盘安装操作系统相关

    首先使用相关软件制作u盘启动盘,将所需要的系统镜像安装到u盘中 此时u盘中会出现一个EFI区(window可以看到,window7看不到,可以隐藏) 简单来说这个EFI分区中装的是一个低价的操作系统, ...

  8. vue中 props 多层组件嵌套传值

    如:三层嵌套. 父组件=>子组件=>孙子 1. 父组件引用子组件component11 , isShow传值给子组件component11 2. 子组件用  props 接受父组件的值, ...

  9. shark恒破解笔记4-API断点GetPrivateProfileStringA

    这小节是通过断在GetPrivateProfileStringA,然后找到注册码的. 1.运行程序输入假码111111,提示重启.通过这判断这是一个重启来验证的,那么它是如何来验证的呢?观察程序目录下 ...

  10. 基于canvas实现钟表

    原理说明 1.通过arc方法实现钟表外环: 2.通过line实现钟表时针,分针,秒针和刻度标志的绘制,基于save和restore方法旋转画布绘制不同角度的指针: 3.通过font方法实现在画布上绘制 ...