AtCoder Regular Contest 81
C.Make a Rectangle
给出一堆木棍的长度
从中选4根,询问在能围成矩形的情况下,矩形的最大面积
开个map统计一下就行
分正方形和矩形分别统计即可
复杂度$O(n \log n)$
#include <map>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; extern inline char gc() {
static char RR[], *S = RR + , *T = RR + ;
if(S == T) fread(RR, , , stdin), S = RR;
return *S ++;
}
inline int read() {
int p = , w = ; char c = gc();
while(c > '' || c < '') { if(c == '-') w = -; c = gc(); }
while(c >= '' && c <= '') p = p * + c - '', c = gc();
return p * w;
} #define ri register int
#define ll long long ll ans; int n, mx;
map <int, int> num; int main() {
n = read();
for(ri i = ; i <= n; i ++) num[read()] ++;
for(map<int, int> :: iterator it = num.begin(); it != num.end(); it ++) {
int p1 = it -> first, p2 = it -> second;
if(p2 >= ) ans = max(ans, 1ll * p1 * p1);
if(p2 >= ) ans = max(ans, 1ll * p1 * mx), mx = p1;
}
printf("%lld\n", ans);
return ;
}
D.Coloring Dominoes
给出一个$2 * m$的网格,被$1 *2$的骨牌满覆盖
有3种颜色,给骨牌染色,要求相领的骨牌颜色不相同,询问方案数
分4种情况讨论即可
自己是($1 * 2$或者$2 *2$),前置状态是($1 * 2$或者$2 * 2$)
复杂度$O(n)$,$n = 52$...
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define ri register int
#define sid 105
#define mod 1000000007 int n;
char S[][sid]; int main() {
cin >> n >> S[] + >> S[] + ;
ri i = , ans;
if(S[][i] == S[][i]) i = , ans = ;
else i = , ans = ;
for(i = i + ; i <= n; i ++) {
int p1 = S[][i] == S[][i];
int p2 = S[][i - ] == S[][i - ];
if(!p1) i ++;
if(p1 && p2) ans = (1ll * ans * ) % mod;
if(!p1 && !p2) ans = (1ll * ans * ) % mod;
if(!p1 && p2) ans = (1ll * ans * ) % mod;
}
printf("%d\n", ans);
return ;
}
E.Don't Be a Subsequence
询问最短的,字典序最小的,不是串$S$的子序列的字符串
考虑序列自动机
那么,所有不能被$S$所识别的序列一定是在识别了一段前置之后多了一个字母
考虑虚拟一个节点$n + 1$,能转移到它说明不是串$S$的子序列
之后就是一个拓扑图$dp$和字典序的事了
复杂度$O(26 * n)$
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; #define ri register int
#define sid 200050 char s[sid];
int nxt[sid][], f[sid]; int main() { scanf("%s", s + );
int n = strlen(s + ); for(ri i = ; i < ; i ++) nxt[n][i] = n + ;
for(ri i = n - ; i >= ; i --) {
for(ri j = ; j < ; j ++) nxt[i][j] = nxt[i + ][j];
nxt[i][s[i + ] - 'a'] = i + ;
} for(ri i = n; i >= ; i --) {
f[i] = 1e9;
for(ri j = ; j < ; j ++)
f[i] = min(f[i], + f[nxt[i][j]]);
} int o = ;
while(o != n + ) {
for(ri j = ; j < ; j ++)
if(f[o] == f[nxt[o][j]] + ) {
o = nxt[o][j];
printf("%c", j + 'a'); break;
}
}
return ;
}
F. Flip and Rectangles
可以任意地翻转一些行或者一些列
询问最大子矩阵
鬼畜的性质:一个矩阵中,如果所有的$2 *2$子矩形都有偶数个黑点,那么它就能被翻转出来
证明网上一大堆
然后令$v[i][j]$表示以$(i, j)$为左上角存不存在$2 *2$偶数黑点矩阵
问题转化为求最大子矩阵
注意特判一行,一列
注意计算答案时,求出来的最大子矩阵的长和宽是原题中最大子矩阵长和宽 - 1的结果
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std; #define ri register int
#define sid 2005 char s[sid];
int n, m, ans;
bool v[sid][sid], c[sid][sid];
short h[sid][sid], l[sid][sid], r[sid][sid];
short L[sid][sid], R[sid][sid]; int main() { scanf("%d%d", &n, &m);
for(ri i = ; i <= n; i ++) {
scanf("%s", s + );
for(ri j = ; j <= m; j ++)
c[i][j] = (s[j] == '#') ? : ;
} for(ri i = ; i < n; i ++)
for(ri j = ; j < m; j ++)
v[i][j] = c[i][j] ^ c[i + ][j] ^ c[i][j + ] ^ c[i + ][j + ] ^ ; for(ri i = ; i <= n; i ++) {
int lst = ;
for(ri j = ; j <= m; j ++)
if(v[i][j]) l[i][j] = lst;
else L[i][j] = , lst = j; lst = m + ;
for(ri j = m; j >= ; j --)
if(v[i][j]) r[i][j] = lst;
else R[i][j] = m + , lst = j;
} for(ri i = ; i <= m + ; i ++) R[][i] = m + ; ans = max(n, m);
for(ri i = ; i <= n; i ++)
for(ri j = ; j <= m; j ++)
if(v[i][j]) {
h[i][j] = h[i - ][j] + ;
L[i][j] = max((short)(l[i][j] + ), L[i - ][j]);
R[i][j] = min((short)(r[i][j] - ), R[i - ][j]);
ans = max(ans, (R[i][j] - L[i][j] + ) * (h[i][j] + ));
} printf("%d\n", ans);
return ;
}
AtCoder Regular Contest 81的更多相关文章
- AtCoder Regular Contest 061
AtCoder Regular Contest 061 C.Many Formulas 题意 给长度不超过\(10\)且由\(0\)到\(9\)数字组成的串S. 可以在两数字间放\(+\)号. 求所有 ...
- AtCoder Regular Contest 094 (ARC094) CDE题解
原文链接http://www.cnblogs.com/zhouzhendong/p/8735114.html $AtCoder\ Regular\ Contest\ 094(ARC094)\ CDE$ ...
- AtCoder Regular Contest 092
AtCoder Regular Contest 092 C - 2D Plane 2N Points 题意: 二维平面上给了\(2N\)个点,其中\(N\)个是\(A\)类点,\(N\)个是\(B\) ...
- AtCoder Regular Contest 093
AtCoder Regular Contest 093 C - Traveling Plan 题意: 给定n个点,求出删去i号点时,按顺序从起点到一号点走到n号点最后回到起点所走的路程是多少. \(n ...
- AtCoder Regular Contest 094
AtCoder Regular Contest 094 C - Same Integers 题意: 给定\(a,b,c\)三个数,可以进行两个操作:1.把一个数+2:2.把任意两个数+1.求最少需要几 ...
- AtCoder Regular Contest 095
AtCoder Regular Contest 095 C - Many Medians 题意: 给出n个数,求出去掉第i个数之后所有数的中位数,保证n是偶数. \(n\le 200000\) 分析: ...
- AtCoder Regular Contest 102
AtCoder Regular Contest 102 C - Triangular Relationship 题意: 给出n,k求有多少个不大于n的三元组,使其中两两数字的和都是k的倍数,数字可以重 ...
- AtCoder Regular Contest 096
AtCoder Regular Contest 096 C - Many Medians 题意: 有A,B两种匹萨和三种购买方案,买一个A,买一个B,买半个A和半个B,花费分别为a,b,c. 求买X个 ...
- AtCoder Regular Contest 097
AtCoder Regular Contest 097 C - K-th Substring 题意: 求一个长度小于等于5000的字符串的第K小子串,相同子串算一个. K<=5. 分析: 一眼看 ...
随机推荐
- Linux 安装tomcat,搭建web app运行环境
Tomcat 8 下载地址:https://tomcat.apache.org/download-80.cgi 解压tomcat:tar -xf apache-tomcat-8.5.31.tar.gz ...
- 查询timestamp类型数据
$where=" roleid = 8 and lizhi = 0 and branchid IN (".implode(",",$ids).") a ...
- 前端QRCode.js生成二维码(解决长字符串模块和报错问题)
QRCode 用法 1.使用npm安装到你的项目中 npm install qrcode2 --save 使用commonjs或者es6模块方式导入 var QRCode = require('qrc ...
- OSCP考试回顾
技术背景 从2011年开始接触学习渗透测试,全职做过的职位有渗透测试,Python后端研发,DevOps,甲方安全打杂. 学习过程 首先考试报名,交钱.买了价值800美元的一个月lab,包含Pente ...
- 【项目管理】git和码云的使用【转】
转自:https://www.cnblogs.com/riverdubu/p/6491944.html 缘起 说了那么多关于git和码云相关的事,一直都没给大伙讲解这个码云究竟是个啥玩意儿. 今天就给 ...
- sicily 1240. Faulty Odometer
Description You are given a car odometer which displays the miles traveled as an integer. The odomet ...
- Codeforces 821C Okabe and Boxes(模拟)
题目大意:给你编号为1-n的箱子,放的顺序不定,有n条add指令将箱子放入栈中,有n条remove指令将箱子移除栈,移出去的顺序是从1-n的,至少需要对箱子重新排序几次. 解题思路:可以通过把栈清空表 ...
- hdu 5839(三维几何)
Special Tetrahedron Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Othe ...
- (转)OpenCV 访问Mat中每个像素的值
转自:http://blog.csdn.net/xiaowei_cqu/article/details/19839019 在<OpenCV 2 Computer Vision Applicati ...
- 常用的scrapy setting
原文请参考 Scrapy 爬虫入门教程十三 Settings(设置), 讲的很详细 官网参考 Settings 设置 Scrapy 设置允许您自定义所有 Scrapy 组件的行为,包括核心,扩 ...