NOIP模拟测试12
T1 斐波那契
一道找规律题,被我做成了贼难的题。
观察图片可知x=f[i-1]+j。(j为x的父亲)且j<=f[i-1],然后就二分找父亲没了。
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int mod=;
ll f[];
struct Hush{
int head[],nxt[],cnt;
ll to[];
void insert(ll x)
{
int k=x%mod;
to[++cnt]=x;
nxt[cnt]=head[k];
head[k]=cnt;
return ;
}
bool find(ll x)
{
int k=x%mod;
for(int i=head[k];i;i=nxt[i])if(to[i]==x)return ;
return ;
}
void clear()
{
memset(head,,sizeof(head));
cnt=;
}
}H;
ll Getlca(ll a,ll b)
{
if(a>b)swap(a,b);
H.clear();
H.insert(a);
while(a!=)
{
ll fa=lower_bound(f+,f+,a)-f;
fa=a-f[fa-];
H.insert(fa);
a=fa;
}
if(H.find(b))return b;
while(b!=)
{
ll fb=lower_bound(f+,f+,b)-f;
fb=b-f[fb-];
if(H.find(fb))return fb;
b=fb;
}
}
int main()
{
f[]=;f[]=;
for(int i=;i<=;i++)f[i]=f[i-]+f[i-];
int m;
scanf("%d",&m);
for(int i=;i<=m;i++)
{
ll a,b;
scanf("%lld%lld",&a,&b);
printf("%lld\n",Getlca(a,b));
}
return ;
}
T2 水题不说了
T3 分组
一道好题。
k=1:
以前做过一道菜肴制作,然后就可以知道:区间越往后放,就越靠前。然后就维护最长的区间即可
k=2:
用扩展域并查集,直接维护,特判很恶心。
#include<bits/stdc++.h>
#define MAXN 333333
using namespace std;
int nxt[MAXN],a[MAXN],pf[MAXN],dr[MAXN],f[MAXN];
bool vst[MAXN];
vector<int>ans,cl;
inline int find(int x)
{
return f[x]==x?x:f[x]=find(f[x]);
}
inline void merge(int x,int y)
{
int fa=find(x),fb=find(y);
f[fa]=fb;
return ;
}
void bcj_clear(int l,int r)
{
for(int i=l;i<=r;i++)f[a[i]]=a[i],vst[a[i]]=,dr[a[i]]=;
cl.clear();
return ;
}
int main()
{
int n,k,maxa=;
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
maxa=max(maxa,a[i]);
}
int ed=n;
for(int i=;i<=;i++)pf[i]=i*i;
if(k==)
{
for(int i=n;i>=;i--)
{
bool ok=;
for(int j=sqrt(maxa*);j>=&&pf[j]>=a[i];j--)
if(vst[pf[j]-a[i]]){ok=;break;}
if(!ok){
ed=i;
for(int k=;k<cl.size();k++)
vst[cl[k]]=;
cl.clear();
ans.push_back(i);
}
vst[a[i]]=;
cl.push_back(a[i]);
}
if(!ans.size())printf("1\n");
cout<<ans.size()+<<endl;
for(int i=ans.size()-;i>=;i--)
printf("%d ",ans[i]);
return ;
}
else
{
int last=n;
for(int i=;i<=maxa*;i++)f[i]=i;
for(int i=n;i>=;i--)
{
bool ok=;
for(int j=sqrt(maxa*);j>=&&pf[j]>=a[i];j--)
{
if(vst[pf[j]-a[i]]&&!vst[a[i]])
{
// cout<<i<<"---"<<endl;
int now=pf[j]-a[i];
if(find(a[i])==find(now)){ok=;break;}
if(!dr[now])dr[now]=a[i];
else if(dr[now]!=now)merge(dr[now],a[i]);
else {ok=;break;}
if(!dr[a[i]])dr[a[i]]=now;
else if(dr[a[i]]!=a[i])merge(dr[a[i]],now);
else {ok=;break;}
}
else if(vst[pf[j]-a[i]]&&a[i]==pf[j]-a[i])
{
// cout<<i<<' '<<dr[a[i]]<<endl;
if(dr[a[i]]){ok=;break;}
else dr[a[i]]=a[i];
//cout<<i<<' '<<a[i]<<")S"<<endl;
}
}
if(!ok){
ed=i;
bcj_clear(i,last);
last=i;
ans.push_back(i);
}
vst[a[i]]=;
cl.push_back(a[i]);
}
if(!ans.size()){printf("1\n");return ;}
cout<<ans.size()+<<endl;
for(int i=ans.size()-;i>=;i--)
printf("%d ",ans[i]);
return ;
}
}
主要反思一下:
考试策略不好,时间分配不合理,难度评估sb 认为T1最难,T3最水?????????
端正心态,不要去刚题,但也不要轻易放弃(暴力还是要打的)
NOIP模拟测试12的更多相关文章
- 2019.8.3 [HZOI]NOIP模拟测试12 C. 分组
2019.8.3 [HZOI]NOIP模拟测试12 C. 分组 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 刚看这题觉得很难,于是数据点分治 k只有1和2两种,分别 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色
2019.8.3 [HZOI]NOIP模拟测试12 B. 数颜色 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 数据结构学傻的做法: 对每种颜色开动态开点线段树直接维 ...
- 2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci)
2019.8.3 [HZOI]NOIP模拟测试12 A. 斐波那契(fibonacci) 全场比赛题解:https://pan.baidu.com/s/1eSAMuXk 找规律 找两个节点的lca,需 ...
- 2019.8.3 NOIP模拟测试12 反思总结【P3938 斐波那契,P3939 数颜色,P3940 分组】
[题解在下面] 早上5:50,Gekoo同学来到机房并表态:“打暴力,打暴力就对了,打出来我就赢了.” 我:深以为然. (这是个伏笔) 据说hzoi的人还差两次考试[现在是一次了]就要重新分配机房,不 ...
- 20190803 NOIP模拟测试12「斐波那契(fibonacci)· 数颜色 · 分组 」
164分 rank11/64 这次考的不算太差,但是并没有多大的可能性反超(只比一小部分人高十几分而已),时间分配还是不均,T2两个半小时,T1半个小时,T3-额十几分钟吧 然额付出总是与回报成反比的 ...
- [NOIP模拟测试12]题解
A. 找规律题.儿子的编号减去 小于它编号的最大的fibonacci数 即可得到它父亲的编号. 然后两个节点都暴力上跳就好了.预处理一下fibonacci数,每次二分查找即可. #include< ...
- 「题解」NOIP模拟测试题解乱写II(36)
毕竟考得太频繁了于是不可能每次考试都写题解.(我解释个什么劲啊又没有人看) 甚至有的题目都没有改掉.跑过来写题解一方面是总结,另一方面也是放松了. NOIP模拟测试36 T1字符 这题我完全懵逼了.就 ...
- 2019.8.1 NOIP模拟测试11 反思总结
延迟了一天来补一个反思总结 急匆匆赶回来考试,我们这边大家的状态都稍微有一点差,不过最后的成绩总体来看好像还不错XD 其实这次拿分的大都是暴力[?],除了某些专注于某道题的人以及远程爆踩我们的某学车神 ...
- NOIP模拟测试17&18
NOIP模拟测试17&18 17-T1 给定一个序列,选取其中一个闭区间,使得其中每个元素可以在重新排列后成为一个等比数列的子序列,问区间最长是? 特判比值为1的情况,预处理比值2~1000的 ...
随机推荐
- spring5 源码深度解析----- @Transactional注解的声明式事物介绍(100%理解事务)
面的几个章节已经分析了spring基于@AspectJ的源码,那么接下来我们分析一下Aop的另一个重要功能,事物管理. 事务的介绍 1.数据库事物特性 原子性多个数据库操作是不可分割的,只有所有的操作 ...
- 注册中心nacos完整部署及与eureka区别
1. 场景描述 nacos最近用的比较多,介绍下nacos及部署吧,刚看了下以前写过类似的,不过没写如何部署及与eureka区别,只展示了效果,补补吧. 2.解决方案 2.1 nacos与eureka ...
- 选择高性能NoSQL数据库的5个步骤
来源:Redislabs作者:Shabih Syed 翻译:Kevin (公众号:中间件小哥) 构建在线和运营应用程序的开发团队越来越多地选择一类新的数据库来支持它们.它被称为“NoSQL”或“Not ...
- tp5中使用中间控制器代理路由,以避免创建过多的无用控制器方法
在写项目的时候偶尔会加载一些不需要传递参数的静态视图,例如 class Index extends Common { public function index() { return $this-&g ...
- 机器学习:weka中添加自己的分类和聚类算法
不管是实验室研究机器学习算法或是公司研发,都有需要自己改进算法的时候,下面就说说怎么在weka里增加改进的机器学习算法. 一 添加分类算法的流程 1 编写的分类器必须继承 Classifier或是Cl ...
- [JOYOI1463] 智商问题
题目限制 时间限制 内存限制 评测方式 题目来源 1500ms 131072KiB 标准比较器 Local 题目背景 各种数据结构帝~ 各种小姊妹帝~ 各种一遍AC帝~ 来吧! 题目描述 某个同学又有 ...
- Cocos2d-x 学习笔记(12) Speed Follow
Speed Follow都是直接继承了Action. Speed对其他action进行包装,改变action的速度. Follow可用于node在scene中的运动,scene将node作为Follo ...
- 《Java并发编程实战》读书笔记-第3章 对象的共享
可见性 在没有同步的情况下,编译器.处理器以及运行时都可能做指令重排.执行结果可能会出现错误 volatile变量 编译器与运行时不会进行指令重排,不会进行缓存,使用volatile变量要满足以下条件 ...
- 关于a标签的href属性
今天有人问起我a标签的href属性值为 # 与 JavaScript:void(0) 有啥区别,想来也没啥可说,就简单说两句 a标签的href属性,优点有: 天然鼠标手型,以及可以被键盘focus以及 ...
- 从Go语言编码角度解释实现简易区块链
区块链技术 人们可以用许多不同的方式解释区块链技术,其中通过加密货币来看区块链一直是主流.大多数人接触区块链技术都是从比特币谈起,但比特币仅仅是众多加密货币的一种. 到底什么是区块链技术? 从金融学相 ...