A:对于每个B,会和其右边的每个W交换一次。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define N 200010
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
int n;
ll ans=;
char s[N];
int main()
{
scanf("%s",s+);n=strlen(s+);
int cnt=;
for (int i=n;i;i--)
if (s[i]=='W') cnt++;
else ans+=cnt;
cout<<ans;
return ;
}

  B:从大到小贪心,遇到某个数能和其他数组成2的次幂就把他俩删掉。正确性基于这点:按从大到小的顺序找到的数,若能匹配,其在剩余的数中所能匹配的数是唯一的,这样匹配之后无论如何不会更劣。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<map>
using namespace std;
#define ll long long
#define N 200010
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
int n,a[N],ans;
map<int,int> cnt;
int main()
{
n=read();
for (int i=;i<=n;i++) cnt[a[i]=read()]++;
sort(a+,a+n+);
for (int i=n;i>=;i--)
if (cnt[a[i]])
{
int t=a[i];cnt[a[i]]--;
while (t!=(t&-t)) t^=t&-t;
if (cnt[(t<<)-a[i]]) ans++,cnt[(t<<)-a[i]]--;
else cnt[a[i]]++;
}
cout<<ans;
return ;
}

  C:调了半天贪心一直过不掉,好长时间之后才发现假掉了,加个二分就过了,莫名其妙的花了50min。二分答案,维护一个栈存储字符串的非a位置,如果当前字符串比上个字符串长,显然后面全填上a就可以了;否则弹栈至非a位置不大于当前串长度,然后将末尾达到限制的位置弹出,如果弹空了说明不合法(当然如果有剩余的a是合法的),否则将未达限制的最后一位+1,后面全清成a即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#define ll long long
#define N 200010
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
int n,a[N],pos[N],num[N],top,ans;
bool check(int ans)
{
top=;
for (int i=;i<=n;i++)
if (a[i]<=a[i-])
{
int x=a[i];
while (top&&pos[top]>x) top--;
while (top&&pos[top]==x&&num[top]==ans) top--,x--;
if (x==) return ;
else if (pos[top]<x) {pos[++top]=x,num[top]=;if (ans==) return ;}
else num[top]++;
}
return ;
}
int main()
{
n=read();
for (int i=;i<=n;i++) a[i]=read();
int l=,r=n;
while (l<=r)
{
int mid=l+r>>;
if (check(mid)) ans=mid,r=mid-;
else l=mid+;
}
cout<<ans;
return ;
}

  D:显然第一个人每次都是必须走的。每进入某一列,第二个人都可以选择一直不动,直到第一个人的移动使其撞到障碍。如果可以到达(x,y),则对(x,1..y-1),要么可以到达,要么在x之前有障碍。那么让一颗棋子从起点出发,每次都尽量移动,set找一下该列最近障碍,对每一列的答案取个min即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<map>
#include<set>
using namespace std;
#define ll long long
#define N 200010
char getc(){char c=getchar();while ((c<'A'||c>'Z')&&(c<'a'||c>'z')&&(c<''||c>'')) c=getchar();return c;}
int gcd(int n,int m){return m==?n:gcd(m,n%m);}
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
int r,c,n,t,x,y,ans;
map<int,int> f[N];
set<int> g[N];
struct data{int x,y;
}a[N];
int main()
{
r=read(),c=read();n=read();ans=r+;
for (int i=;i<=n;i++) a[i].x=read(),a[i].y=read(),f[a[i].x][a[i].y]=,g[a[i].y].insert(a[i].x);
for (int i=;i<=c;i++) g[i].insert(r+);
int x=,y=;
for (;x<r;)
{
ans=min(ans,*g[y].lower_bound(x));
x++;if (!f[x][y+]&&y<c) y++;
}
ans=min(ans,*g[y].lower_bound(x));
cout<<ans-;
return ;
}

  死于罚时。result:rank 110 rating +389

AtCoder Grand Contest 029 翻车记的更多相关文章

  1. AtCoder Grand Contest 017 迟到记

    晚上去操场上浪. 回来以后看到好几个人开着 \(AtCoder\) 在打代码. ... ... 今天有 \(AtCoder\) 比赛 ? 管它呢, \(Kito\) 在切西瓜,先吃西瓜... 然后看 ...

  2. AtCoder Grand Contest 029 Solution

    A: Solved. 签. #include <bits/stdc++.h> using namespace std; #define ll long long #define N 200 ...

  3. AtCoder Grand Contest 012

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

  4. AtCoder Grand Contest 007

    AtCoder Grand Contest 007 A - Shik and Stone 翻译 见洛谷 题解 傻逼玩意 #include<cstdio> int n,m,tot;char ...

  5. AtCoder Grand Contest 019 A: Ice Tea Store

    tourist出的题诶!想想就很高明,老年选手可能做不太动.不过A题还是按照惯例放水的. AtCoder Grand Contest 019 A: Ice Tea Store 题意:买0.25L,0. ...

  6. AtCoder Grand Contest 011

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

  7. AtCoder Grand Contest 031 简要题解

    AtCoder Grand Contest 031 Atcoder A - Colorful Subsequence description 求\(s\)中本质不同子序列的个数模\(10^9+7\). ...

  8. AtCoder Grand Contest 010

    AtCoder Grand Contest 010 A - Addition 翻译 黑板上写了\(n\)个正整数,每次会擦去两个奇偶性相同的数,然后把他们的和写会到黑板上,问最终能否只剩下一个数. 题 ...

  9. AtCoder Grand Contest 009

    AtCoder Grand Contest 009 A - Multiple Array 翻译 见洛谷 题解 从后往前考虑. #include<iostream> #include< ...

随机推荐

  1. XAF-由于try catch导致的性能问题一例

    前几天在制作PMMS系统时,有天突然发现性能问题下降严重,发布到客户机后,每点击一个按钮要花5-10秒的时间,与本机的200-600毫秒差距很大. 经过多处优化后没有效果. 后来想起,最近增加的功能是 ...

  2. Scrapy中的POST请求发送和递归爬取

    POST请求发送 重写爬虫应用文件中继承Spider类的 类的里面的start_requests(self)这个方法 def start_requests(self): #请求的url post_ur ...

  3. mnist手写数字识别(SVM)

    import numpy as np from sklearn.neural_network import MLPClassifier from sklearn.linear_model import ...

  4. Python 之Memcache中间件

    一.引子 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载,它通过在内存中缓存数据和减少读取数据库的次数,从而提高动态数据库驱动网站的速度.Memcache ...

  5. 你也可以手绘二维码(二)纠错码字算法:数论基础及伽罗瓦域GF(2^8)

    摘要:本文讲解二维码纠错码字生成使用到的数学数论基础知识,伽罗瓦域(Galois Field)GF(2^8),这是手绘二维码填格子理论基础,不想深究可以直接跳过.同时数论基础也是 Hash 算法,RS ...

  6. Python 中的一些小技巧

    这里是本人收集的一些 Python 小技巧,目前主要是一些实用函数,适合有一定基础的童鞋观看(不会专门介绍使用到的标准库函数).. 一.函数式编程 函数式编程用来处理数据,感觉很方便.(要是再配上管道 ...

  7. mysql更新表数据时报错 You can't specify target table 'RES_CATALOG_CLASSIFY' for update in FROM clause

    You can't specify target table for update in FROM clause含义:不能在同一表中查询的数据作为同一表的更新数据. 将sql语句 UPDATE RES ...

  8. json转对象

    1,引入依赖 <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib& ...

  9. 小组冲刺第十一天站立会议(发布Alpha版+网站链接)

    注: “助成”招聘网站链接:http://58.87.74.131:8080/zhucheng 欢迎大家进行评测. 一.任务看板: 二.燃尽图: 三.团队成员合照: 四.任务总结: 今天我们发布网站B ...

  10. JavaScript实现弹出层(以layer.open为例)

    首先,引用layer,自行下载. 添加如下两行 <script src=" ../layer/jquery.min.js"></script> <sc ...