高一下二月上旬日记

2.1

闲话

  • 颓。

做题纪要

luogu P7840 「C.E.L.U-03」重构

  • 多倍经验: [ABC359F] Tree Degree Optimization

  • 按位拆平方贡献,优先队列辅助查询最小值。

  • 由相关理论可知一定存在一种构造方案。

    点击查看代码
    struct node
    {ll du,val;bool operator < (const node &another)  const{return val*(2*du+1)>another.val*(2*another.du+1);}
    }tmp;
    priority_queue<node>q;
    int main()
    {
    // #define Isaac
    #ifdef Isaacfreopen("in.in","r",stdin);freopen("out.out","w",stdout);
    #endifll n,x,ans=0,i;cin>>n;for(i=1;i<=n;i++){cin>>x;q.push((node){1,x});}for(i=1;i<=n-2;i++){tmp=q.top();q.pop();tmp.du++;q.push(tmp);}while(q.empty()==0){ans+=q.top().val*q.top().du*q.top().du;q.pop();}cout<<ans<<endl;return 0;
    }
    

[ABC266Ex] Snuke Panic (2D)

  • 转移的限制条件为 \(\begin{cases} y_{j} \le y_{i} \\ t_{j} \le t_{i} \\ |x_{i}-x_{j}|+y_{i}-y_{j} \le x_{i}-x_{j} \end{cases}\)

  • 将第三个条件的绝对值拆开后在满足限制条件一和三后一定满足条件二, \(CDQ\) 分治优化即可。

    点击查看代码
    const ll inf=0x3f3f3f3f3f3f3f3f;
    struct node
    {ll t,x,y,val,b,c,id;
    }q[100010];
    ll f[100010],d[100010];
    bool cmp1(node a,node b)
    {if(a.b!=b.b)  return a.b>b.b;if(a.c!=b.c)  return a.c>b.c;return a.y<b.y;
    }
    bool cmp2(node a,node b)
    {return a.c>b.c;
    }
    bool cmp3(node a,node b)
    {return a.id<b.id;
    }
    struct BIT
    {ll c[100010];ll lowbit(ll x){return (x&(-x));}void clear(){memset(c,-0x3f,sizeof(f));}void add(ll n,ll x,ll val){for(ll i=x;i<=n;i+=lowbit(i))  c[i]=max(c[i],val);}void del(ll n,ll x){for(ll i=x;i<=n;i+=lowbit(i))  c[i]=-inf;}ll getsum(ll x){ll ans=-inf;for(ll i=x;i>=1;i-=lowbit(i))  ans=max(ans,c[i]);return ans;}
    }T;
    void cdq(ll l,ll r)
    {if(l>=r)   return;ll mid=(l+r)/2,x=0,y=0;cdq(l,mid);sort(q+l,q+mid+1,cmp2);sort(q+mid+1,q+r+1,cmp2);for(x=l,y=mid+1;y<=r;y++){for(;q[x].c>=q[y].c&&x<=mid;x++)  T.add(d[0],q[x].y,f[q[x].id]);f[q[y].id]=max(f[q[y].id],T.getsum(q[y].y)+q[y].val);}x--;for(ll i=l;i<=x;i++)  T.del(d[0],q[i].y);sort(q+mid+1,q+r+1,cmp3);cdq(mid+1,r); 
    }
    int main()
    {
    // #define Isaac
    #ifdef Isaacfreopen("in.in","r",stdin);freopen("out.out","w",stdout);
    #endif ll n,m=0,ans=0,i;cin>>n;for(i=1;i<=n;i++)  {m++;cin>>q[m].t>>q[m].x>>q[m].y>>q[m].val;d[m]=q[m].y;q[m].b=-q[m].x+q[m].y-q[m].t;q[m].c=q[m].x+q[m].y-q[m].t;if(q[m].c>0)  m--;}sort(d+1,d+m+1);  d[0]=unique(d+1,d+m+1)-(d+1);sort(q+1,q+m+1,cmp1);  for(i=1;i<=m;i++)  {q[i].y=lower_bound(d+1,d+1+d[0],q[i].y)-d;q[i].id=i;f[i]=q[i].val;}T.clear();  cdq(1,m);for(i=1;i<=m;i++)  ans=max(ans,f[i]);cout<<ans<<endl;return 0;
    }
    

2.2

闲话

  • 颓。

做题纪要

CF914E Palindromes in a Tree

  • 考虑点分治。因字符集很小,状压维护方案数。

  • 此时是一个形如根链加的形式,树上差分即可。

  • 实现时可以最后再处理经过分治中心 \(rt\) 的答案,注意点对的去重。

    点击查看代码
    struct node
    {ll nxt,to;
    }e[400010];
    ll head[200010],ans[200010],cnt=0;
    char s[200010];
    void add(ll u,ll v)
    {cnt++;e[cnt].nxt=head[u];e[cnt].to=v;head[u]=cnt;
    }
    struct Divide_On_Tree
    {ll siz[200010],weight[200010],vis[200010],d[200010],cnt[(1<<20)+10],dis[200010],tmp[(1<<20)+10],center;queue<ll>q;void init(ll n){center=0;get_center(1,0,n);get_siz(center,0);divide(center);}void get_center(ll x,ll fa,ll n){siz[x]=1;weight[x]=0;for(ll i=head[x];i!=0;i=e[i].nxt){if(e[i].to!=fa&&vis[e[i].to]==0){get_center(e[i].to,x,n);siz[x]+=siz[e[i].to];weight[x]=max(weight[x],siz[e[i].to]);}}weight[x]=max(weight[x],n-siz[x]);if(weight[x]<=n/2)  center=x;}void get_siz(ll x,ll fa){siz[x]=1;for(ll i=head[x];i!=0;i=e[i].nxt){if(e[i].to!=fa&&vis[e[i].to]==0){get_siz(e[i].to,x);siz[x]+=siz[e[i].to];}}}void get_dis(ll x,ll fa){d[x]=0;  dis[x]=dis[fa]^(1<<(s[x]-'a'));cnt[dis[x]]++;  q.push(dis[x]);for(ll i=head[x];i!=0;i=e[i].nxt){if(e[i].to!=fa&&vis[e[i].to]==0)  get_dis(e[i].to,x);}}  ll work(ll x,ll rt){ll sum=0,c;for(ll i=0;i<=20;i++){if(i==20)  c=dis[x]^dis[rt];else c=dis[x]^dis[rt]^(1<<i);if(c==dis[rt]){ans[rt]++;d[x]++;}sum+=cnt[c]-tmp[c];d[x]+=cnt[c]-tmp[c];}return sum;}ll dfs1(ll x,ll fa,ll rt){ll sum=work(x,rt);for(ll i=head[x];i!=0;i=e[i].nxt){if(e[i].to!=fa&&vis[e[i].to]==0)  sum+=dfs1(e[i].to,x,rt);}return sum;}void dfs2(ll x,ll fa,ll rt){for(ll i=head[x];i!=0;i=e[i].nxt){if(e[i].to!=fa&&vis[e[i].to]==0){dfs2(e[i].to,x,rt);d[x]+=d[e[i].to];}}if(x!=rt)  ans[x]+=d[x];}void clear(ll x,ll fa,ll op){tmp[dis[x]]+=op;for(ll i=head[x];i!=0;i=e[i].nxt){if(e[i].to!=fa&&vis[e[i].to]==0)  clear(e[i].to,x,op);}}void divide(ll x){ll sum=0;vis[x]=1;  d[x]=0;  dis[x]=1<<(s[x]-'a');for(ll i=head[x];i!=0;i=e[i].nxt){if(vis[e[i].to]==0)  get_dis(e[i].to,x);}for(ll i=head[x];i!=0;i=e[i].nxt){if(vis[e[i].to]==0){clear(e[i].to,x,1);sum+=dfs1(e[i].to,x,x);clear(e[i].to,x,-1);}}ans[x]+=sum/2;  dfs2(x,0,x);while(q.empty()==0){cnt[q.front()]=0;  q.pop();}for(ll i=head[x];i!=0;i=e[i].nxt){if(vis[e[i].to]==0){center=0;get_center(e[i].to,x,siz[e[i].to]);get_siz(center,x);divide(center);       }}}
    }D;
    int main()
    {
    // #define Isaac
    #ifdef Isaacfreopen("in.in","r",stdin);freopen("out.out","w",stdout);
    #endifll n,u,v,i;cin>>n;for(i=1;i<=n-1;i++){cin>>u>>v;add(u,v);  add(v,u);}scanf("%s",s+1);D.init(n);for(i=1;i<=n;i++)  cout<<ans[i]+1<<" ";return 0;
    }
    

luogu P3642 [APIO2016] 烟火表演

luogu P3285 [SCOI2014] 方伯伯的OJ

luogu P5350 序列

luogu P5586 [P5350] 序列 (加强版)

BZOJ3217 ALOEXT

[ABC277Ex] Constrained Sums

CF1697F Too Many Constraints

luogu P6378 [PA2010] Riddle

luogu P9754 [CSP-S 2023] 结构体

luogu P3953 [NOIP2017 提高组] 逛公园

luogu P1463 [POI2001] [HAOI2007] 反素数

luogu P1763 埃及分数

luogu P6909 [ICPC2015 WF] Keyboarding

UVA1714 Keyboarding

LibreOJ 10249. 「一本通 1.3 例 5」weight

LibreOJ 10024. 「一本通 1.3 练习 3」质数方阵

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/877994.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek 全面指南,95% 的人都不知道的9个技巧(建议收藏)

大家好,我是汤师爷~ 最近,DeepSeek这款AI工具爆火国内外。 虽然许多人都开始尝试使用它,但有人吐槽说,没想象中那么牛。 其实问题不在工具,很多人的使用姿势就搞错了,用大炮打蚊子,白白浪费DeepSeek的强大功能。 接下来,我将为大家分享9个实用技巧,你会发现DeepSeek远…

ez_pz_hackover_2016(shellcode)

首先检查一下保护,发现没有开启NX保护,说明可以往栈上写shellcode 首先要确定距离ebp的偏移,还有shellcode的地址(将ret覆盖到shellcode的地址上)确定离ebp偏移的代码 from pwn import * io=process("./ez_pz_hackover_2016") context.log_level=debug gdb.atta…

Android Studio 2024 不需要三方插件,直接wifi 开发调试,真方便

在测试旧版本时,wifi插件折腾了几天,还是没折腾上,最后下载了最新Android Studio Ladybug Feature Drop | 2024.2.2版本,发现居然已经集成,且放到了最显眼的位置,wifi开发,一步到位了。手机中,进开发者模式,选中 无线调试 ,再点使用二维码配对设备然后扫码,即可,…

Maven高级 -2025/1/22

分模块开发 依赖管理 可选依赖 <dependency><groupId>com.itheima</groupId><artifactId>maven_03_pojo</artifactId><version>1.0-SNAPSHOT</version><!--可选依赖是隐藏当前工程所依赖的资源,隐藏后对应资源将不具有依赖传递-…

独立开发经验谈:如何借助 AI 辅助产品 UI 设计

我在业余时间开发了一款自己的独立产品:升讯威在线客服与营销系统。陆陆续续开发了几年,从一开始的偶有用户尝试,到如今线上环境和私有化部署均有了越来越多的稳定用户,在这个过程中,我也积累了不少如何开发运营一款独立产品的经验。我将在本文中介绍如何借助 AI 辅助产品…

Lazarus4Android 环境搭建

Lazarus4Android 开发环境搭建Lazarus4Android 开发环境搭建 一、下载相关文件最关键的就是这两个文件,其他的JDK、NDK、Java环境另说。 这里要注意,gradle版本必须小于7,不然无法使用。 二、IDE内部设置 安装完成laz4A之后可能会报错,无需理会,启动IDE即可。安装卸载软件…

14-断点调试单个用例

在pycharm的Terminal输入hytest,其实是输入了python -m hytest.run,意思就是执行了hytest包里面的run.py文件 然后再点击debug按钮的时候就可以进行调试了,相当于执行了cd H:\my\autotest后 python.exe -m hytest.run --test *0101

博图18安装过程记录

博图V18安装过程记录刚开通博客园,搬运一些之前的帖子过来。 博图18安装过程记录 下载 西门子中智赛官网给的链接,是正版软件。 安装 TIA Potral STEP7将ISO解压或装载。管理员身份运行。 选择典型安装,等待安装完成。 插曲1 无法更改安装路径 这是因为之前安装过博图15.1(或…

题解:P11617 递推

前言 第一次在 OI 中见到求数列极限的题,有点意思。 但是为什么会过这么多人啊。 思路分析 做一点尝试: \[\sum_{i=m} \sum_{j=0}^{m} r_ja_{i-j}=0 \]然后对于相同的 \(a_i\),合并同类项: \[\sum_{i=m}\sum_{j=0}^{m} r_ja_i + \sum_{i=0}^{m-1}\sum_{j=0}^{i} r_{m-j}a_i…

AI编程助手带来的洞察和启发——程序员职业的变革

前言 从chatgpt的横空出世到国内大模型的强势崛起, 从AI只会写诗作画到辅助编程, AI作为新质生产力的重要角色逐渐进入各行各业,为行业带来新的可能性。Cursor、通义灵码这类"AI程序员"的出现一方面给编码工作带来了便利,另一方面也对软件从业人员带来极大的冲击…

个人数据保全计划:部署joplin server笔记同步服务

前言 在这个数据爆炸的时代,个人数据的价值愈发凸显,成为我们生活与工作中无可替代的重要资产。上一篇文章里,我介绍了从印象笔记迁移至 Joplin 的过程,这是我寻求数据自主掌控的关键一步。在探索同步方案时,我尝试了 OneDrive,原以为它能提供稳定高效的同步服务,可实际…

【deepseek】在deepin系统上部署运行deepseek-r1

环境配置LM-Studio官网:https://lmstudio.ai/修改“镜像源”cd /opt/apps/ai.lmstudio/files/LM_Studio/resources/app/.webpack/main 使用vscode打开进行编辑,./resources/app/.webpack/main/index.js./resources/app/.webpack/main/llmworker.js./resources/app/.webpack/m…