Codeforces 1138 - A/B/C/D/E - (Undone)
链接:https://codeforces.com/contest/1137
A - Skyscrapers
题解:对于每一段 $1$ 和每一段 $2$,统计他们的长度。因此对于相邻的两段长度求较小值,就有可能成为答案,维护所有的可能是答案的最大值即可。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+;
int n,t[maxn];
int l1,l2;
int main()
{
cin>>n;
for(int i=;i<=n;i++) scanf("%d",&t[i]); l1=l2=;
vector<int> v;
for(int i=;i<=n;i++)
{
if(t[i]==) l1++, l2=;
if(t[i]==) l2++, l1=; if(i==n || t[i]!=t[i+])
{
if(l1>) v.push_back(l1);
if(l2>) v.push_back(l2);
}
} int ans=;
for(int i=;i<v.size()-;i++)
{
if(min(v[i],v[i+])>ans) ans=min(v[i],v[i+]);
}
cout<<*ans<<endl;
}
B - Circus - [暴力]
题解:
统计四种人的数目,$A=cnt(0,0), B=cnt(1,0), C=cnt(0,1), D=cnt(1,1)$,第一个代表是否会演小丑,第二个代表是否会演杂技。
设第一组中的三种人的数目 $cnt(1,0) = x, cnt(0,1) = C - y, cnt(1,1) = z$,因此会有等式 $x + z = y + (D-z)$,因此只需要枚举 $x,z$ 就能计算出 $y$。
然后只需要判断一下 $y \ge 0, C-y \ge 0$,以及 $n - [x+(C-y)+z] - [(B-x)+y+(D-z)] = A$ 就行了。
AC代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=5e3+;
int n;
char c[maxn],a[maxn];
int A,B,C,D;
vector<int> t[][];
int x,y,z;
bool check()
{
for(x=;x<=B;x++)
{
for(z=;z<=D;z++)
{
y=x+z-D+z;
if(y< || C-y<) continue;
if(x+(C-y)+z>n/ || (B-x)+y+(D-z)>n/) continue;
if(n/-(x+(C-y)+z) + n/-((B-x)+y+(D-z)) == A)
{
return ;
}
}
}
return ;
}
int main()
{
cin>>n;
scanf("%s",c+);
scanf("%s",a+); A=B=C=D=;
t[][].clear(), t[][].clear(), t[][].clear(), t[][].clear();
for(int i=;i<=n;i++)
{
if(c[i]=='' && a[i]=='') A++, t[][].push_back(i);
if(c[i]=='' && a[i]=='') B++, t[][].push_back(i);
if(c[i]=='' && a[i]=='') C++, t[][].push_back(i);
if(c[i]=='' && a[i]=='') D++, t[][].push_back(i);
} if(check()==) cout<<"-1\n";
else
{
// cout<<(n/2-(x+(C-y)+z))<<endl;
// cout<<x<<endl;
// cout<<C-y<<endl;
// cout<<z<<endl; for(int i=;i<n/-(x+(C-y)+z);i++) printf("%d ",t[][][i]);
for(int i=;i<x;i++) printf("%d ",t[][][i]);
for(int i=;i<C-y;i++) printf("%d ",t[][][i]);
for(int i=;i<z;i++) printf("%d ",t[][][i]);
}
}
C - Skyscrapers - [离散化]
题意:
有个 $n$ 条横向街道,$m$ 条纵向街道,它们产生 $nm$ 个交点,每个交点上有一栋大楼高度 $h[i][j]$。
然后你对每个交点,你要把 $[1,x]$ 的整数重新赋值给这个十字上的所有大楼。使得,一条道路上任意两栋大楼之间的高度关系都与原来一致。
题解:
离散化裸题。
AC代码:
#include<bits/stdc++.h>
using namespace std;
int n,m;
int h[][];
vector<int> r[],c[];
int main()
{
ios::sync_with_stdio();
cin.tie(), cout.tie(); cin>>n>>m;
for(int i=;i<=n;i++)
for(int j=;j<=m;j++)
cin>>h[i][j]; for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++) r[i].push_back(h[i][j]);
sort(r[i].begin(),r[i].end());
r[i].erase(unique(r[i].begin(),r[i].end()),r[i].end());
}
for(int j=;j<=m;j++)
{
for(int i=;i<=n;i++) c[j].push_back(h[i][j]);
sort(c[j].begin(),c[j].end());
c[j].erase(unique(c[j].begin(),c[j].end()),c[j].end());
} for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
int tp1=lower_bound(r[i].begin(),r[i].end(),h[i][j])-r[i].begin();
int tp2=lower_bound(c[j].begin(),c[j].end(),h[i][j])-c[j].begin();
int tp3=r[i].end()-lower_bound(r[i].begin(),r[i].end(),h[i][j]);
int tp4=c[j].end()-lower_bound(c[j].begin(),c[j].end(),h[i][j]);
printf("%d ",max(tp1,tp2)+max(tp3,tp4));
}
printf("\n");
}
}
D - Cooperative Game - [交互题+思维题]
Codeforces 1138 - A/B/C/D/E - (Undone)的更多相关文章
- Codeforces 785 - A/B/C/D/E - (Undone)
链接:https://codeforces.com/contest/785 A - Anton and Polyhedrons #include<bits/stdc++.h> using ...
- Codeforces 677 - A/B/C/D/E - (Undone)
链接: A - Vanya and Fence - [水] AC代码: #include<bits/stdc++.h> using namespace std; ; int n,h; in ...
- Codeforces 1062 - A/B/C/D/E - (Undone)
链接:http://codeforces.com/contest/1062 A - Prank - [二分] 题意: 给出长度为 $n(1 \le n \le 100)$ 的数组 $a[1 \sim ...
- Codeforces 1032 - A/B/C/D/E - (Undone)
链接:http://codeforces.com/contest/1032/ 是真的真的真的忍不住想吐槽这题意是真的真的真的读不懂…… A - Kitchen Utensils - [简单数学题] 题 ...
- Codeforces 1154 - A/B/C/D/E/F/G - (Undone)
链接:https://codeforces.com/contest/1154 A - Restoring Three Numbers - [水] #include<bits/stdc++.h&g ...
- Codeforces 1114 - A/B/C/D/E/F - (Undone)
链接:http://codeforces.com/contest/1114 A - Got Any Grapes? 题意:甲乙丙三个人吃葡萄,总共有三种葡萄:绿葡萄.紫葡萄和黑葡萄,甲乙丙三个人至少要 ...
- Codeforces 1043 - A/B/C/D/E/F - (Undone)
链接:http://codeforces.com/contest/1043 A - Elections - [水水水水题] 题意: 我和另一个人竞争选举,共有 $n$ 个人投票,每个人手上有 $k$ ...
- Codeforces 659 - A/B/C/D/E/F/G - (Undone)
链接:https://codeforces.com/contest/659 A - Round House - [取模] AC代码: #include<bits/stdc++.h> usi ...
- Codeforces 1132 - A/B/C/D/E/F - (Undone)
链接:http://codeforces.com/contest/1132 A - Regular Bracket Sequence - [水] 题解:首先 "()" 这个的数量多 ...
随机推荐
- 硬盘SMART检测参数详解[转]
一.SMART概述 要说Linux用户最不愿意看到的事情,莫过于在毫无警告的情况下发现硬盘崩溃了.诸如RAID的备份和存储技术可以在任何时候帮用户恢复数据,但为预防硬件崩溃造成数据丢失所 ...
- oracle无效索引重建
问题描述: 执行失败!错误信息[Exception message:无效的列索引 解决思路: 分析是表索引,大部分都是表索引失效导致的,只需要花重建表索引即可! 00.查看此表归属账户select * ...
- 优麒麟 16.04 LTS(长期支持)版本
Ubuntu Kylin (中文又被称为优麒麟)是基于Ubuntu的一款官方衍生版. 它是一款专门为中国市场打造的免费操作系统.它包括Ubuntu用户期待的各种功能,并配有必备的中文软件及程序. ht ...
- webstorm快捷键 webstorm keymap内置快捷键英文翻译、中英对照说明
20160114参考网络上的快捷键,整理自己常用的: 查找/代替shift+shift 快速搜索所有文件,简便ctrl+shift+N 通过文件名快速查找工程内的文件(必记)ctrl+shift+al ...
- 【Apache】Apache的安装和配置
Apache是世界非常流行的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一. Apache在Win7上的安装 下载apa ...
- ftp软件中保持连接命令CWD、PWD、LIST、NOOP四个操作命令解析
转自:http://www.aspjzy.com/A/148.html 各位站长都知道,我们在维护网站的时候,经常需要一直保持ftp连接状态,这个时候在很多ftp客户端软件中都有一个保持全局连接的选项 ...
- SpringBoot集成RabbitMQ消息队列搭建与ACK消息确认入门
1.RabbitMQ介绍 RabbitMQ是实现AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.Rabbi ...
- hdoj:2051
#include <iostream> #include <string> #include <vector> #include <algorithm> ...
- mac使用minikube
brew install kubectl 需要加代理! minikube start --vm-driver=xhyve --docker-env HTTP_PROXY=http://your-htt ...
- 最简单的设计模式——单例模式的演进和推荐写法(Java 版)
前言 如下是之前总结的 C++ 版的:软件开发常用设计模式—单例模式总结(c++版),对比发现 Java 实现的单例模式和 C++ 的在线程安全上还是有些区别的. 概念不多说,没意思,我自己总结就是: ...