挖草,AtCoder实在是太吊了~

%%%,目前只A了两题;

A题:

就是利用栈模拟一下就好了;S进栈,T的话有S就出栈,然后len减一下就好了;

#include <bits/stdc++.h>
using namespace std; char s[200020];
stack<int>q; int main()
{
scanf("%s",s+1);
int len=strlen(s+1);
int ans=0;
for(int i=1;i<=len;i++)
{
if(s[i]=='S')
{
q.push(1);
}
else
{
if(!q.empty())
{
ans+=2;
q.pop();
}
}
}
printf("%d\n",len-ans);
return 0;
}

B题【单调栈】

题意:

简单粗暴:

就是求所有区间的最小值之和

思路:

对于a[i]找他的对于区间的贡献,利用单调栈可以降低复杂度求得前面多少个比他大num1,后面多少个比他大num2,然后贡献就是区间长度*a[i];

#include <bits/stdc++.h>
using namespace std;
typedef long long LL; const int N=2e5+10; struct asd{
LL pre;
LL num;
LL next;
LL k;
};
stack<asd>q; LL t[N];
int n; int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%lld",&t[i]);
LL ans=0;
asd tmp;
tmp.num=t[1];
tmp.pre=tmp.next=1;
tmp.k=1;
q.push(tmp);
LL x=0,y=0;
for(LL i=2;i<=n;i++)
{
asd tmp1;
tmp1.num=t[i];
tmp1.pre=tmp1.next=1;
tmp1.k=i;
while(!q.empty()&&tmp1.num<=q.top().num)//如果说这个元素是小于栈顶的,那么它里面的栈就要被更新,这个元素的pre也要被更新
{
tmp=q.top();
q.pop();
if(!q.empty())
q.top().next+=tmp.next;
tmp1.pre+=tmp.pre;
ans+=tmp.pre*tmp.next*tmp.num;
}
q.push(tmp1);
}
while(!q.empty())
{
tmp=q.top();
q.pop();
if(!q.empty())
q.top().next+=tmp.next;
ans+=tmp.num*tmp.next*tmp.pre;
}
printf("%lld\n",ans);
}

AtCoder Grand Contest 005【A栈模拟,B单调栈】的更多相关文章

  1. AtCoder Grand Contest 005

    AtCoder Grand Contest 005 A - STring 翻译 给定一个只包含\(ST\)的字符串,如果出现了连续的\(ST\),就把他删去,然后所有位置前移.问最后剩下的串长. 题解 ...

  2. AtCoder Grand Contest 005 C - Tree Restoring

    题目传送门:https://agc005.contest.atcoder.jp/tasks/agc005_c 题目大意: 给定一个长度为\(N\)的整数序列\(A_i\),问能否构造一个\(N\)个节 ...

  3. Atcoder Grand Contest 005 E - Sugigma: The Showdown(思维题)

    洛谷题面传送门 & Atcoder 题面传送门 记先手移动棋子的树为红树,后手移动棋子的树为蓝树. 首先考虑一个性质,就是如果与当前红色棋子所在的点相连的边中存在一条边,满足这条边的两个端点在 ...

  4. AtCoder Grand Contest 005题解

    传送门 \(A\) 咕咕 const int N=5e5+5; char s[N];int res,n,sum; int main(){ scanf("%s",s+1),res=n ...

  5. AtCoder Grand Contest 011

    AtCoder Grand Contest 011 upd:这篇咕了好久,前面几题是三周以前写的... AtCoder Grand Contest 011 A - Airport Bus 翻译 有\( ...

  6. AtCoder Grand Contest 006

    AtCoder Grand Contest 006 吐槽 这套题要改个名字,叫神仙结论题大赛 A - Prefix and Suffix 翻译 给定两个串,求满足前缀是\(S\),后缀是\(T\),并 ...

  7. AtCoder Grand Contest 002

    AtCoder Grand Contest 002 A - Range Product 翻译 告诉你\(a,b\),求\(\prod_{i=a}^b i\)是正数还是负数还是零. 题解 什么鬼玩意. ...

  8. AtCoder Grand Contest 014

    AtCoder Grand Contest 014 A - Cookie Exchanges 有三个人,分别有\(A,B,C\)块饼干,每次每个人都会把自己的饼干分成相等的两份然后给其他两个人.当其中 ...

  9. AtCoder Grand Contest 012

    AtCoder Grand Contest 012 A - AtCoder Group Contest 翻译 有\(3n\)个人,每一个人有一个强大值(看我的假翻译),每三个人可以分成一组,一组的强大 ...

随机推荐

  1. ipa验证错误问题总结

    The following issues were found during validation.这个error的产生原因是因为代码中写的标示符或者方法名,与系统的命名空间冲突. 具体是哪个标示符或 ...

  2. 用EasyDarwin进行IPTV rtsp mpeg-ts smil流的转发和分发直播服务

    对RTSP/RTP的转发和分发一直都是EasyDarwin的基础功能,尤其是在安防行业中,EasyDarwin非常贴合安防监控的需求,但一直未尝试用EasyDarwin进行IPTV的RTSP流进行转发 ...

  3. tornado之运行第一个tornado程序

    Tornado是使用Python编写的一个强大的.可扩展的Web服务器.它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中. 首先是安装torn ...

  4. TMS320C6478+MCP2515

    调一个驱动,将看过的资料记录下来. 这个驱动写得比较直观:http://www.51hei.com/bbs/dpj-114085-1.html

  5. javascript Date对象的介绍及linux时间戳如何在javascript中转化成标准时间格式

    1.Date对象介绍 Date对象具有多种构造函数.new Date()new Date(milliseconds)new Date(datestring)new Date(year, month)n ...

  6. html5--5-3 给直线添加样式

    html5--5-3 给直线添加样式 学习要点 strokeStyle属性:设置颜色.渐变或模式(本节课只涉及到颜色) lineWidth属性:--设置线宽 Canvas的路径方法 moveTo() ...

  7. mongodb给我们提供了fsync+lock机制把数据暴力的刷到硬盘上

    能不能把数据暴力的刷到硬盘上,当然是可以的,mongodb给我们提供了fsync+lock机制就能满足我们提的需求. fsync+lock首先会把缓冲区数据暴力刷入硬盘,然后给数据库一个写入锁,其他实 ...

  8. C# 获取utc时间,以及utc datetime 互相转化

    C# 获取utc时间,以及utc datetime 互相转化   大部分源于http://blog.sina.com.cn/s/blog_4c6e822d0102dsdz.html 刚开始学习一点C# ...

  9. 上传图片 ajax input type="file" 兼容 ie chroem 火狐

    上传图片,转载请注明出处!!! 兼容 ie chroem 火狐 html: <div id="uploadForm"> <input id="file& ...

  10. [转载]Dalvik指令集

    这篇文章是转载的,为了便于查找一些指令,贴在这里. 转自:http://blog.csdn.net/canfengxiliu/article/details/20144119 ------------ ...