DAY1小题
求逆序对的板子题
#include<cstdio>
#define ll long long
using namespace std; const int maxn=1e5+;
ll a[maxn],r[maxn],n;
ll ans=; void msort(ll s,ll t)
{
if(s==t)
return;
ll mid=s+t>>;
msort(s,mid),msort(mid+,t);
ll i=s,j=mid+,k=s;
while(i<=mid&&j<=t)
if(a[i]<=a[j])
r[k++]=a[i++];
else
r[k++]=a[j++],ans+=(ll)mid-i+;
while(i<=mid)
r[k]=a[i],k++,i++;
while(j<=t)
r[k]=a[j],k++,j++;
for(int i=s; i<=t; i++)
a[i]=r[i];
}
inline ll read()
{
char ch=getchar();
ll sum=,k=;
while(ch<''||ch>'')
{
if(ch=='-')
k=-;
ch=getchar();
}
while(ch>=''&&ch<='')
sum=sum*+(ch^),ch=getchar();
return sum*k;
}
int main()
{
scanf("%lld",&n);
for(int i=; i<=n; i++)
a[i]=read();
msort(,n);
printf("%lld\n",ans);
return ;
}
unsigned long long等数据类型的定义方法的巧用
(直接long long居然也可以水到90分.)
#include<cstdio>
using namespace std;
int main()
{
unsigned long long n;
scanf("%llu",&n);
printf("%llu",n*n);
return ;
}
单调队列
对于每一个数记录他是第几个放入的
放入时遇到比他小的元素就弹掉
这样保证了队首就是最大值
进行弹出操作时只要关注弹的次数是否等于队首元素id就可以了
(copy大佬的题解)
#include<cstdio>
#include<utility>
#include<deque>
#include<algorithm>
using namespace std;
int n,num,cnt;
deque<pair<int,int> >q;
void solu1(int x,int n)
{
while(q.size() != && q.back().first< x)
{
q.pop_back();
}
q.push_back(make_pair(x,n));
}
void solu2(int x)
{
while(q.front().second <= x && q.size() != )
q.pop_front();
}
int main()
{
scanf("%d",&n);
int opt;
for(int i = ; i <= n; i++)
{
scanf("%d",&opt);
if(opt == )
{
int x;
scanf("%d",&x);
solu1(x,++num);
}
if(opt == )
{
solu2(++cnt);
}
if(q.size() == )
printf("-1\n");
else
printf("%d\n",q.front().first);
}
return ;
}
(大概是我写两个cmp是不对的
(一个就够了qwq)
(于是爆0.
#include<cstdio>
#include<algorithm>
#include<deque>
using namespace std; struct shu
{
int x,y;
};
shu c[maxn+];
int n; bool cmp(shu a,shu b)
{
if(a.x==b.x) return a.y<b.y;
return a.x<b.x;
} int main()
{
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d%d",&c[i].x,&c[i].y);
}
sort(c+,c+n+,cmp);
for(int i=;i<=n;i++)
{
printf("%d %d\n",c[i].x,c[i].y);
}
return ;
}
双向队列的基本操作
#include<cstdio>
#include<algorithm>
#include<deque>
using namespace std;
int n,opt;
deque<int>q;
int main()
{
scanf("%d",&n);
for(int i = ; i <= n; i++)
{
scanf("%d",&opt);
if(opt == )
{
int x;
scanf("%d",&x);
if(q.size() == )
printf("-1\n");
else
printf("%d\n",q.back());
q.push_back(x);
}
else if(opt == )
{
if(q.size() == )
printf("-1\n");
else
{
printf("%d\n",q.back());
q.pop_back();
}
}
else if(opt == )
{
int x,y;
scanf("%d%d",&x,&y);
if(q.size()<=x)
printf("-1\n");
else
{
printf("%d\n",q[x]);
q[x]=y;
}
}
else if(opt == )
{
int x;
scanf("%d",&x);
if(q.size() == )
printf("-1\n");
else
printf("%d\n",q.front());
q.push_front(x);
}
else if(opt == )
{
if(q.size() == )
printf("-1\n");
else
{
printf("%d\n",q.front());
q.pop_front();
}
}
}
return ;
}
开两个栈,一个用来模拟真实的栈,另一个求最大值。
每当加入新元素时
如果该元素大于等于栈顶元素 就压进去
弹出元素时,如果真实栈的弹出元素和最大值栈的栈顶元素相等,就弹出。
(qxt好gou啊.
//实现一个栈,支持push和pop,每次执行完毕后要输出栈内元素的最大值
#include<cstdio>
#include<stack>
using namespace std;
stack<int> q,pq;
int n;
void solu1(int x)
{
q.push(x);
if(pq.size() == || pq.top() <= x)
pq.push(x);
}
void solu2()
{
if(q.size())
{
if(pq.size())
if(q.top() == pq.top())
{
q.pop();
pq.pop();
}
else
q.pop();
else
q.pop();
}
}
int main()
{
scanf("%d",&n);
int opt;
for(int i = ; i <= n; i++)
{
scanf("%d",&opt);
if(opt == )
{
int x;
scanf("%d",&x);
solu1(x);
}
if(opt == )
{
solu2();
} if(pq.size() == )
printf("-1\n");
else
printf("%d\n",pq.top());
}
return ;
}
DAY1小题的更多相关文章
- 常让人误解的一道js小题
一道小题引发的深思 今天无意中看到一个js笔试题,不由得想起初学js那会被各种题目狂虐的心酸,虽说现在也会被笔试题所虐,但毕竟比之前好了很多,下面就是我的个人理解,欢迎拍砖.指正: var x = 1 ...
- 一些js小题(一)
一些js小题,掌握这些对于一些常见的面试.笔试题应该很有帮助: var a=10; function aa(){ alert(a); } function bb(){ aa(); } bb();//1 ...
- 关于理解python类的小题
今天看了python部落翻译的一篇<一道python类的小题>文章,感觉挺有启发性,记录下来: print('A') class Person(object): print('B') de ...
- 20181014xlVBA获取小题零分名单
Sub GetZeroName() Dim Dic As Object Const SUBJECT = "科目名称" Dim Key As String Dim OneKey Di ...
- 关于SQL的几道小题详解
关于SQL的几道小题详解 当我们拿到题目的时候,并不是急于作答,那样会得不偿失的,而是分析思路,采用什么方法,达到什么目的,还要思考有没有简单的方法或者通用的方法等等,这样才会达到以一当十的效果,这样 ...
- CF上的3道小题(2)
CF上的3道小题(2) T1:CF630K Indivisibility 题意:给出一个数n,求1到n的数中不能被2到9中任意一个数整除的数. 分析:容斥一下,没了. 代码: #include < ...
- CF上的3道小题(1)
CF上的3道小题 终于调完了啊.... T1:CF702E Analysis of Pathes in Functional Graph 题意:你获得了一个n个点有向图,每个点只有一条出边.第i个点的 ...
- python 小题
python 小题:给定一个字符串,找出不含有重复字符的最长子串的长度.示例 1:输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc&quo ...
- 牛客寒假基础集训营 | Day1 J题—u's的影响力(水题)
Day1 J题-u's的影响力 有一天,kotori发现了一个和lovelive相似的游戏:bangdream.令她惊讶的是,这个游戏和lovelive居然是同一个公司出的! kotori经过一段时间 ...
随机推荐
- javasE--基础部分--线程
Day23 本单元目标 一.线程的相关概念 二.线程的创建和启动★ 三.线程的停止 四.线程的常用方法 五.线程的生命周期★ 六.线程的同步 七.线程的通信 八.线程的创建方式三 九.线程的创建方 ...
- java的jdk和jre区别
本文是本人随便总结的== 首先大概清楚个关系:jdk 包含 jre 包含 jvm 然后来看下,当我们配置完java运行环境的时候,是不是在java默认安装文件下发现jdk和jre两个包,然后jdk包里 ...
- Andriod正式打包、以及升级应用 重新打包 修改应用名称、应用图 标、应用启动画面
一, Android 正式打包.以及升级应用重新打包 1.android studio 把 Flutter 打包成正式包 2.修改应用版本以及升级打包 找到 AndroidManifest.xml ...
- ABB工业机器人(条件执行数字信号判断,画方or画圆)
一.前戏 条件:从安全点,到工具区域夹取工具(笔),到工作区域,判断数字信号 Di1 =1 ,Ture :画方,False:画圆,回到工具区域放下工具(笔),回到安全点 二. 准备工作 校准tcp工具 ...
- Wx-小程序中使用伪类选择器实现border-1px
.borders::before{ position: absolute; left:; top:; content: " "; width: 100%; height: 1px; ...
- Scrapy爬虫基本使用
一.Scrapy爬虫的第一个实例 演示HTML地址 演示HTML页面地址:http://python123.io/ws/demo.html 文件名称:demo.html 产生步骤 步骤1:建议一个Sc ...
- 507,介绍一下标准的css盒子模型?低版本ie的盒子模型有什么不同的?
有两种,IE盒子模型,另外是W3C盒子模型: 盒模型都包括:内容(content),填充(padding),边界(margin),边框(border): 区别:IE的content部分吧border和 ...
- logstash output到kafka记录与总结( No entry found for connection 2)
简述 本文记录logstash的output配置为kafka的过程.这里是简单的例子,输入为stdin,本文主要目的是为了记录在这次配置过程中遇到的问题和解决的过程及总结. 关于kafka集群的搭建可 ...
- 将项目打成war包并用tomcat部署的方法,步骤及注意点
部署的遇到第一个问题,就是tomcat和jdk的环境问题: 首先 理解为啥要关注这二者的环境呢?他们还是有关系的–tomcat 作为比较流行的java Web服务器也是用java来实现的一个比较大的软 ...
- (原创)SoapUI学习(2)- POST请求
1.新建Project,右键Projects->New REST Project,可以不填直接点击OK,之后通过rename重命名.(如果这里添加URL,则直接达到第三步的图) 2.右键新建的工 ...