蓝桥杯备战刷题four(自用)

1.砝码称重

#include <iostream>
#include <vector>
using namespace std;
const int N=110;
const int M=100010;
int w[N];
int n;
int f[N][M];
int m;
int ans;
//f[i][j]表示到第i个砝码进行放置时的称得的重量为j的方案数
int main()
{cin>>n;for(int i=1;i<=n;i++){cin>>w[i];m+=w[i];}f[0][0]=1;for(int i=1;i<=n;i++){for(int j=0;j<=m;j++){f[i][j]=f[i-1][j]+f[i-1][j+w[i]]+f[i-1][abs(j-w[i])];}}for(int j=1;j<=m;j++){if(f[n][j])//有方案{ans++;}}cout<<ans<<endl;return 0;
}

2.直线

#include <iostream>
#include <map>
using namespace std;
struct node
{double x,y;//使用double为了计算斜率和截距方便
}p[20*21+5];
map<pair<double,double>,int>mp;//判断是否已经有此直线了
int cnt;
int ans;
int main()
{//20*21个整点即20行x19列int row=21;//纵坐标0~20int col=20;//横坐标0~19for(int i=0;i<col;i++){for(int j=0;j<row;j++){p[cnt].x=i;p[cnt].y=j;cnt++; }}ans=row+col;//初始为所有横线+竖线for(int i=0;i<cnt;i++)//枚举所有两两点{for(int j=0;j<cnt;j++){if(p[i].x==p[j].x||p[i].y==p[j].y)continue;//同一横和竖都不要double k=(p[i].y-p[j].y)/(p[i].x-p[j].x);double b=(p[i].x*p[j].y-p[j].x*p[i].y)/(p[i].x-p[j].x);if(mp[{k,b}]==0){mp[{k,b}]=1;ans++;}}} cout<<ans<<endl;return 0;
}

3.异或数列

#include <iostream>
#include <vector>
using namespace std;
int main()
{int t;cin>>t;while(t--){int n;cin>>n;int res=0;vector<int>v(32);for(int i=0;i<n;i++){int k;cin>>k;res^=k;for(int j=0;j<32&&k;j++){if(k&1){v[j]++;}k>>=1;}}if(res==0){cout<<0<<endl;continue;}for(int j=31;j>=0;j--){if(v[j]%2==0)continue;else{if(v[j]==1){cout<<1<<endl;break;}else{if(n%2==0){cout<<-1<<endl;break;}else{cout<<1<<endl;break;}}}}}return 0;
}

4.左孩子右兄弟

#include <iostream>
#include <vector>
using namespace std;
const int N=1e5+10;
vector<int>e[N];
int n;
int dfs(int x)
{int res=0;//子树的最大高度for(int i=0;i<e[x].size();i++){int v=e[x][i];res=max(res,dfs(v));}return res+e[x].size();
}
int main()
{cin>>n;for(int i=2;i<=n;i++){int fa;cin>>fa;//fa->ie[fa].push_back(i);}cout<<dfs(1)<<endl;return 0;
}

5.时间显示

#include <iostream>
using namespace std;
#define ll long long
int main()
{ll n;cin>>n;n/=1000;ll h=n/3600;n%=3600;ll m=n/60;n%=60;ll s=n;h%=24;if(h<10)cout<<"0";cout<<h<<":";if(m<10)cout<<"0";cout<<m<<":";if(s<10)cout<<"0";cout<<s<<endl;return 0;
}

6.通电

#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
const int N=1000000+10;//1e6!!
struct edge
{int u,v;double d;bool operator < (const edge &e)const{return d<e.d;}
};
struct point
{int x,y,h;
};
int n;
edge e[2*N+10];
point p[N];
int fa[N];
int find(int x)
{if(x!=fa[x])fa[x]=find(fa[x]);return fa[x];
}
void Kruscal(int m)
{double sum=0;for(int i=0;i<n;i++){fa[i]=i;}for(int i=0;i<m;i++){int u=e[i].u;int v=e[i].v;double d=e[i].d;int pu=find(u);int pv=find(v);if(pu!=pv){fa[pu]=pv;sum+=d;}}printf("%.2lf\n",sum);
}
int main()
{cin>>n;for(int i=0;i<n;i++){int x,y,h;cin>>x>>y>>h;p[i]={x,y,h};}int idx=0;for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){e[idx].u=i;e[idx].v=j;e[idx].d=sqrt(1.0*(p[i].x-p[j].x)*(p[i].x-p[j].x)+1.0*(p[i].y-p[j].y)*(p[i].y-p[j].y))+(p[i].h-p[j].h)*(p[i].h-p[j].h);idx++;}}sort(e,e+idx);Kruscal(idx);return 0;
}

7.数位递增的数

#include <iostream>
using namespace std;
bool check(int x)
{int d=x%10;x/=10;while(x!=0){if(x%10>d)return false;d=x%10;x/=10;}return true;
}
int main()
{int n;cin>>n;int ans=0;for(int i=1;i<=n;i++){if(check(i))ans++;}cout<<ans<<endl;return 0;
}

8.三元组中心问题

#include <iostream>
#include <map>
using namespace std;
const int N=1e6+10;
int a[N];
int ans=0;
map<int,int>mp;
int main()
{//严格递增数列长度为3int n;cin>>n;for(int i=0;i<n;i++){cin>>a[i];}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){for(int k=j+1;k<n;k++){if(a[i]<a[j]&&a[j]<a[k]){if(!mp[j]){mp[j]=1;ans++;break;}}}}}cout<<ans<<endl;return 0;
}

9.音节判断

#include <iostream>
#include <map>
using namespace std;
map<char,int>mp;
int main()
{for(char i='a';i<='z';i++){if(i=='a'||i=='e'||i=='i'||i=='o'||i=='u'){mp[i]=1;}}string s;cin>>s;string pd;//fu yuan fu yuan 0辅1元for(int i=0;i<s.size();i++){if(mp[s[i]]){pd+="1";while(mp[s[i]]){i++;}i--;}else{pd+="0";while(!mp[s[i]]){i++;}i--;}}if(pd=="0101"){cout<<"yes";}else{cout<<"no";}return 0;
}

10.长草

#include <iostream>
#include <queue>
using namespace std;
#define pii pair<int,int>
#define x first
#define y second
const int N=1000+100;
char g[N][N];
int dx[]={-1,1,0,0};
int dy[]={0,0,1,-1};
int n,m,k;
int ans;
void bfs()
{queue<pii>q;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){if(g[i][j]=='g'){q.push({i,j});}}}while(!q.empty()){auto t=q.front();q.pop();for(int i=0;i<4;i++){int xx=dx[i]+t.x;int yy=dy[i]+t.y;if(xx<1||xx>n||yy<1||yy>m||g[xx][yy]=='g')continue;g[xx][yy]='g';}}
}
int main()
{cin>>n>>m;int stx=0;int sty=0;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>g[i][j];if(g[i][j]=='g'){stx=i;sty=j;}}}cin>>k;while(k--)bfs();for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cout<<g[i][j];}cout<<endl;}return 0;
}

11.积木

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
const int N=1000+5;
int n,m;
int a[N][N];
int H;
vector<int>seq;
long long sum;
int main()
{cin>>n>>m;for(int i=1;i<=n;i++){for(int j=1;j<=m;j++){cin>>a[i][j];if(a[i][j]>=1){seq.push_back(a[i][j]);}}}cin>>H;sort(seq.rbegin(),seq.rend());for(int h=1;h<=H;h++){if(seq.back()>=h){sum+=seq.size();}while(seq.back()<=h){if(seq.size()==1)break;seq.erase(seq.end()-1);}cout<<sum<<endl;}return 0;
}

12.植树(DFS难)

#include <iostream>
#include <cmath>
using namespace std;
const int N=10000+100;
struct tree
{int x,y,r,s;
};
int n;
tree v[N];
int vis[N];//有无加入答案
bool cross[N][N];
int ans;
double dis(int x,int y)
{return sqrt(x*x+y*y);
}
void dfs(int cnt,int area)
{if(cnt>=n){ans=max(ans,area);return;}for(int i=0;i<cnt;i++)//看看前面放进去的会不会和当前这棵树相交{if(vis[i]&&cross[i][cnt]){dfs(cnt+1,area);//有相交就不要return;}} //要和不要都要进行vis[cnt]=1;dfs(cnt+1,area+v[cnt].s);vis[cnt]=0;dfs(cnt+1,area);return;
}
int main()
{cin>>n;for(int i=0;i<n;i++){int x,y,r;cin>>x>>y>>r;v[i]={x,y,r,r*r};}for(int i=0;i<n;i++){for(int j=i+1;j<n;j++){double d=dis(v[i].x-v[j].x,v[i].y-v[j].y);if(d<1.0*(v[i].r+v[j].r))cross[i][j]=cross[j][i]=1;else cross[i][j]=cross[j][i]=0;}}dfs(0,0);cout<<ans<<endl;return 0;
}

13.子串分值

#include <iostream>
#include <map>
using namespace std;
#define ll long long
const int N=1e5+5;
ll last[N];
ll pre[N];
ll nex[N];
ll sum;
int main()
{string s;cin>>s;int l=s.size();for(int i=0;i<26;i++){last[i]=-1;//求pre}for(int i=0;i<l;i++){int k=s[i]-'a';pre[i]=last[k];//当前下标的字符的上一个相同字符位置赋值last[k]=i;//更新当前字符的下标}for(int i=0;i<26;i++){last[i]=l;//求next}for(int i=l-1;i>=0;i--){int k=s[i]-'a';nex[i]=last[k];//当前下标的字符的下一个相同字符位置赋值last[k]=i;}for(int i=0;i<l;i++){sum+=(i-pre[i])*(nex[i]-i);}cout<<sum<<endl;return 0;
}

14.平面切分

//第一条直接增加的平面是2,以后每增加一条线,平面数量就加一(平行情况)
//若有交点,n个交点就加上n个平面

#include <iostream>
#include <set>
using namespace std;
//第一条直接增加的平面是2,以后每增加一条线,平面数量就加一(平行情况)
//若有交点,n个交点就加上n个平面
const int N=1000+10;
#define x first
#define y second
long double s[N][2];//存斜率和截距
long long ans;
bool st[N];//判重边
pair<long double,long double>p;//点的横坐标和纵坐标
int n;
int main()
{cin>>n;for(int i=0;i<n;i++)//枚举每条边{cin>>s[i][0]>>s[i][1];//用set自动去重set<pair<long double,long double>>points;for(int j=0;j<i;j++)//i这条边与前面的j条边进行比较{if(st[j])continue;if(s[i][0]==s[j][0]){if(s[i][1]==s[j][1]){st[i]=1;break;}else continue;}else{//y=k1*x+b1 y=k2*x+b2//(b2-b1)=(k1-k2)x//交点的横坐标p.x=(s[j][1]-s[i][1])/(s[i][0]-s[j][0]);//交点的纵坐标p.y=s[i][0]*p.x+s[i][1];points.insert(p);}}if(!st[i])ans+=points.size()+1;//点的数量加上此条边的数量1}cout<<ans+1;//加上第一条边的多1return 0;
}

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

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

相关文章

DbSchema导出HTML/PDF版表结构

一、连接数据库 登录成功默认显示当前用户的所有资源&#xff08;表、视图、序列、方法、触发器等&#xff09;&#xff0c;如果不操作将导出此用户的全部信息。 至此连接数据库完成 二、表结构导出 本次不想给用户全部导出&#xff0c;只给导出几张&#xff0c;选择需要…

分享7款前端动画特效(附效果图及在线演示)

分享7款好玩的前端动画特效 其中有CSS动画、SVG动画、js小游戏等等 下方效果图可能不是特别的生动 那么你可以点击在线预览进行查看相应的动画特效 同时也是可以下载该资源的 canvas彩色画树特效 基于canvas实现的画树特效 同时还可选择树枝的初始数目进行彩色树生成 以下效果…

企业对接Walmart平台API流程 On-request Reports API(二)

对接On-request Reports API 1、对接指南1.1 报告生成时间1.2 报告保留期1.3 请求限制1.4 报告请求工作流如何申请报告第 1 步&#xff1a;申请取消报告第 2 步&#xff1a;获取报表可用性状态第 3 步&#xff1a;下载报告 URL 2、代码实现2.1、获取访问API的token2.2、构建公共…

【教育部白名单赛事】C语言编程题解析--软件编程邀请赛(决赛)

文章目录 1、保留12位小数的浮点数2、气温统计3.大写字母的判断4、【递归】母鸡的故事5、小白免再排队 1、保留12位小数的浮点数 输入一个双精度浮点数&#xff0c;保留12位小数&#xff0c;输出这个浮点数。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 【输入】 只…

【DPDK】基于dpdk实现用户态UDP网络协议栈

文章目录 一.背景及导言二.协议栈架构设计1. 数据包接收和发送引擎2. 协议解析3. 数据包处理逻辑 三.网络函数编写1.socket2.bind3.recvfrom4.sendto5.close 四.总结 一.背景及导言 在当今数字化的世界中&#xff0c;网络通信的高性能和低延迟对于许多应用至关重要。而用户态网…

【python基础学习10课_面向对象、封装、继承、多态】

一、类与对象 1、类的定义 在类的里面&#xff0c;称之为方法。 在类的外面&#xff0c;称之为函数。类&#xff1a;人类&#xff0c;一个族群&#xff0c;是一个群体类的语法规则&#xff1a;class 自定义的类名():属性 -- 变量方法 -- 函数类&#xff0c;首字母大写&#x…

SpringBoot集成图数据库neo4j实现简单的关联图谱

社交领域&#xff1a;Facebook, Twitter&#xff0c;Linkedin用它来管理社交关系&#xff0c;实现好友推荐 图数据库neo4j安装&#xff1a; 下载镜像&#xff1a;docker pull neo4j:3.5.0运行容器&#xff1a;docker run -d -p 7474:7474 -p 7687:7687 --name neo4j-3.5.0 ne…

Android开发真等于废人,历经30天

前言 回顾一下自己这段时间的经历&#xff0c;三月份的时候&#xff0c;疫情原因公司通知了裁员&#xff0c;我匆匆忙忙地出去面了几家&#xff0c;但最终都没有拿到offer&#xff0c;我感觉今年的寒冬有点冷。到五月份&#xff0c;公司开始第二波裁员&#xff0c;我决定主动拿…

超简单Windows-kafka安装配置

参考大佬文章&#xff1a; Kafka&#xff08;Windows&#xff09;安装配置启动&#xff08;常见错误扫雷&#xff09;教程_kafka在windows上的安装、运行-CSDN博客Kafka&#xff08;Windows&#xff09;安装配置启动&#xff08;常见错误扫雷&#xff09;教程_kafka在windows上…

基于ERNIR3.0文本分类的开发实践

参考&#xff1a;基于ERNIR3.0文本分类&#xff1a;(KUAKE-QIC)意图识别多分类(单标签) - 飞桨AI Studio星河社区 (baidu.com) https://zhuanlan.zhihu.com/p/574666812?utm_id0 遇到的问题&#xff1a;如下 采用paddleNLP下文本分类实例进行分类训练后发现 生成的模型分类不…

嵌入式学习-FreeRTOS-Day1

一、重点 1、VCC和GND VCC&#xff1a; 1、电路中为电源&#xff0c;供应电压 2、3.3v-5v 3、数字信号中用1表示GND&#xff1a; 1、表示地线 2、一般为0v 3、数字信号中用0表示2、电容和电阻 电容 存储电荷 存储能量&#xff1a; 电容器可以在其两个导体板&#xff08;极…

C++之智能指针

为什么会有智能指针 前面我们知道使用异常可能会导致部分资源没有被正常释放, 因为异常抛出之后会直接跳转到捕获异常的地方从而跳过了一些很重要的的代码, 比如说下面的情况&#xff1a; int div() {int a, b;cin >> a >> b;if (b 0)throw invalid_argument(&q…

第三天 Kubernetes进阶实践

第三天 Kubernetes进阶实践 本章介绍Kubernetes的进阶内容&#xff0c;包含Kubernetes集群调度、CNI插件、认证授权安全体系、分布式存储的对接、Helm的使用等&#xff0c;让学员可以更加深入的学习Kubernetes的核心内容。 ETCD数据的访问 kube-scheduler调度策略实践 预选与…

centos7安装maven离线安装

1、从官方网站下载maven文件包 官方下载网站&#xff1a;https://maven.apache.org/download.cgi 2、创建文件夹解压文件 将下载好的安装包&#xff0c;放到创建的目录下&#xff0c;并解压 a、创建/app/maven文件 mkdir /app/mavenb、解压文件 tar -zxvf apache-maven-…

重磅:2024广州国际酒店工程照明展览会

2024广州国际酒店工程照明展览会 Guangzhou international hotel engineering lighting exhibition 2024 时间&#xff1a;2024年12月19-21日 地点&#xff1a;广州.中国进出口商品交易会展馆 承办单位&#xff1a;广州佛兴英耀展览服务有限公司 上海昶文展览服务有限公司…

【Java面试/24春招】技术面试题的准备

Spring MVC的原理 Mybatis的多级缓存机制 线程池的大小和工作原理 上述问题&#xff0c;我们称为静态的问题&#xff0c;具有标准的答案&#xff0c;而且这个答案不会变化&#xff01; 如果没有Spring&#xff0c;会怎么样&#xff1f;IOC这个思想是解决什么问题&#xff1f…

【牛客】VL65 状态机与时钟分频

描述 题目描述&#xff1a; 使用状态机实现时钟分频&#xff0c;要求对时钟进行四分频&#xff0c;占空比为0.25 信号示意图&#xff1a; clk为时钟 rst为低电平复位 clk_out 信号输出 Ps 本题题解是按照1000的状态转移进行的&#xff0c;不按照此状态进行&#xff0c;编译器…

蓝桥杯练习系统(算法训练)ALGO-985 幸运的店家

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 问题描述 炫炫开了一家商店&#xff0c;卖的货只有一个&#xff0c;XXX&#xff0c;XXX卖N元钱。有趣的是&#xff0c;世界上只有面值…

剑指offer 二维数组中的查找 C++

目录 前言 一、题目 二、解题思路 1.直接查找 2.二分法 三、输出结果 前言 最近在牛客网刷题&#xff0c;刷到二维数组的查找&#xff0c;在这里记录一下做题过程 一、题目 描述 在一个二维数组中&#xff08;每个一维数组的长度相同&#xff09;&#xff0c;每一行都按照…

微信小程序开发:记一次提审失败的反馈重审

我在第一次提审小程序的时候很明确说了我这个是接入的阿里云的人像动漫化接口&#xff0c;但是还是给我不通过&#xff1a; 说我涉及AI合成&#xff0c;个人是做不了一点AI相关的东西&#xff0c;一点都不行&#xff1a; 我肯定不接受了&#xff0c;反馈说&#xff1a; 还把…