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经过一段时间 ...
随机推荐
- ASP.NET + MVC5 入门完整教程五 --- Razor (模型与布局)
https://blog.csdn.net/qq_21419015/article/details/80451895 1.准备示例项目 为了演示Razor,使用VS创建一个名称为“Razor”的新项目 ...
- Adobe 系列下载链接
(注意!:在下方链接前加上 "pan.baidu.com/s/" 才是正确网址,用"百度网盘"下载) Photoshop 专区(图像处理软件) Adobe Ph ...
- python call perl
import subprocess subprocess.call("csv_gen.pl -by overall", shell=True)
- MySQL学习(七) 索引选择(半原创)
概述 该篇文章主要阐述一个例子(例子来自参考资料,侵删),然后总结今天相关的知识点. 例子 (例子来自参考文章,非原创) 创建表并插入数据,并执行查询 CREATE TABLE `t` ( `id` ...
- 1 学习wcf 编写简单的WCF服务流程 并发布在IIS上
学习笔记 学习大佬的博客 https://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html 写一遍加深印象 图片看不清楚的 可 ...
- Go初始化结构体数组/切片
package main import "fmt" func main() { var s []student fmt.Printf("%T\n", s) // ...
- 哪款C语言编译器(IDE)适合初学者?
这里我们把“编译器”和“IDE(集成开发环境)”当做一个概念,不再加以区分. C语言的集成开发环境有很多种,尤其是 Windows 下,多如牛毛,初学者往往不知道该如何选择,本节我们就针对 Windo ...
- xv6 trapframe定义的位置
在x86.h的最下面,真是把我找吐了,MD
- 快速上手leetcode动态规划题
快速上手leetcode动态规划题 我现在是初学的状态,在此来记录我的刷题过程,便于以后复习巩固. 我leetcode从动态规划开始刷,语言用的java. 一.了解动态规划 我上网查了一下动态规划,了 ...
- 修改vsftpd的默认根目录/var/ftp/pub到其他目录
修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下几行: local_root=/var/www/html chroot_local_user=YES ano ...