noip模拟10.23

NOIP模拟总结10.23-11.1 10.23 今天考的比较差。。。 T1比较脑抽。完全没想到用数组来模拟,然后无脑上了个trie,发现没办法维护,然后打了个一个可持久化trie,还用bitset加速合并和拆分,结果复杂到爆炸。。。正解其实就是个模拟+组合数学题目。。 T2一开始觉得是最短路,用样例试了一下发现有点问题。。然后觉得是斜率优化,但是由于T1花的时间太多,导致我根本没有时间打,只是打了个50分草草收场。。 T3没有 阅读详情

【真是一次失败的经历呢蒟蒻又垫底了】

T1

【论蒟蒻是怎么拿100分的规律写70分的暴力期望得分90实际得分50的】

小结
  1. 代码的实现有问题。这道题没有对拍结果成功狗带。这次的策略本来没有毛病(就算打不出正解也可以得90分)
  2. 怎么把正解想出来【虽然没人指望我想出正解】。
    这属于上一个问题的进阶了。以这道题举例,我离想出正解还差哪些条件呢?
    宏观分析的毛病:没有考虑清楚就动笔。找出了规律却没有明确怎么用才好,因为时间不多了抱着写一点赚一点的心态开始敲键盘。
    细节就是:卡在了dep上,觉得不用dep没办法求公共祖先。经谢大佬点拨才知道就跳序号大的反正它们的公共祖先比它们的序号都小。不会出现跳越界的情况。
注意

最开始r的边界定小了导致无限循环

ll getfa(ll x)
{
    if(x==1) return 1;
    int l=0,r=60;
    while(l<r-1){
        int mid=(l+r)>>1;
        if(f[mid]<x) l=mid;
        else r=mid; 
    }
    //f[r-1]+1<=x<=f[r]
    return x-f[l];
}
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
const int N=1e6;
ll f[N+5],fa[N+5];
ll getfa(ll x)
{
    if(x==1) return 1;
    int l=0,r=60;
    while(l<r-1){
        int mid=(l+r)>>1;
        if(f[mid]<x) l=mid;
        else r=mid; 
    }
    //f[r-1]+1<=x<=f[r]
    return x-f[l];
}
ll lca(ll a,ll b)
{
    while(a!=b){
        if(a<b) swap(a,b);
        a=getfa(a);
    }
    return a;
}
int main()
{
    freopen("fibonacci.in","r",stdin);
    freopen("fibonacci.out","w",stdout);
    int m;
    scanf("%d",&m);
    f[1]=1,f[0]=1;
    for(int i=2;i<=60;i++)  f[i]=f[i-1]+f[i-2];
    for(int i=1;i<=m;i++){
        ll a,b;
        scanf("%I64d%I64d",&a,&b);
        printf("%I64d\n",lca(a,b));
    }
    return 0;
}

T2

【本题得分45,比暴力40多5分蒟蒻是不是该庆祝一下呢】

小结

回忆一下做这道题时的思路……大概是想一想线段树怎么做想不出来好吧开始疯狂数据分治。可惜数据分治最后的效果不大,看来还是时间复杂度没有分析清楚。
这道题的正解用到了一个关键的知识点【二分】,知道标答时感觉”啊竟然这么容易?“(可就是没想到)

注意

之后调题还是WA几次主要是二分边界的原因。

就是这里调了好久

while(l<r-1){
        mid=(l+r)>>1;
        //if(vec[c][mid]==pos) break;
        if(vec[c][mid]<pos) l=mid;
        else r=mid;
    }

总之这是一个及其不靠谱的语句,以后不要乱用

//if(vec[c][mid]==pos) break;
#include<cstdio>
#include<cstring>
#include<vector>
using namespace std;
const int N=3e5+2;
int a[N];
vector<int> vec[N];
int L(int x,int col)//找到大于等于x大的第一个下标 
{
    int l=-1,r=vec[col].size();
    while(l<r-1){
        int mid=(l+r)>>1;
        if(vec[col][mid]<x) l=mid;//(l,
        else r=mid;
    }
    return r;
}
int R(int pos,int col)
{
    int l=-1,r=vec[col].size();
    while(l<r-1){
        int mid=(l+r)>>1;
        if(vec[col][mid]<=pos) l=mid;   //[l,
        else r=mid;
    }
    return l;
}
void change(int c,int pos,int to)
{
    int l=-1,r=vec[c].size(),mid;
    while(l<r-1){
        mid=(l+r)>>1;
        //if(vec[c][mid]==pos) break;
        if(vec[c][mid]<pos) l=mid;
        else r=mid;
    }
    vec[c][r]=to;
}
int main()
{
    //freopen("color.in","r",stdin);
    //freopen("color.out","w",stdout);
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        vec[a[i]].push_back(i);
    }
    int cnt=0;
    while(m--){
        int opt;
        scanf("%d",&opt);
        if(opt==1){
            ++cnt;
            int l,r,c;
            scanf("%d%d%d",&l,&r,&c);
            if(vec[c].size())
            printf("%d\n",R(r,c)-L(l,c)+1);
            else printf("0\n");
        }
        if(opt==2){
            int x;
            scanf("%d",&x); 
            change(a[x],x,x+1);
            change(a[x+1],x+1,x);
            swap(a[x],a[x+1]);
        }
    }
    return 0;
}

T3

小结

就不多评价在考场上对T3的表现了因为这道题爆零了,没调出来反而浪费了调T1的时间。
1、 前面的题调太久,做题的时候不够专注且没想好就动笔耽误了时间。
2、没有正确的预判,想了一个暴力就开始打,打完发现是错的。

解法

1。 K==1 还是比较好想的略
2。 K==2 用到了并查集,思想和NOI2013关押罪犯有点类似。分成两组建一个反集合。
【最后只得了84分调到了21:30蒟蒻我真的尽力了】

#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
using namespace std;
int K,MAX,M,n;
int a[131072+5],s[131072+5];
int fa[131072*2+5], exi[131072+5];
int getfa(int x)
{
    return fa[x]==x?x:fa[x]=getfa(fa[x]);
}
void merge(int a,int b)
{
    int pa=getfa(a),pb=getfa(b);
    fa[pa]=pb;
}
bool check(int x)
{
    if(K==1){
        for(int i=sqrt(x);i*i<=MAX+x;i++)
        if(i*i>=x)
            if(exi[i*i-x]) return 0;
        return 1;
    }
    if(K==2){
        int thi=0;bool sam=0;
        for(int i=sqrt(x);i*i<=MAX+x;i++)
        if(i*i>=x)
        if(exi[i*i-x]) {
            thi++;
            if(i*i-x==x) {
                sam=1;continue;
            }
            merge(x,i*i-x+M);
            merge(x+M,i*i-x);
            if(getfa(i*i-x+M)==getfa(i*i-x)) return 0;
        }
        if((sam&&thi>1)||(sam&&exi[x]>=2))
            return 0;//出现了2*x=i*i且之前x出现过且还有另一数与x为敌 
        return 1;
    }
}
int main()
{
    freopen("division.in","r",stdin);
    freopen("division.out","w",stdout);
    scanf("%d%d",&n,&K);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
        M=max(a[i],M);
    } 
    if(K==1){
        int tot=0;
        for(int i=n;i>=1;i--){
            if(!check(a[i])){
            //  printf("i:%d %d\n",i,a[i]);
                s[++tot]=i;
                MAX=0;
                memset(exi,0,sizeof(exi));
            } 
            //else 
            MAX=max(MAX,a[i]);
            exi[a[i]]++;
        }
        printf("%d\n",tot+1);
        for(int i=tot;i>=1;i--)
        printf("%d ",s[i]);
        printf("\n");
    }
    if(K==2){
        int tot=0;s[0]=n;
        for(int i=1;i<=2*M;i++) fa[i]=i;
        for(int i=n;i>=1;i--){
            if(!check(a[i])){//新分组 
                s[++tot]=i;
                MAX=0;
                memset(exi,0,sizeof(exi));
                for(int j=s[tot];j<=s[tot-1];j++){
                    fa[a[j]]=a[j];fa[a[j]+n]=a[j]+n;
                } 
            }
        //  else 
            MAX=max(MAX,a[i]);
            exi[a[i]]++;
        }
        printf("%d\n",tot+1);
        for(int i=tot;i>=1;i--)
        printf("%d ",s[i]);
        printf("\n");
    }
    return 0;
}

最后总结:
这次考试还是T1出的问题最大,如果T1过了T2的分数加起来也勉强可看。进步空间嘛就是希望可以更快一点【注意力再集中一点】,所以嘛,【验证代码】是很重要的。

其实今天因为这个还是挺丧的,有点怕明天再垫底【安慰自己*1】

飞牛NAS一键部署小雅Emby全家桶:解锁海量影音资源与智能刮削 本文详细介绍了如何在飞牛NAS上通过Docker一键部署小雅Emby全家桶,完美解决传统WebDAV挂载无法刮削元数据的问题。该方案整合了小雅Alist海量影音资源与Emby媒体服务器,通过预下载超百GB元数据包,自动实现海报、简介等信息的完美匹配,打造出精美的个人影音库。部署过程需准备阿里云盘令牌与充足存储空间,并详解了从环境配置、镜像拉取到最终验证的完整步骤及优化技巧。 阅读详情

相关推荐

Bootloader详解,理解Bootloader看这篇就够了

这里写目录标题一、Bootloader作用(目的)二、完成Boot最终目的的前提条件三、对前提条件的详细说明3.1、对前提条件(1)的说明:3.2、对前提条件(2)的说明:3.3、对前提条件(3)的说明:3.4、对前提条件(4)的说明:3.4、对前提条件(5)的说明:四、loader是干啥的 一、Bootloader作用(目的) Bootloader=Boot + loader Boot的目的: 最终目的:跳到C语言中;为了C语言运行程序会进行一系列的初始化,系统一上电后如何通过一系列的设置让软件程序员

iduuigdg的博客 11万+

【NOIP模拟】 (10.23)

T1 fibonacci 题目描述:        判读一个数是否为两个斐波拉契数的乘积。        Fibonacci 数的定义:F0=0,F1=1,Fk=Fk-1+Fk-2 。 输入格式 第一行一个整数 T 代表提问次数。 接下来 T 行,每行一个数字 A 表示询问的数。 输出格式 对于每次提问,如果这个数可以被分解成两个 Fibonacci 数的成绩输出“Y

ETO的博客 401

ADS中HB仿真自动优化报错问题解决心得

在ADS HB仿真中自动优化出现报错被强制暂停,解决方法如下

yyyyyyyyyyjy的博客 6541

2020.10.23【NOIP提高B组】模拟 总结

总结(结束之前) 第一题:原题,记得5年级考过。100? 第二题:背包+贪心?100? 第三题:dpdpdp?没打出来。用dpdpdp打了一个xi=0x_i=0xi​=0,应该25。 上天保佑我!!! 总结 第一题:满分。 第二题:才40分。应该是按性价比排序,改了就对了。 第三题:才5分。正解是连边跑最短路。 竟然145,第7。 ...

linweitong2020的博客 198

算法基础之数组双指针(Leetcode题型归纳)

数组双指针(Leetcode题型归纳)1.前言2.双指针基础3.相向双指针3.1定义3.2真题分析3.2.1两数之和(1)3.2.2两数之和-输入有序数组(167)3.2.3三数之和(15)3.2.4最接近的三数之和(16)3.2.5四数之和(18)3.2.6盛最多水的容器(11)3.2.7有效三角形的个数(611)4.同向双指针-快慢指针4.1定义4.2真题分析4.1.1删除排序数组中的重复项(26)4.1.2移除元素(27)4.1.3删除排序数组中的重复项(80)4.1.4移动零(283)4.1.5数组

Buluchacha的博客 1034

PaddleOCR PP-OCRv5实战:5分钟搞定身份证信息提取(附完整代码)

本文详细介绍了如何利用PaddleOCR的PP-OCRv5模型,在5分钟内快速搭建身份证信息提取流程。文章从环境搭建、核心代码实战出发,深入解析了PP-OCRv5针对证件识别的优化特性,并提供了从OCR结果到结构化数据的完整处理方案与避坑指南,帮助开发者高效实现AI驱动的自动化信息提取。

salt9的博客 783

改题

先要做的事: 把集训队内B组的题全部改完; 先要改的题:3813【NOIP2014模拟9.7】我要的幸福 3814【NOIP2014模拟9.7】天黑黑 3815【NOIP2014模拟9.7】克卜勒 * 3856【NOIP2014八校联考第3场第1试10.4】规避(path) * 1246 挑剔的美食家【难】 (平衡树,暂时不学,挖个坑,以后记住) 3888 【NOIP20

aloproking的博客 1250

利用OrthoFinder做泛基因家族聚类分析

这条命令会将 Arabidopsis_thaliana.TAIR10.59_longest_trans.pep.fa 文件中的所有序列ID,去掉ID中的空格后面的部分,只保留 > 后第一个空格之前的基因ID,并将结果保存在 An1.fasta 文件中。muscle 是一种常用的多序列比对工具,用于基因组或蛋白质序列的比对。基因家族(Gene family),是来源于同一个祖先,由一个基因通过基因重复而产生两个或更多的拷贝而构成的一组基因,它们在结构和功能上具有明显的相似性,编码相似的蛋白质产物。

qq_64400864的博客 2750

NOIP模拟(10.23)T1 Fibonacci

暴力

scarlyw的博客 309

从选型到阵列:基于ESP32-S3的智能硬件麦克风系统设计实战

本文详细介绍了基于ESP32-S3芯片设计智能硬件麦克风阵列的完整实战方案。从核心芯片选型、数字MEMS麦克风的参数解读与电路设计,到关键的声学结构密封、阵列布局策略,再到利用ESP-ADF框架构建音频处理流水线并集成回声消除、噪声抑制等算法,提供了从硬件到软件的全链路设计指南与避坑要点,旨在实现清晰、稳定的远场语音交互。

weixin_29173777的博客 266

Win7/10/11文件拖拽导致资源管理器闪退问题

最近老是遇到把文件从资源管理器拖动到微信或者浏览器时,资源管理器直接闪退的问题,一开始在公司遇到了还以为是电脑配置太低,直到被封闭在家办公,发现自己的高级电脑也有这个问题,那就来了解了解问题是出在什么地方把。

Nicer_feng's blog 1万+

16.10.4 C:3046. 【NOIP2012模拟10.23】游戏

Description游戏规则如下:给定两个正整数数列,一个游戏者通过若干次操作完成游戏。每一次操作,选择两个正整数k1和k2。将第一个数列的最后连续k1个数删除,它们的和记为S1;将第二个数列的最后连续K2个数删除,它们的和记为S2。这一次操作的得分就是(S1-K1)* (S2-K2 )。直到两个数列都清空了为止,所以不允许一个数列空了,而另一个数列中还有数。游戏的总得分就是每一次操作的得分总和。

qq_35169233的博客 614

【图像超分】论文精读:Enhanced Deep Residual Networks for Single Image Super-Resolution(EDSR和MDSR)

最近对超分辨率的研究随着深度卷积神经网络 (DCNN) 的发展取得了进展。特别是,残差学习技术表现出更好的性能。在本文中,我们开发了一个增强的深度超分辨率网络(EDSR),其性能超过了当前最先进的 SR 方法。我们模型的显着性能改进是由于通过删除传统残差网络中不必要的模块进行优化。当我们稳定训练过程时,通过扩展模型大小可以进一步提高性能。我们还提出了一种新的多尺度深度超分辨率系统(MDSR)和训练方法,该方法可以在单个模型中重建不同缩放因子的高分辨率图像。所提出的方法在基准数据集上比最先进的方法表现出更好的

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7925

NOIP模拟(10.23)T3 拆网线

DP + 贪心

scarlyw的博客 308

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【NOIP2018模拟10.23】 总结

做题策略的总结 这场比赛吸取了昨天的教训,上来直接把暴力打完了,忍住没去想正解。预估分数是120,但是由于我没有梦想,打了一个特判点却开的是暴力的数据范围,于是少了10分。还有打T3暴力的时候太颓废,没有打k=1的点,白白少了10分。 最终分数110,我还是太菜了。 T1 这是一道非常NOIP的差分。 数据范围能够启发人类智慧(@cyc): O(n2)O(n^2)O(n2)的做法比较简单,可以...

ZJL_OIJR的博客 271

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

NOIP模拟(10.23)T2 一样远

LCA + 情况讨论

scarlyw的博客 346

2014-10-23 NOIP模拟赛

NOIP2014模拟赛 -----lwher 时限均为1s,内存 256MB 1、Jams倒酒(pour) Jams是一家酒吧的老板,他的酒吧提供2种体积的啤酒,a ml 和 b ml,分别使用容积为a ml 和 b ml的酒杯来装载。 酒吧的生意并不好。Jams发现酒鬼们都很穷,不像他那么土豪。有时,他们会因为负担不起a ml 或者 b ml酒的消费,而不得不离去。因此,Jams...

weixin_30376453的博客 173

3046. 【NOIP2012模拟10.23】游戏

Description 游戏规则如下:给定两个正整数数列,一个游戏者通过若干次操作完成游戏。每一次操作,选择两个正整数k1和k2。将第一个数列的最后连续k1个数删除,它们的和记为S1;将第二个数列的最后连续K2个数删除,它们的和记为S2。这一次操作的得分就是(S1-K1)*(S2-K2)。直到两个数列都清空了为止,所以不允许一个数列空了,而另一个数列中还有数。游戏的总得分就是每一次操作的得分...

zsjzliziyang的博客 226

NOIP2013模拟10.23轮舞前夕

题目大意 给定一颗n节点树,问:在选择最少点情况下,使得树上所有点都与这些点中至少一个有边连接(除了选中的点)的方案数以及选择点数这题,我们可以考虑用树形dp做,一个点的状态,0为没被选定且儿子节点都没被选定,1为没被选定且儿子节点至少一个被选定,2为被选定。那么我们可以发现,当状态为2时,子节点任意状态都可以,保留选的点数最少的(同一儿子,多个方案就求和,不同儿子用乘法)当状态为0时,儿子必然是

OIerEmeng 750

NOIP2013模拟10.23囚人的旋律

题目大意给定一个逆序图,表示若a[i]>a[j](i<j)那么i向j连一条边(这里是给定边数),问有多少个选点方案,是的选定的点之间没有连边,没选定的点与选定的点中至少一个点有连边。由于逆序图能对应一个序列,那么我们将对应的图转成序列:(题目保证:存在至少一个序列 ,按照题目描述中所述方法得到的逆序图是给定的图。)直接处理出每个位置有多少个数a[i],在其后面又比它小(根据边的关系)。 然后从左到

OIerEmeng 588

【NOIP2012模拟10.23】游戏

Description 游戏规则如下:给定两个正整数数列,一个游戏者通过若干次操作完成游戏。每一次操作,选择两个正整数k1和k2。将第一个数列的最后连续k1个数删除,它们的和记为S1;将第二个数列的最后连续K2个数删除,它们的和记为S2。这一次操作的得分就是(S1-K1)* (S2-K2 )。直到两个数列都清空了为止,所以不允许一个数列空了,而另一个数列中还有数。游戏的总得分就是每一次操作的得分总...

Beautiful women in tights 454

jzoj3046. 【NOIP2012模拟10.23】游戏

jzoj3046. 【NOIP2012模拟10.23】游戏题目DescriptionInputOutputSample InputSample OutputHint分析CODE 题目 Description 游戏规则如下:给定两个正整数数列,一个游戏者通过若干次操作完成游戏。每一次操作,选择两个正整数k1和k2。将第一个数列的最后连续k1个数删除,它们的和记为S1;将第二个数列的最后连续K2个数删...

SSL_Yyx的博客 468

Noip 模拟 6 2018/10/23

T1:浮躁 (fickle) 阿杰在上班会数学课:“最近有些同学很浮躁……” 早已习惯的你,在想这样一个问题: 共有 $ n$ 种竞赛,对于其中任意 i 种竞赛 (1≤i≤n)(1≤i≤n)(1≤i≤n),有 aiaiai 个人同时参加,问有多少个人参加了至少一门竞赛? 阿杰还在滔滔不绝,你却陷入了深思。 第一眼看上去,嗯,简单题,乱搞就好 等一下,没有取模 发现高精会TLE,然后就不会了 正解:...

chm_wt的博客 191

10.23 noip模拟试题

尼玛蛋pdf好难粘 直接写了 T1 /*开始写wa了 我真弱2333 关于p的排序规则不只是差值 为了字典序最小 还要拍别的*/ #include<cstdio> #include<algorithm> #define maxn 100010 #define inf 1e7 #define mem(a,b) for(int i=0;i<=n;i++...

weixin_30634661的博客 136

10.23NOIP模拟题

叉叉题目描述现在有一个字符串,每个字母出现的次数均为偶数。接下来我们把第一次出现的字母 a 和第二次出现的 a 连一条线,第三次出现的和四次出现的字母 a 连一条线,第五次出现的和六次出现的字母 a 连一条线...对其他 25 个字母也做同样的操作。现在我们想知道有多少对连线交叉。交叉的定义为一个连线的端点在另外一个连线的内部,另外一个端点在外部。下图是一个例子,共有三对连线交叉(我们连线的时候,...

weixin_30456039的博客 173

10.23~10.24NOIP模拟测试总结

一次逼真的模拟考试,总分100+212=312,预计省一的分数线是280左右。 先说一下概况:第一天爆炸,第二天比较理想。所以加起来的分数还看得过去,但是还是很不理想。 第一天炸了哪些:第一题找到正解的思路,但是因为种种原因比如错误地低估了算法的正确性以及高估了评测机的速度,TLE了两个点。第二题也是知道了怎么做(vector+二分),但是由于对STL的lower_bound以及迭代器

KGV093的博客 437

NOIP2013模拟10.23君と彼女の恋

题目大意 给定数n、m,求有多少个序列{Ai}满足(∑Ai)=n(\sum Ai)=n且Aimod m互不相同,方案数对905 229 641取mod(顺序不同,也算不同方案)首先对于序列{Ai}我们可以枚举里面的元素个数,然后按顺序处理放什么元素进去(从小到大),对于元素,方便起见,我们先只考虑0~m-1。(其余的我们可以在后面用挡板问题将多余的m放进去,由于允许顺序不同,后面乘个阶乘就可以了)

OIerEmeng 647
上一篇: bzoj1485 catalan数+特殊的求组合数方法
下一篇: noip模拟10.24
五彩蒟蒻DDD
博客等级 码龄10年 20粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值