22.1.18

news/2024/10/18 2:36:07/

一.AcWing算法学习

1.区间和并

①pair<int,int>的排序优先排序左边,再排序右边;

②for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,但是a无法影响到b容器中的元素。

for(auto &a:b)中加了引用符号,可以对容器中的内容进行赋值,即可通过对a赋值来做到容器b的内容填充。

#include <bits/stdc++.h>using namespace std;
typedef pair<int,int> PII;
vector<PII> segs;
const int N=1e5+10;int n;
void merge(vector<PII>&segs)
{vector<PII>res;sort(segs.begin(),segs.end());int l=INT_MIN,r=INT_MIN;for(auto item:segs){if(r<item.first){if(l!=INT_MIN)res.push_back({l,r});l=item.first;r=item.second;}else r=max(r,item.second);}if(l!=INT_MIN)res.push_back({l,r});segs=res;	
}
int main()
{int n;cin>>n;while(n--){int l,r;scanf("%d%d",&l,&r);segs.push_back({l,r});}merge(segs);cout<<segs.size();return 0;
}

2.单链表(用数组来模拟)

结构体+指针的链表在面试中常考,但是在笔试中不常用;因为nwe Node()非常慢!

 

二.oj训练赛

1.直播获奖;

题目链接信息学奥赛一本通(C++版)在线评测系统

正常算法,每次都排序,超时,需要优化排序方法;

优化:观察样例说明发现分数是自然从大到小排列,并且都在0到600分之间,所以我们可以人为的从600到0遍历,事先记录好每个成绩出现的次数,当满足分数线计划时,输出分数线即可;

#include <bits/stdc++.h>using namespace std;
const int N=1e5+10;int n,w;int a[605];
int main()
{cin>>n>>w;for(int i=1;i<=n;i++){int x;scanf("%d",&x);a[x]++;int sum=0;for(int j=600;j>=0;j--){sum+=a[j];int t=i*w/100;int maxx=max(1,t);if(sum>=maxx){cout<<j<<' ';break;}}}return 0;
}

1.sort默认是升序排列,若需降序:sort(a,a+n,greater<int>()); 

2.公交换乘;

我写的就是超时了,在一个大盒子里找票;

优化:一张优惠券也就45分钟内有效,所以最多才能存45张,以此出发,进行优化

源代码:

#include <bits/stdc++.h>using namespace std;
const int N=1e5+10;int n,k=0,sum=0;int p[N],t[N];
int main()
{cin>>n;for(int i=0;i<n;i++){int way,pi,ti,flag=0;scanf("%d%d%d",&way,&pi,&ti);if(way==0){p[k]=pi;t[k]=ti;k++;sum+=pi;}else{for(int j=0;j<k;j++){if(p[j]>=pi&&ti-t[j]<=45){flag=1;p[j]=0;t[j]=0;break;}}if(flag==0)sum+=pi;}}cout<<sum;return 0;
}

优化:找票的循环中,更新j开始找的位置,从过期的下一个开始找;

#include <bits/stdc++.h>using namespace std;
const int N=1e5+10;int n,k=0,sum=0,m=0;int p[N],t[N];
int main()
{cin>>n;for(int i=0;i<n;i++){int way,pi,ti,flag=0;scanf("%d%d%d",&way,&pi,&ti);if(way==0){p[k]=pi;t[k]=ti;k++;sum+=pi;}else{for(int j=m;j<k;j++){if(p[j]>=pi&&ti-t[j]<=45){flag=1;p[j]=0;break;}else if(ti-t[j]>45)m=j+1;}if(flag==0)sum+=pi;}}cout<<sum;return 0;
}


http://www.ppmy.cn/news/150155.html

相关文章

CH1801

括号画家 Candela是一名漫画家&#xff0c;她有一个奇特的爱好&#xff0c;就是在纸上画括号。这一天&#xff0c;刚刚起床的Candela画了一排括号序列&#xff0c;其中包含小括号()、中括号[]和大括号{}&#xff0c;总长度为N。这排随意绘制的括号序列显得杂乱无章&#xff0c;…

T1008

分支结构&#xff08;switch语句 &#xff09;&#xff1a;四兄弟 要求&#xff1a; 1.输入运算法对a&#xff0c;b进行运算 方案 1.对于Q1: 为了避免过多的if else语句造成的代码冗余 使用switch语句 switch语句算法模版&#xff1a; 用处&#xff1a;充当算法的分支结…

SP800_186_OverView

文章目录 2. Overview of Elliptic Curves2.1 Non-binary Curves2.1.1 Curves in Short-Weierstrass Form2.1.2 Montgomery Curves2.1.3 Twisted Edwards Curves 2.2 Binary Curves2.2.1. Curves in Short-Weierstrass Form 3. Recommended Curves for U.S. Federal Government…

牛客网刷题学习SQL(七)

SQL27 查看不同年龄段的用户明细 题目分析&#xff1a; 想要将用户划分为20岁以下&#xff0c;20-24岁&#xff0c;25岁及以上三个年龄段&#xff0c;分别查看不同年龄段用户的明细情况&#xff0c;请取出相应数据。&#xff08;注&#xff1a;若年龄为空请返回其他。&#xff…

XFX9500GT TRUCK SIMULATION CUDA

各位&#xff0c;中秋刚过&#xff0c;给大家拜个晚年:)。 闲话少说。中秋前日&#xff0c;去电脑城买了一块9500GT&#xff0c;XFX的&#xff0c;听网上的朋友们说XFX做工不错&#xff0c;再加上我的主要目的不是玩游戏&#xff0c;所以就买了它。JS开始死活要500以上&#x…

英伟达linux官方驱动下载,下载:NVIDIA Linux官方正式驱动177.80版

过去几个月来NVIDIA连续发布了多款测试版驱动&#xff0c;177.67、177.68、170.70、177.76、177.78。今天NV发布了一款177.80官方正式版驱动对之前的测试版驱动做了个总结&#xff0c;正式支持GeForce GTX系列显卡&#xff0c;修正文本再现错误及其他20多项Bug。此外&#xff0…

Opencv2.3nbsp;图像特征检测总结

原文地址&#xff1a;Opencv2.3 图像特征检测总结 作者&#xff1a;zhliang 图像特征检测总结 图像特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息&#xff0c;决定每个图像的点是否属于一个图像特征。本文主要探讨如何提取图像中的“角点”这一…

没出双核以前无盘服务器都是单核,无盘实用经验附加锐起XP一圈半进系统

服务器配置&#xff1a; 处理器双核2.4G以上即可。其实带机量最主要靠的硬盘。 如果你现在用SATA做无盘的话&#xff0c;当你用SAS 15K硬盘&#xff0c;你就会发现客户机性能几倍飞涨&#xff0c;钱花的绝对值得如果你依然用SATA话当我没说。 桌面级电脑主板所配的网卡&#xf…