20231018刷题记录

  • P1878 舞蹈课

    堆。

    对于“舞蹈技术差”这一变量,可以想到用优先队列维护实现 O ( log ⁡ n ) O(\log n) O(logn) 级别的复杂度。

    对于整个舞蹈队伍的删除操作,可以用双向链表维护,比较经典的应用是开车旅行。这个东西首先比 STL 方便,具体实现画图理解即可。

    注意对于一对异性,只要有一个已经出队就直接 pop

    #include <bits/stdc++.h>
    using namespace std;const int maxn=2e5+5;
    int ans[maxn][2];
    struct node1
    {int l,r,v;bool gen;
    }a[maxn];
    struct node2
    {int id1,id2,dif;bool friend operator < (node2 a,node2 b){int ll=a.dif,rr=b.dif;if(ll!=rr) return ll>rr;return a.id1>b.id1;}
    };
    priority_queue<node2> q;
    bool vis[maxn];int main()
    {int n;cin>>n;for(int i=1;i<=n;i++) {char c;cin>>c,a[i].l=i-1,a[i].r=i+1;if(c=='B') a[i].gen=0;else a[i].gen=1;}for(int i=1;i<=n;i++) cin>>a[i].v;for(int i=1;i<n;i++) if(a[i].gen^a[i+1].gen) q.push((node2){i,i+1,abs(a[i].v-a[i+1].v)});int k=0;while(!q.empty()){node2 t=q.top();if(vis[t.id1]||vis[t.id2]){q.pop();continue;}ans[++k][0]=t.id1,ans[k][1]=t.id2,q.pop(),vis[t.id1]=vis[t.id2]=1;a[a[t.id1].l].r=a[t.id2].r,a[a[t.id2].r].l=a[t.id1].l;if(a[t.id1].l>=1&&a[t.id2].r<=n&&a[a[t.id1].l].gen^a[a[t.id2].r].gen) q.push((node2){a[t.id1].l,a[t.id2].r,abs(a[a[t.id2].r].v-a[a[t.id1].l].v)});}cout<<k<<endl;for(int i=1;i<=k;i++) cout<<ans[i][0]<<' '<<ans[i][1]<<endl;return 0;
    }
    
  • P2853 Cow Picnic S

    搜索。

    以每个奶牛为起点 DFS,统计每个点的访问次数即可。

    #include <bits/stdc++.h>
    using namespace std;const int maxn=1005,maxm=1e4+5;
    int head[maxn],cnt,tot[maxn],a[maxn];
    struct edge{int to,nxt;}e[maxm];
    bool vis[maxn];void add(int x,int y){e[++cnt]=(edge){y,head[x]},head[x]=cnt;}void dfs(int x)
    {vis[x]=1,tot[x]++;for(int i=head[x];i;i=e[i].nxt) if(!vis[e[i].to]) dfs(e[i].to);
    }int main()
    {int K,N,M;cin>>K>>N>>M;for(int i=1;i<=K;i++) cin>>a[i];for(int i=1,u,v;i<=M;i++) cin>>u>>v,add(u,v);for(int i=1;i<=K;i++) memset(vis,0,sizeof vis),dfs(a[i]);int ans=0;for(int i=1;i<=N;i++) if(tot[i]>=K) ans++;cout<<ans;return 0;
    }
    
  • P4667 Switch the Lamp On

    最短路。

    与原来相同的边边权为 0 0 0,不同的边权为 1 1 1

    #include <bits/stdc++.h>
    using namespace std;
    #define int long longconst int maxn=1e6+5;
    int head[maxn],nxt[maxn],to[maxn],cnt,w[maxn],diss[maxn];
    char s[505][505];
    bool vis[maxn];void add(int x,int y,int z)
    {to[++cnt]=y;w[cnt]=z;nxt[cnt]=head[x];head[x]=cnt;
    }struct node
    {int id,dis;bool friend operator < (node a,node b){return a.dis>b.dis;}
    };
    priority_queue<node> q;void dij()
    {memset(diss,0x3f,sizeof(diss));diss[1]=0;q.push(node{1,0});while(!q.empty()){node qwq=q.top();q.pop();int x=qwq.id;if(vis[x]) continue;vis[x]=1;for(int i=head[x];i;i=nxt[i])if(diss[to[i]]>diss[x]+w[i])diss[to[i]]=diss[x]+w[i],q.push(node{to[i],diss[to[i]]});}
    }signed main()
    {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int N,M;cin>>N>>M;for(int i=1;i<=N;i++) for(int j=1;j<=M;j++) cin>>s[i][j];if((N+M)%2) cout<<"NO SOLUTION"<<endl;else{int qwq=N*(M+1)+M+1;for(int i=1;i<=qwq;i++)head[i]=0,nxt[i]=0,to[i]=0,w[i]=0,vis[i]=0,cnt=0;for(int i=1;i<=N;i++)for(int j=1;j<=M;j++){int l1=(M+1)*(i-1)+j,l2=l1+M+1,r1=l1+1,r2=r1+M+1;if(s[i][j]=='\\') add(l1,r2,0),add(r2,l1,0),add(l2,r1,1),add(r1,l2,1);else add(l1,r2,1),add(r2,l1,1),add(l2,r1,0),add(r1,l2,0);}	dij();cout<<diss[qwq]<<endl;}return 0;
    }
    
  • P1962 斐波那契数列

    矩阵加速。

    有递推式;
    { f n = f n − 1 × 1 + f n − 2 × 1 f n − 1 = f n − 1 × 1 + f n − 2 × 0 \begin{cases} f_{n}=f_{n-1}\times 1+f_{n-2}\times 1\\ f_{n-1}=f_{n-1}\times 1+f_{n-2}\times 0 \end{cases} {fn=fn1×1+fn2×1fn1=fn1×1+fn2×0
    于是有
    [ f n f n − 1 ] = [ 1 1 1 0 ] n − 2 × [ f 2 f 1 ] \begin{bmatrix}f_n&f_{n-1}\end{bmatrix}=\begin{bmatrix}1&1\\1&0\end{bmatrix}^{n-2}\times\begin{bmatrix}f_2&f_1\end{bmatrix} [fnfn1]=[1110]n2×[f2f1]
    结构体中重载矩阵乘法的 * 运算符即可。

    注意特判 f 1 = 1 , f 2 = 1 f_1=1,f_2=1 f1=1,f2=1

    #include <bits/stdc++.h>
    using namespace std;const int mod=1e9+7;struct mat
    {int a[3][3];mat(){memset(a,0,sizeof a);}mat operator * (const mat &b) const{mat res;for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)for(int k=1;k<=2;k++)res.a[i][j]=(res.a[i][j]+a[i][k]*b.a[k][j])%mod;return res;}
    }ans,ba;void init()
    {ba.a[1][1]=ba.a[1][2]=ba.a[2][1]=1;ans.a[1][1]=ans.a[1][2]=1;
    }void quickpow(int b)
    {while(b){if(b&1) ans=ans*ba;b>>=1,ba=ba*ba;}
    }int main()
    {int n;cin>>n;if(n<=2) cout<<1,exit(0);init();quickpow(n-2);cout<<(ans.a[1][1]%mod);return 0;
    }
    

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

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

相关文章

C语言【文件】

目录 概念 文件名 文件的打开和关闭 fopen fclose 输入输出函数 fputc fgetc fputs fgets fprintf fscanf fwrite fread 三种流 scanf和sprintf 结构体转化 ​编辑 文件的随机读写 fseek ftell rewind 文本文件和二进制文件 文件读取结束的判定 文件缓冲…

C++标准模板(STL)- 类型支持 (运行时类型识别,type_info )

运行时类型识别 定义于头文件 <typeinfo> 含有某个类型的信息&#xff0c;由实现生成。​​这是 typeid 运算符所返回的类。 std::type_info 定义于头文件 <typeinfo> class type_info; 类 type_info 保有一个类型的实现指定信息&#xff0c;包括类型的名称和…

【论文解读】Parameter-Efficient Transfer Learning for NLP

一. 介绍 1.1 为什么要引入Adapter 在存在许多下游任务的情况下&#xff0c;微调的参数效率很低:每个任务都需要一个全新的模型。作为替代方案&#xff0c;我们建议使用适配器模块进行传输。 1.2 论文目标 目标是建立一个在所有这些方面都表现良好的系统&#xff0c;但不需…

docker图形胡界面管理工具--Portainer可视化面板安装

1.安装运行Portainer docker run -d -p 8088:9000 \ > --restartalways -v /var/run/docker.sock:/var/run/docker.sock --privilegedtrue portainer/portainer--restartalways&#xff1a;Docker启动后容器自动启动 -p&#xff1a;端口映射 -v&#xff1a;路径映射2.通过…

写一个简单的解释器(2) 构建标记流

确定标记类型 分为几个大类&#xff1a; 用户符号&#xff08;类型/标识符/数字/字符串…)关键字 (流程控制和定义符)括号 &#xff08;这里暂时认为 [] 属于括号&#xff09;分号 上述四类标记基本囊括了 vc \texttt{vc} vc 中的所有最小单元的类型&#xff0c;但是因为构…

【C++】哈希应用——海量数据面试题

哈希应用——海量数据面试题 一、位图应用1、给定100亿个整数&#xff0c;设计算法找到只出现一次的整数&#xff1f;2、给两个文件&#xff0c;分别有100亿个整数&#xff0c;我们只有1G内存&#xff0c;如何找到两个文件交集&#xff1f;&#xff08;1&#xff09;用一个位图…

JAVA基础(JAVA SE)学习笔记(七)面向对象编程(进阶)

前言 1. 学习视频&#xff1a; 尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第二阶段&#xff1a;Java面向对象编程 6.面向对象编程&#xff08;基础&#xff09; 7.面向对象编程&…

Ubuntu下 u2net tensorrt模型部署

TensorRT系列之 Windows10下yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov8 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov7 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov6 tensorrt模型加速部署 TensorRT系列之 Linux下 yolov5 tensorrt模型加速…

nginx部署vue项目(访问路径加前缀)

nginx部署vue项目(访问路径加前缀) nginx部署vue项目&#xff0c;访问路径加前缀分为两部分&#xff1a; &#xff08;1&#xff09;修改vue项目&#xff1b; &#xff08;2&#xff09;修改nginx配置&#xff1b; vue项目修改 需注意&#xff0c;我这是vue-cli3配置&#x…

某验四代滑块验证码逆向分析

逆向目标 目标&#xff1a;某验四代滑块验证码&#xff0c;w 参数逆向主页&#xff1a;aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20v加密算法&#xff1a;RSA、AES 通讯流程 验证码流程分析 进入网页后&#xff0c;打开开发者人员工具进行抓包&#xff0c;点击滑动拼图验证&#xff0c…

Vue3语法-双向绑定

点击加入精英计划可以加入 点击名字可以删除 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><!-- vue.js --><script src"https://unpkg.com/vue3/dist/vue.glob…

微软正式发布开源应用平台 Radius平台

“ 10 月 18 日&#xff0c;微软 Azure 孵化团队正式发布开源应用平台 Radius&#xff0c;该平台将应用程序置于每个开发阶段的中心&#xff0c;重新定义应用程序的构建、管理与理解方式。” 简单的概括就是&#xff0c;它和Kubernetes不一样&#xff0c;Radius将应用程序放在每…

在Windows下Edge浏览器OA发起流程问题

在Edge浏览器中发起流程 如上图所示&#xff0c;不能正常打开Excel&#xff0c;自动将Excel表格转为了PDF 怎么处理&#xff1f;还得使用IE浏览器来访问&#xff0c;但打开IE后又自动跳转到Edge&#xff0c;根本就不给使用&#xff0c;在Edge下使用IE模式也解决不了这个问题。…

项目管理实战总结(二)-沟通路径

在一个大型的项目管理中&#xff0c;不同的沟通路径&#xff0c;会对整个事情的进展形成不同的影响。从项目管理的视角来看&#xff0c;该如何驱动项目有效进展&#xff0c;失之毫厘谬以千里。 沟通路径&#xff1a;调查问卷的推动事宜 在项目进行到了后期&#xff0c;甲方希…

python学习笔记7-图的建立常用技巧

题目链接 题目中给了邻接链表&#xff0c;转为邻接矩阵初始化邻接矩阵 graph [[] for _ in range(n)]dfs() 的写法&#xff0c; 用visi避免重复访问&#xff0c;得到每个点所在的联通分量中点的个数 class Solution:def countPairs(self, n: int, edges: List[List[int]]) -…

JVM的几个面试重点

JVM的内存区域划分 JVM类加载机制 前言 Java程序最开始是一个 .java 的文件&#xff0c;JVM把它编译成 .closs 文件&#xff08;字节码文件&#xff09;&#xff0c;运行 Java 程序&#xff0c; JVM 就会读取 .class 文件&#xff0c;把文件内容读取到内存中&#xff0c;构造出…

YOLOv5:修改backbone为SPD-Conv

YOLOv5&#xff1a;修改backbone为SPD-Conv 前言前提条件相关介绍SPD-ConvYOLOv5修改backbone为SPD-Conv修改common.py修改yolo.py修改yolov5.yaml配置 参考 前言 记录在YOLOv5修改backbone操作&#xff0c;方便自己查阅。由于本人水平有限&#xff0c;难免出现错漏&#xff0c…

HammerDB的安装和使用(超详细)

目录 ​编辑 一、HammerDB的介绍 二、HammerDB的安装 1、下载hammerdb安装包 2、权限配置以及安装 3、查看安装目录 三、安装前的配置 1、启动监听 2、启动数据库 3、创建表空间 1.修改临时表空间 2…

【源码解析】Spring源码解读-bean的加载

Spring的整体流程其实就是通过配置 xml、注解将自定义bean类信息进行配置&#xff0c;然后通过BeanDefinitionReader读取配置信息&#xff0c;由Dom转换成xml解析成Docment。在通过加载的配置信息进行初始化Bean对象&#xff0c;然后在对象的前后进行处理&#xff0c;也就是不同…

Elesticsearch使用总结

写在前面 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎&#xff0c;基于RESTful web接口。Elasticsearch是用Java开发的&#xff0c;并作为Apache许可条款下的开放源码发布&#xff0c;是当前流行的企业级搜索引擎。设计用于[云计…