1005 csp-s 60 凉凉

T1 嘟嘟噜

上来一看数据范围1e9就蒙蔽,然后不知所措的打了一个 $ O(n)$的无脑算法,由于本人真的脑小,导致O(n)的柿子推了好长时间,导致心态崩了,然后........ 今天能明白了log的算法,算是约瑟夫问题弄明白了,没有想到跳跃式的竟然可以log求。

#include<bits/stdc++.h>
using namespace std;
#define re register
inline int read()
{
    int x=0,f=1;char cc=getchar();
    while(cc>‘9‘||cc<‘0‘){if(cc==‘-‘)f=-1;cc=getchar();}
    while(cc>=‘0‘&&cc<=‘9‘){x=(x<<1)+(x<<3)+cc-‘0‘;cc=getchar();}
    return x*f;
}
const int maxn=5000005;
int n,k,m,S;
int ans[maxn];
queue<int>q;
set<int>pc,fc;
stack<int>s;
int main()
{
    n=read(),k=read(),m=read(),S=read();
    for(int i=1,u;i<=m;i++)
    {
        u=read();
        ans[u]=-1;
    }
    q.push(S);
    for(re int i=1;i<=n;++i)
        if(i!=S&&ans[i]!=-1)
        {
            if(i&1)pc.insert(i);
            else fc.insert(i);
        }
    while(q.size()&&(!pc.empty()||!fc.empty()))
    {
        int x=q.front();q.pop();
        if((x&1)==(k&1))
        {
            for(auto it=pc.lower_bound(max(x-k+1,k-x));it!=pc.end()&&*it<x+k;++it)
            {
                int zz=(k-(abs(x-*it)+1))>>1;
                if(zz>n-max(*it,x))break;
                q.push(*it);
                ans[*it]=ans[x]+1;
                s.push(*it);
            }
            while(s.size())pc.erase(s.top()),s.pop();
            continue;
        }
        for(auto it=fc.lower_bound(max(x-k+1,k-x));it!=fc.end()&&*it<x+k;++it)
        {
            int zz=(k-(abs(x-*it)+1))>>1;
            if(zz>n-max(*it,x))break;
            ans[*it]=ans[x]+1;
            q.push(*it);
            s.push(*it);
        }
        while(s.size())fc.erase(s.top()),s.pop();
    }
    for(re int i=1;i<=n;++i)
    {
        if(!ans[i]&&(i!=S))ans[i]=-1;
        printf("%d ",ans[i]);
    }
    return 0;
}

T2 天才绅士少女助手克里斯蒂娜

看题就发现是原题,然后想到当时自己连题解都没有颓,就崩了,然后想到当时就是wba大神造的数据,我就感到了一丝不妙,其实就是拆一下柿子就出来了!

然后我就怀着爆零的心情去看T3

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read()
{
    int f=1,x=0;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
    return x*f;
}
const int maxn=5000005;
const int mod=20170927;
int n,m;
struct BIT
{
    int tr[maxn];
    inline int lowbit(int x){return x&(-x);}
    inline int query(int x)
    {
        int res=0;
        while(x)
        {
            (res+=tr[x]+mod)%=mod;
            x-=lowbit(x);
        }
        return res;
    }
    inline void update(int x,int val)
    {
        while(x<=n)
        {
            (tr[x]+=val+mod)%=mod;
            x+=lowbit(x);
        }
        return ;
    }
}t1,t2,t3;
int a1[maxn],a2[maxn],a3[maxn];

struct node
{
    int x,y;
    inline void make(int _x,int _y){x=_x,y=_y;return ;}
}s[maxn];

signed main()
{
    //freopen("inputs2.in","r",stdin);
    n=read();m=read();
    for(int i=1,x,y;i<=n;i++)
    {
        x=read(),y=read();
        s[i].make(x,y);
    }
    for(int i=1;i<=n;i++)
    {
        a1[i]=(s[i].x*s[i].x%mod)%mod;
        a2[i]=(s[i].y*s[i].y%mod)%mod;
        a3[i]=(s[i].x*s[i].y%mod)%mod;
        t1.update(i,a1[i]);
        t2.update(i,a2[i]);
        t3.update(i,a3[i]);
    }
    int opt=0;
    while(m--)
    {
        opt=read();
        if(opt==1)
        {
            int p=read(),x=read(),y=read();
            s[p].x=x,s[p].y=y;
            int c1=a1[p],c2=a2[p],c3=a3[p];
            a1[p]=x*x%mod,a2[p]=y*y%mod;a3[p]=x*y%mod;
            t1.update(p,a1[p]-c1);
            t2.update(p,a2[p]-c2);
            t3.update(p,a3[p]-c3);
        }
        else
        {
            int l=read(),r=read();
            int ans=0;
            ans=((t1.query(r)-t1.query(l-1)+mod)%mod*(t2.query(r)-t2.query(l-1)+mod)%mod+mod)%mod;
            int tt=((t3.query(r)-t3.query(l-1)+mod)%mod+mod)%mod;
            ans=((ans-tt*tt%mod+mod)%mod+mod)%mod;
            printf("%lld\n",ans);
        }
    }
    return 0;
}

T3

就是一个LCIS,当时学的时候还被人消费来着(LSC  LCIS)然后在看出是dp之后由于剩的时间过少,还想调T2所以直接打的爆搜,按说应该可以20分,但是只有10分,

3
考虑 DP. 设状态 dp(i, j) 表示 a 序列考虑到 i, b 序列考虑到 j 并且必须选 b j 的最
大长度. 当 a i = b j 时, 显然有转移 dp(i, j) = max k<j,b k <b j {dp(i − 1, k)} + 1.
于是从小到大枚举 j, 维护 max k<j,b k <a i {dp(i − 1, k)}, 直接转移即可.
时间复杂度 O(nm).

由于前几场考试T1过于水,导致之前的T1都切了,而且一般20分钟之内就可以A,所以这次T1拖了1个小时,就心态炸了,还是要历练!@……@

#include<bits/stdc++.h>
using namespace std;
#define re register
#define LL long long
template<class T>
inline void read(T &x)
{
    T f=1;x=0;char ch=getchar();
    while(ch<‘0‘||ch>‘9‘){if(ch==‘-‘)f=-1;ch=getchar();}
    while(ch>=‘0‘&&ch<=‘9‘){x=x*10+ch-‘0‘;ch=getchar();}
    x=x*f;
}
int n,m;
const int maxn=5005;
LL a[maxn],b[maxn];
bool vis[maxn];
int ch[maxn],tot;
int dp[maxn][maxn];
int pre[maxn][maxn];
int sta[maxn],topp;
inline void ba(re int x,re int y)
{
    if(x==0||y==0)return;
    re int qq=pre[x][y];
    if(y!=qq)sta[++topp]=b[y];
    ba(x-1,qq);
}
signed main()
{
    //freopen("inputs3.in","r",stdin);
    read(n);
    for(re int i=1;i<=n;i++)
        read(a[i]);
    read(m);
    for(re int i=1;i<=m;i++)
        read(b[i]);
    for(re int i=1;i<=n;i++)
    {
        int res=0,id=0;
        if(b[0]<b[1])res=dp[i-1][0],id=0;
        for(re int j=1;j<=m;j++)
        {
            if(a[i]==b[j])
            {
                pre[i][j]=id;
                dp[i][j]=res+1;
            }
            else
            {
                pre[i][j]=j;
                dp[i][j]=dp[i-1][j];
            }
            if(b[j]<a[i])
            {
                if(res<=dp[i-1][j])
                {
                    res=dp[i-1][j],id=j;
                }
            }
        }
    }
    int ans=0,id=0;
    for(re int i=1;i<=m;i++)
    {
        if(dp[n][i]>=ans)ans=dp[n][i],id=i;
    }
    printf("%d\n",dp[n][id]);
    ba(n,id);
    while(topp)
    {
        printf("%d ",sta[topp]);
        topp--;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/hzoi-lsc/p/11624826.html

时间: 2024-11-07 04:15:37

1005 csp-s 60 凉凉的相关文章

thuwc 凉凉记

今天 thuwc (五道口职业技校冬季体验营)结营了. 结果:初三 dcx ,高一 yww ,高二 sk 无条件一本,zwl 省队一本,初三 myh 仍然省队一本,我凉凉了,xj 也挂了.华附的 whj 省队一本,首师大附中的 xjr 也挂了. 不用说,我肯定很悲伤. 但这毕竟是历史的唯一进程,既具有偶然性,也具有必然性. 我能做的,就是找出原因,做出对策. 我回顾了一下自己的整个 OI 历程.我还记得初一的时候,我在 quick sort 都不会的情况下,拿了 NOIP 一等奖.我还记得,初三

记一次凉凉的浦发面试

面试时间: 2018-8-1 面试岗位:信息开发岗 面试流程:综合面 --> 技术面 --> 机试 综合面: 面试官3人 1. 随机抽一个话题,发表自己的看法,我们组分别是抖音不良内容管理及大学生慢就业现象(每组6人,会有3人抽到相同的话题),发言顺序采取自愿式. 2.自我简介,从每组的1号开始,个人感觉1号比较吃亏,几乎没有构思时间.建议大家从自己的性格,学习,学生活动说起,不要过多说自己项目,这些面试官对你的项目并不十分care,技术面会有专人问的. 3.面试官会随机问特定的人一些问题,也

凉凉的笔记 two day

第二章笔记 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据.说白了,变量就是代表程序运行时存放数据的地方 数据的存放: 磁盘.内存卡.U盘.光盘.内存条.固态.机械硬盘等等 简单的信息(临时的信息)纸 人把信息存在大脑 变量怎么在内存中存储 已将数据存储打内存中怎么去找 分配后的内存会有内存地址(内存地址不好记忆) :通过变量名可以简单快速地找到它存储的数据 Java定义的常用数据类型有

凉凉的笔记 one.day

叙述一下大概课程笔记: 1:编写 java技术包括:  javaSE(标准版) javaEE(企业版)   ---javaME(移动版) 开发java程序步骤:1.编写 a:大括号成对出现 b:class后面的单词要与文件名一致.(!!!包括大小写) c:java严格区分大小写 2:编译 命令:java文件名java. 产生结果:产生.class为后缀名的文件日(此文件,看不懂,乱码) (源程序:以java结尾) 编译后的文件:以class结尾. 代码解析: public class Demo{

记一次凉凉的小米前端面试

推广一下个人网站:Bougie's Blog 毕业一年的跨专业萌新,在拉勾上投了武汉小米的简历,不出两天,简历被HR姐姐标为"不合适",心想自己这点履历和经验小米是看不上了.又过两天,大概晚上八九点钟,HR姐姐突然打电话说邀请面试.也是有点奇怪. 从家到小米有两个小时车程,做公交车二层晃得竟然有点想吐了.心想做程序员一年,没学到啥高深的东西身体却不知不觉间变得这么差了:同时对此次面试也没抱太大期望,因为自身实力和小米的招聘要求还是差了一个档次.进入小米正门,左手边是小米信息部,右手边是

THUWC2019 凉凉记

DAY1 被打爆了. DAY2 被打爆了. DAY2+ 8 个图像处理题. 计算一个序列的 ADLER32 校验码(20分) 计算一个序列的 CRC32 校验码(30分) 读取简单 PNG 图片(50分) 写入简单 PNG 图片(50分) sobel 算子 边缘检测(20分) halton 序列 随机采样(20分) 基于像素的纹理合成(30分) 基于块的纹理合成(80分) 感觉正常人都不太能写得完...我只写了前面五个点.神仙 zjt 写完了前面七个点. 开场翻了一下手册,感觉要从前往后做. 先

咪蒙“凉凉”,10万+背后带给职场人的思考

关于咪蒙微信公众号注销一事,顷刻间占据了热搜头条,超千万粉丝以及数亿的估值的企业,就这样无声的陨落了.意外的是,原以为出现粉丝们一片哀嚎局面确是另一番景象,舆论一边倒的是对"毒鸡汤"的批判,对此,你怎么看呢? 2019年,咪蒙旗下公众号发布文章<一个出身寒门的状元之死>刷爆朋友圈,因疑似编造故事.刻意煽动泪点将舆论推向高潮.咪蒙,不仅仅是一个笔名,更是一个团队一家企业,它更是一种自媒体的写作模式.1篇头条广告价值百万,不得不说流量时代下的商业变现如此成功.于是,为了获得更多

字节跳动Android面试凉凉

我以为是HR一面,结果是技术,没想到啊,没想到! 1.描述Activity的生命周期. 2.描述一个Activity启动另外一个Activity的生命周期 3.Activity标签可以配置什么 4.IntentFilter里面的标签可以干嘛 5.Service怎么启动 了解IntentService吗? 6.几大控件有 7.存储数据的方式有 8.Intent可以干嘛 9.Sharedpreference里面的apply和commit有什么区别 10.ContentProvider用过吗?为什么要

酷家乐前端面经,已凉

一面: 1.自我介绍 2.说说自己做的前端项目 3.为什么想去做前端. 4.WEB存储的方法. 答了cookie.userdata.localStorage.sessionStorage.Indexed Database API以及它们的区别 5.跨域是什么,有哪些方法. 讲了同源策略限制.CORS.JSONP.图像PING以及它们区别 6.原型链 讲了原理.如何实现继承.有哪些方法. 7.前端优化的方法 H5+CSS3方面: css动画代替js方法.使用图片裁剪减少图片请求次数.懒加载技术.