AtCoder Regular Contest 069
1. C - Scc Puzzle
计算scc的个数,先判断s个数需要多少个cc,多的cc,每四个可以组成一个scc。注意数据范围,使用long long.
#include<bits/stdc++.h>
#define pb push_back
#define FOR(i, n) for (int i = 0; i < (int)n; ++i)
#define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
typedef long long ll;
using namespace std;
typedef pair<int, int> pii;
const int maxn = 1e3 + ;
void solve() {
ll x, y;
while(cin >> x >> y) {
ll res = ;
if(y >= * x) {
res = x + (y - * x) / ;
} else {
res = y / ;
}
cout << res << endl;
}
}
int main() {
//freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
ios::sync_with_stdio();
cin.tie(); cout.tie();
solve();
return ;
}
2. D - Menagerie
读完题目,感觉是无从下手,3 <= n <= 1e5,暴力判断每一个字符串,肯定会tle,然后就要想其他方法了。
然后突然想到:固定前2个数,然后其他的位置可以推导出来,最后判断第一个和最后一个位置是否合法就可以了。
我写的又长又臭,哎,先这样吧,慢慢改进。
#include<bits/stdc++.h>
#define pb push_back
#define FOR(i, n) for (int i = 0; i < (int)n; ++i)
#define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
typedef long long ll;
using namespace std;
typedef pair<int, int> pii;
const int maxn = 1e3 + ;
int n;
vector<bool> res;
bool work(const string &s) {
for (int i = ; i < n - ; i++) {
if(s[i] == 'o') {
if(res[i]) {
res[i + ] = !res[i - ];
} else {
res[i + ] = res[i - ];
}
} else {
if(res[i]) {
res[i + ] = res[i - ];
} else {
res[i + ] = !res[i - ];
}
}
}
bool f1, f2;
f1 = f2 = ;
if(s[n - ] == 'o') {
if(res[n - ]) {
f1 = res[n - ] != res[];
} else {
f1 = res[n - ] == res[];
}
} else {
if(res[n - ]) {
f1 = res[n - ] == res[];
} else {
f1 = res[n - ] != res[];
}
} if(s[] == 'o') {
if(res[]) {
f2 = res[n - ] != res[];
} else {
f2 = res[n - ] == res[];
}
} else {
if(res[]) {
f2 = res[n - ] == res[];
} else {
f2 = res[n - ] != res[];
}
}
return f1 && f2;
}
void pr() {
for (int i = ; i < n; i++) {
if(res[i]) cout << 'W';
else cout << 'S';
}
cout << endl;
}
void solve() {
string s;
while(cin >> n) {
cin >> s;
res.clear();
res.resize(n);
res[] = res[] = ;
bool f = work(s);
if(f) {
pr();
continue;
}
res[] = res[] = ;
f = work(s);
if(f) {
pr();
continue;
}
res[] = ; res[] = ;
f = work(s);
if(f) {
pr();
continue;
}
res[] = ; res[] = ;
f = work(s);
if(f) {
pr();
continue;
}
cout << - << endl;
}
}
int main() {
// freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
ios::sync_with_stdio();
cin.tie(); cout.tie();
solve();
return ;
}
3. E - Frequency
1<=n<=1e5,1<=a<=1e9,数据范围很大,不可能一个一个的模拟。注意结果可能需要long long来保存。
考虑最大的数,然后递减到次大的数,然后每次维护一下这些数的index的最小值,依次统计,最后输出。
使用set来维护数的顺序,同时记录index.
#include<bits/stdc++.h>
#define pb push_back
#define FOR(i, n) for (int i = 0; i < (int)n; ++i)
#define dbg(x) cout << #x << " at line " << __LINE__ << " is: " << x << endl
typedef long long ll;
using namespace std;
typedef pair<int, int> pii;
const int maxn = 1e5 + ;
int a[maxn];
set<int> se;
map<int, vector<int>> tag;
map<int, int> sz;
ll res[maxn];
int n;
void solve() {
cin >> n;
for (int i = ; i < n; i++) {
cin >> a[i];
se.insert(a[i]);
sz[a[i] ]++;
tag[a[i] ].pb(i + );
}
while(se.size() > ) {
int t = *se.rbegin();
se.erase(t);
int nt = *se.rbegin();
int mi = tag[t][];
for (int x : tag[t]) {
mi = min(mi, x);
}
tag[nt].pb(mi);
res[mi] += 1ll * (t - nt) * sz[t];
sz[nt] += sz[t];
}
int t = *se.begin();
int mi = tag[t][];
for (int x : tag[t]) mi = min(mi, x);
res[mi] += 1ll * t * sz[t];
for (int i = ; i <= n; i++)
cout << res[i] << endl;
}
int main() {
// freopen("test.in", "r", stdin);
//freopen("test.out", "w", stdout);
ios::sync_with_stdio();
cin.tie(); cout.tie();
solve();
return ;
}
4。 F - Flags
题目很简短,不知道怎么做。官方题解只有日语的,没有进一步用翻译去看,有时间,搞一下。
AtCoder Regular Contest 069的更多相关文章
- AtCoder Regular Contest 069 F Flags 二分,2-sat,线段树优化建图
AtCoder Regular Contest 069 F Flags 二分,2-sat,线段树优化建图 链接 AtCoder 大意 在数轴上放上n个点,点i可能的位置有\(x_i\)或者\(y_i\ ...
- AtCoder Regular Contest 069 D
D - Menagerie Time limit : 2sec / Memory limit : 256MB Score : 500 points Problem Statement Snuke, w ...
- AtCoder Regular Contest 069 D - Menagerie 枚举起点 模拟递推
arc069.contest.atcoder.jp/tasks/arc069_b 题意:一堆不明身份的动物排成一圈,身份可能是羊或狼,羊一定说实话,狼一定说假话.大家各自报自己的两边是同类还是不同类, ...
- AtCoder Regular Contest 069 F - Flags
题意: 有n个点需要摆在一个数轴上,每个点需要摆在ai这个位置或者bi上,问怎么摆能使数轴上相邻两个点之间的距离的最小值最大. 二分答案后显然是个2-sat判定问题,因为边很多而连边的又是一个区间,所 ...
- 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.求最少需要几 ...
随机推荐
- 《Linux程序设计》笔记(一)入门
1. 头文件 使用-I标志来包含头文件. gcc -I/usr/openwin/include fred.c 2. 库文件 通过给出 完整的库文件路径名 或 用-l标志 来告诉编译器要搜索的库文件. ...
- 【技术累积】【点】【Java】【12】几种常见编码(持续更新)
问题描述 有这么一段代码: String question = new String(record.getQuestion().getBytes("iso-8859-1"), &q ...
- vue中怎样实现 路由拦截器
vue中怎样实现 路由拦截器(当用户没有登录的时候,跳转到登录页面,已经登录的时候,不能跳转到登录页,除非后台token失效) 在 我们需要实现这样 一个功能,登录拦截 其实就是 路由拦截,首先在定义 ...
- Python 集合 day3
集合(set)是一个无序的不重复元素序列. 可以使用大括号 { } 或者 set() 函数创建集合,集合用{},里面是一个一个元素,不同于key-value形式的字典: 注意:创建一个空集合必须用 s ...
- mint-ui 取值
//slots:[{values: ['年假', '事假', '病假', '婚假', '其他']}], slots:[{values: []}], onValuesChange(picker,valu ...
- 【剑指Offer】14、链表中倒数第k个结点
题目描述: 输入一个链表,输出该链表中倒数第k个结点.为了符合习惯,从1开始计数,即链表的尾结点是倒数第1个节点.例如,一个链表有6个结点,从头结点开始,它们的值依次是1,2,3,4,5,6. ...
- Lua的函数的定义、math数学函数、lua字符串的处理、lua支持的字符串类、模式串中的特殊字符_学习笔记04
Lua的函数的定义.math数学函数 定义函数 function [function name] (param1,param2) [function code] --定义一个函数用来求的两个数字的和 ...
- js实现cookie有效期至当次日凌晨
实际开发中有要求用户一些行为每天一次,次日开始重新回复功能,一般前端都是通过cookie来记住用户的操作,然后进行判断当日是否还有机会,这时候需要给存储的cookie值一个有效期,让次日自动失效,重新 ...
- (25)Spring Boot使用自定义的properties【从零开始学Spring Boot】
spring boot使用application.properties默认了很多配置.但需要自己添加一些配置的时候,我们应该怎么做呢. 若继续在application.properties中添加 如: ...
- 修改Xorg.conf配置显示分辨率
修改Xorg.conf是件简单的事,配置文件结构简单,也没有复杂的语法,但是一但配置失败,后果是比较 严重的,,所以强烈建议每次修改之前做好备份工作. Xorg.conf一般位于/etc/X11/xo ...