因为某些原因,咕掉了一段时间

所以现在才更新

T1

斐波那契

一看就是规律

然而我选择了暴力

其实完全可以打表去找规律。

然后就可以发现父亲的顺序也是斐波那契

就这

#include<bits/stdc++.h>
using std::cout; using std::endl;
#define int long long
#define debug cout<<"debug"<<endl
#define freopen eat2 = freopen
#define scanf eat1 = scanf
namespace xin_io
{
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
#define scanf eat1 = scanf
#define freopen eat2 = freopen
char buf[1<<20],*p1 = buf,*p2 = buf;FILE *eat2;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile(){freopen("o.txt","w",stdout);}
inline int get()
{
int s = 0,f = 1;register char ch = gc();
while(!isdigit(ch))
{if(ch == '-') f = -1;ch = gc();}
while(isdigit(ch))
{s = s * 10 + ch - '0';ch = gc();}return s * f;
}
}
using namespace xin_io; int eat1;
static const int maxn = 61;
namespace xin
{
int f[maxn],st[maxn];
std::map < int,bool > vis;
/* void biao(int x)
{
vis[x] = 1;
if(x <= 0) return ;
if(x == 2) {vis[x] = 1; return ;}
if(x == 1) {vis[x] = 1; return ;}
int l = 1,r = 60;
while(l < r and l != r- 1)
{
register int mid = l + r >> 1;
if(x - st[mid] < 0) r = mid;
else l = mid;
}
biao(x - st[((l + r)>>1)] + 1);
}*/
int ans;
/* void find(int x)
{
if(vis[x]) {ans = x; return ;}
if(x == 2) {find(1); return ;}
if(x == 1) {ans = 1; return ;}
int l = 1,r = 60;
while(l < r and l != r- 1)
{
register int mid = l + r >> 1;
if(x - st[mid] < 0) r = mid;
else l = mid;
}
find(x - st[((l + r) >> 1)] + 1);
}*/
void search(int x,int y)
{
if(x == y) {ans = x; return ;}
if(x > y)
{
if(x == 2) {search(1,y); return ;}
if(x == 1) {ans = 1; return;}
int l = 1,r = 60;
while(l < r and l != r - 1)
{
register int mid = l + r >> 1;
if(x - st[mid] < 0) r = mid;
else l = mid;
}
search(x - st[(l + r) >> 1] + 1,y);
}
if(x < y)
{
if(y == 2) {search(x,1); return ;}
if(y == 1) {ans = 1; return ;}
int l = 1,r = 60;
while(l < r and l != r- 1)
{
register int mid = l + r >> 1;
if(y - st[mid] < 0) r = mid;
else l = mid;
}
search(x,y - st[(l + r) >> 1] + 1);
}
}
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
f[0] = f[1] = 1;
for(register int i=1;i<=60;++i) f[i] = f[i-1] + f[i-2];
st[1] = 3;
for(register int i=2;i<=60;++i)
st[i] = st[i-1] + f[i-1];//,cout<<"i = "<<i<<" st[i] = "<<st[i]<<endl;
int m = get();
for(register int i=1;i<=m;++i)
{
register int l = get(),r = get();
if(abs(l - r) == 1) {printf("1\n"); continue;}
search(l,r);
printf("%lld\n",ans);
}
return 0;
}
}
signed main() {return xin::main();}

T2

权值线段树完全可以搞定

然而我选择了 \(splay\)

其实我应该早一点去学分块的。

我喜欢暴力的数据结构

然后就有了



#include<bits/stdc++.h>
using std::cout; using std::endl;
//#define int long long
#define debug cout<<"debug"<<endl
#define freopen eat2 = freopen
#define scanf eat1 = scanf
namespace xin_io
{
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
#define scanf eat1 = scanf
#define freopen eat2 = freopen
char buf[1<<20],*p1 = buf,*p2 = buf;FILE *eat2;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile(){freopen("o.txt","w",stdout);}
inline int get()
{
int s = 0,f = 1;register char ch = gc();
while(!isdigit(ch))
{if(ch == '-') f = -1;ch = gc();}
while(isdigit(ch))
{s = s * 10 + ch - '0';ch = gc();}return s * f;
}
}
using namespace xin_io; int eat1;
static const int maxn = 3e5+10;
namespace xin
{
int a[maxn],n,m;
class xin_tree{public:int lson,rson,s;}t[maxn<<5];
#define ls(fa) t[fa].lson
#define rs(fa) t[fa].rson
int root[maxn],tot;
#define up(fa) (t[fa].s = t[ls(fa)].s + t[rs(fa)].s)
void insert(int &x,int l,int r,int pos,int val)
{
if(!x) x = ++tot;
if(l == r) {t[x].s += val; return ;}
register int mid = l + r >> 1;
if(pos > mid) insert(rs(x),mid+1,r,pos,val);
else insert(ls(x),l,mid,pos,val);
up(x);
}
int query(int fa,int l,int r,int ql,int qr)
{
if(!fa or ql > r or qr < l ) return 0;
if(ql <= l and qr >= r) return t[fa].s;
register int mid = l + r >> 1,ret = 0;
ret += query(ls(fa),l,mid,ql,qr);
ret += query(rs(fa),mid+1,r,ql,qr);
return ret;
}
inline short main()
{
#ifndef ONLINE_JUDGE
openfile();
#endif
n = get(); m = get();
for(register int i=1;i<=n;++i) a[i] = get(),insert(root[a[i]],1,n,i,1);
while(m--)
{
register int op = get();
if(op == 1)
{
register int l = get(),r = get(),c = get();
printf("%d\n",query(root[c],1,n,l,r));
}
else
{
register int x = get();
if(a[x] == a[x+1]) continue;
register int c1 = a[x],c2 = a[x+1];
insert(root[c1],1,n,x,-1); insert(root[c1],1,n,x+1,1);
insert(root[c2],1,n,x+1,-1);insert(root[c2],1,n,x,1);
std::swap(a[x],a[x+1]);
}
}
return 0;
}
}
signed main() {return xin::main();}

还有 \(lower_bound\) 版



#include<bits/stdc++.h>
using std::cout; using std::endl;
//#define int long long
#define debug cout<<"debug"<<endl
#define freopen eat2 = freopen
#define scanf eat1 = scanf
namespace xin_io
{
#define gc() p1 == p2 and (p2 = (p1 = buf) + fread(buf,1,1<<20,stdin),p1 == p2) ? EOF : *p1++
#define scanf eat1 = scanf
#define freopen eat2 = freopen
char buf[1<<20],*p1 = buf,*p2 = buf;FILE *eat2;
inline void openfile() {freopen("t.txt","r",stdin);} inline void outfile(){freopen("o.txt","w",stdout);}
inline int get()
{
int s = 0,f = 1;register char ch = gc();
while(!isdigit(ch))
{if(ch == '-') f = -1;ch = gc();}
while(isdigit(ch))
{s = s * 10 + ch - '0';ch = gc();}return s * f;
}
}
using namespace xin_io; int eat1;
static const int maxn = 3e5+10;
namespace xin
{
class xin_data
{
public:
int color,pos;
friend bool operator < (xin_data x,xin_data y)
{return x.color == y.color ? x.pos < y.pos : x.color < y.color;}
}a[maxn];
int n,m;
int pre[maxn];
int col[maxn],pos[maxn];
bool vis[maxn];
inline short main()
{
#ifndef ONLINE_JUDGE
openfile(); outfile();
#endif
n = get(); m = get(); bool flag = 0;
for(register int i=1;i<=n;++i)
{
a[i].color = get(),a[i].pos = i,pre[i] = a[i].color;
if(!vis[a[i].color])
vis[a[i].color] = 1;
else
flag = 1;
}
if(n <= 1000)
{
while(m--)
{
register int op = get();
if(op == 1)
{
register int l = get(),r = get(),c = get(),cnt = 0;
for(register int i=l;i<=r;++i)
if(pre[i] == c) cnt++;
printf("%d\n",cnt);
}
else
{
register int x = get();
std::swap(pre[x],pre[x+1]);
}
}
return 0;
}
std::sort(a+1,a+n+1);
for(register int i=1;i<=n;++i) col[i] = a[i].color,pos[i] = a[i].pos;
for(register int i=1;i<=m;++i)
{
register int op = get();
// cout<<"i = "<<i<<' ';
if(op == 1)
{
register int l = get(),r = get(),val = get();
// cout<<" l = "<<l<<" r = "<<r<<" color = "<<val<<' ';
register int p1 = std::lower_bound(col+1,col+n+1,val) - col,p2 = std::upper_bound(col+1,col+n+1,val) - col - 1;
if(p2 < p1) {printf("0\n"); continue;}
register int left = std::lower_bound(pos+p1,pos+p2+1,l) - pos,right = std::lower_bound(pos+p1,pos+p2+1,r) - pos;
if(pos[right] != r) right --;
// cout<<"p1 = "<<p1<<" p2 = "<<p2<<" left = "<<left<<" right = "<<right<<endl;
if(!flag) {printf("%d\n",(bool)(right - left + 1)); continue;}
printf("%d\n",right - left + 1);
}
else
{
register int x = get();
if(x == n) continue;
if(pre[x] == pre[x+1]) continue;
register int c1 = pre[x],c2 = pre[x+1];
register int p1 = std::lower_bound(col+1,col+n+1,c1) - col,p2 = std::upper_bound(col+1,col+n+1,c1) - col - 1;
register int y = std::lower_bound(pos+p1,pos+p2+1,x) - pos;
pos[y] = x + 1;
p1 = std::lower_bound(col+1,col+n+1,c2) - col; p2 = std::upper_bound(col+1,col+n+1,c2) - col - 1;
y = std::lower_bound(pos+p1,pos+p2+1,x+1) - pos;
pos[y] = x;
std::swap(pre[x],pre[x+1]);
}
}
// for(register int i=1;i<=n;++i)
// cout<<"i = "<<i<<" ("<<a[i].color<<','<<a[i].pos<<")"<<endl;
return 0;
}
}
signed main() {return xin::main();}

T3

还没改完,咕了

[考试总结]noip模拟9的更多相关文章

  1. 6.17考试总结(NOIP模拟8)[星际旅行·砍树·超级树·求和]

    6.17考试总结(NOIP模拟8) 背景 考得不咋样,有一个非常遗憾的地方:最后一题少取膜了,\(100pts->40pts\),改了这么多年的错还是头一回看见以下的情景... T1星际旅行 前 ...

  2. 5.23考试总结(NOIP模拟2)

    5.23考试总结(NOIP模拟2) 洛谷题单 看第一题第一眼,不好打呀;看第一题样例又一眼,诶,我直接一手小阶乘走人 然后就急忙去干T2T3了 后来考完一看,只有\(T1\)骗到了\(15pts\)[ ...

  3. 5.22考试总结(NOIP模拟1)

    5.22考试总结(NOIP模拟1) 改题记录 T1 序列 题解 暴力思路很好想,分数也很好想\(QAQ\) (反正我只拿了5pts) 正解的话: 先用欧拉筛把1-n的素数筛出来 void get_Pr ...

  4. [考试总结]noip模拟23

    因为考试过多,所以学校的博客就暂时咕掉了,放到家里来写 不过话说,vscode的markdown编辑器还是真的很好用 先把 \(noip\) 模拟 \(23\) 的总结写了吧.. 俗话说:" ...

  5. 2021.9.17考试总结[NOIP模拟55]

    有的考试表面上自称NOIP模拟,背地里却是绍兴一中NOI模拟 吓得我直接文件打错 T1 Skip 设状态$f_i$为最后一次选$i$在$i$时的最优解.有$f_i=max_{j<i}[f_j+a ...

  6. 「考试」noip模拟9,11,13

    9.1 辣鸡 可以把答案分成 每个矩形内部连线 和 矩形之间的连线 两部分 前半部分即为\(2(w-1)(h-1)\),后半部分可以模拟求(就是讨论四种相邻的情况) 如果\(n^2\)选择暴力模拟是有 ...

  7. 6.11考试总结(NOIP模拟7)

    背景 时间分配与得分成反比,T1 20min 73pts,T2 1h 30pts,T3 2h 15pts(没有更新tot值,本来应该是40pts的,算是本次考试中最遗憾的地方了吧),改起来就是T3比较 ...

  8. 6.10考试总结(NOIP模拟6)

    前言 就这题考的不咋样果然还挺难改的.. T1 辣鸡 前言 我做梦都没想到这题正解是模拟,打模拟赛的时候看错题面以为是\(n\times n\)的矩阵,喜提0pts. 解题思路 氢键的数量计算起来无非 ...

  9. 6.7考试总结(NOIP模拟5)

    前言 昨天说好不考试来着,昨晚就晚睡颓了一会,今天遭报应了,也没好好考,考得挺烂的就不多说了. T1 string 解题思路 比赛上第一想法就是打一发sort,直接暴力,然后完美TLE40pts,这一 ...

  10. [考试反思]NOIP模拟测试19:洗礼

    []260 []230[]210 []200[8]170[9]160 这套题一般,数据很弱,T1T2暴力都能A,而且都是一些思维题,想不到就爆0. 原因不明,很多一直很强的人在这一次滑铁卢了,于是我个 ...

随机推荐

  1. Ubuntu18.04的下载与安装(全过程纪录)

    unbuntu18.04的下载与安装 注:由于大部分过程是以图片形式说明,所以可能会导致网页浏览不流畅 前言 有时候由于个人计算机中文件的频繁移动,导致虚拟机的镜像文件有时候莫名删除了或者不见了(说到 ...

  2. 重新整理 .net core 实践篇—————文件系统[二十二]

    前言 简单介绍一下文件系统. 正文 文件系统,主要是下面3个接口组成: IFileProvider IFileInfo IDirectoryContents 那么他们的实现是: physicalFil ...

  3. Linux分区,格式化概念理解

    一.分区概念: 逻辑上分成不同的存储空间. 分区类型: 主分区:最多只能有4个 扩展分区:最多只能有1个. 主分区加扩展分区最多有4个. 布恩那个写入数据,只能包含逻辑分区 逻辑分区: 主分区为什么只 ...

  4. [Linux]经典面试题 - 系统管理 - 备份策略

    [Linux]经典面试题 - 系统管理 - 备份策略 目录 [Linux]经典面试题 - 系统管理 - 备份策略 一.备份目录 1.1 系统目录 1.2 服务目录 二.备份策略 2.1 完整备份 2. ...

  5. C#关于数据库中存储的用户权限类似 "普通员工,管理员" 如何在代码中读取分析权限

    之前在看某些数据库的用户权限的表时,发现字段是这样类似这样存储的"  普通员工,管理员 ",当时觉得他们是通过分割字符串来分析权限的.后来读到 Liam Wang  的 https ...

  6. 4、VMware虚拟机相关配置

    4.1.VMware虚拟机开启模块snapshot失败: 1.非正常VMware关闭虚拟机(例如开关机过程中关掉VMware等操作),再次启动虚拟机可能 会出现提示:"锁定文件失败 虚拟机开 ...

  7. vue cli3 使用elemet-plus

    原文章: https://blog.csdn.net/qq_44827865/article/details/115457445 element-plus官方网站:https://element-pl ...

  8. WebSocket实现前后端通讯

    WebSocket实现前后端通讯 长安如梦里,何日是归期. 简介:我们上线了一个商城项目,移交运营团队使用之后,他们要求商城有新订单来的时候同时加上声音提示,让她们可以及时知道有单来了.我这边想了想, ...

  9. UI自动化学习笔记- Selenium元素等待(强制等待、显示等待、隐式等待)

    一.元素等待 1. 元素等待 1.1 什么是元素等待 概念:在定位页面元素时如果未找到,会在指定时间内一直等待的过程 意思就是:等待指定元素已被加载出来之后,我们才去定位该元素,就不会出现定位失败的现 ...

  10. Linux:jar服务部署

    1.进入jar包所在文件夹中 2.启动jar,将jar在后台运行,并且记录jar的pid 命令为 : nohup  java  -jar  test.jar (同jar包的配置文件要在jar包同级目录 ...