Codeforces Round #527 (Div. 3) 总结 A B C D1 D2 F
A
贪心的取
每个字母n/k次
令r=n%k
让前r个字母各取一次
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (int i = a; i <= b; ++i) int t, n, k; int main() {
cin >> t; while (t--) {
cin >> n >> k;
int x = n / k, r = n - x * k;
rep(i, , k) rep(j, , x) {
cout << (char)('a' + i - );
}
rep(i, , r) {
cout << (char)('a' + i - );
}
cout << '\n';
}
return ;
}
B
排序完连续两个比较
证明一下吧:max(a[2] - a[1]), a[4] - a[3]) <= max(a[3] - a[1]), a[4] - a[2]) (后者的间隙大)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (int i = a; i <= b; ++i) const int N = 1e5 + ; int n, a[N]; int main() {
cin >> n; rep(i, , n) {
cin >> a[i];
} sort(a + , a + n + ); int ans = ;
rep(i, , n / ) {
ans += a[i * ] - a[i * - ];
} cout << ans << '\n'; return ;
}
C
题意难理解
找出最长的两个串 判断哪个是最长前缀
f[len]代表着长度为len的前后缀是否被选 用来避免长度为len的两个子串都是前缀或都是后缀的情况
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (ll i = a; i <= b; ++i) const int N = ; ll n;
bool f[N];
string s[N]; int main() {
cin >> n; ll m = * n - ; string s1 = "", s2 = "";
rep(i, , m) {
cin >> s[i];
if (s[i].size() > s1.size()) s1 = s[i];
else if (s[i].size() == s1.size()) s2 = s[i];
} ll cnt = ;
rep(i, , m) if (s1.substr(, s[i].size()) == s[i]) {
if (s[i] != s2) cnt++;
} string pre;
if (cnt >= n - && s1.substr(, s1.size() - ) == s2.substr(, s1.size() - )) pre = s1; else pre = s2; rep(i, , m) {
if (pre.substr(, s[i].size()) == s[i] && !f[s[i].size()]) {
cout << 'P';
f[s[i].size()] = ;
}
else cout << 'S';
} return ;
}
D1 D2
两题类似
用一个栈 若当前高度和栈顶一致就弹出 具体判断见代码
//D1
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (int i = a; i <= b; ++i) const int N = 2e5 + ; int n;
bool a[N];
stack <bool> st; int main() {
scanf("%d", &n); int x;
rep(i, , n) {
scanf("%d", &x);
a[i] = x & ;
} rep(i, , n) {
if(st.empty())
st.push(a[i]);
else if(a[i] == st.top())
st.pop();
else
st.push(a[i]);
} st.size() > ? puts("NO") : puts("YES"); return ;
}
//D2
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i, a, b) for (int i = a; i <= b; ++i) int n, mx;
stack <int> s; int main() {
scanf("%d", &n); int x;
rep(i, , n) {
scanf("%d",&x);
mx=max(mx,x);
if (s.empty())
s.push(x);
else if (s.top()==x)
s.pop();
else if (s.top()>=x)
s.push(x);
else {
puts("NO");
return ;
}
} if (!s.size())
puts("YES");
else if (s.size() == && s.top() == mx)
puts("YES");
else
puts("NO"); return ;
}
E
blank
F
初始思路是:维护树上的一堆和乱搞
其实dfs2的操作十分巧妙
1.res -= sum[v] 代表 v子树下的每个点的距离都少了1
2.sum[u] -= sum[v]; 为下一步做准备
3.res += sum[u]; 代表 u子树下(除)的每个点的距离都多了1
4.sum[v]+=sum[u]; dfs2到下一层的时候 (假如边为(v,w)) res+= sum[v](即步骤3)的时候v点外u点子树下的一些点到w的距离也多了1
#include <bits/stdc++.h>
using namespace std;
typedef long long ll; #define rep(i, a, b) for (int i = a; i <= b; ++i) const int N = 2e5 + ; int n; ll a[N], sum[N], res, ans; vector <int> e[N]; void dfs1(int u, int p = , int d = ) {
res += d * a[u];
sum[u] = a[u];
for (auto v : e[u]) if (v != p) {
dfs1(v, u, d + );
sum[u] += sum[v];
}
} void dfs2(int u, int p = ) {
ans = max(ans, res);
for (auto v : e[u]) if (v != p) {
res -= sum[v];
sum[u] -= sum[v];
res += sum[u];
sum[v] += sum[u]; dfs2(v, u); sum[v] -= sum[u];
res -= sum[u];
sum[u] += sum[v];
res += sum[v];
}
} int main() {
scanf("%d", &n); rep(i, , n) {
scanf("%lld", &a[i]);
} int u, v;
rep(i, , n - ) {
scanf("%d%d", &u, &v);
e[u].push_back(v);
e[v].push_back(u);
} dfs1();
dfs2(); printf("%lld\n", ans); return ;
}
Codeforces Round #527 (Div. 3) 总结 A B C D1 D2 F的更多相关文章
- Codeforces Round #527 (Div. 3) ABCDEF题解
Codeforces Round #527 (Div. 3) 题解 题目总链接:https://codeforces.com/contest/1092 A. Uniform String 题意: 输入 ...
- Codeforces Round #527 (Div. 3) F. Tree with Maximum Cost 【DFS换根 || 树形dp】
传送门:http://codeforces.com/contest/1092/problem/F F. Tree with Maximum Cost time limit per test 2 sec ...
- Codeforces Round #527 (Div. 3) D2. Great Vova Wall (Version 2) 【思维】
传送门:http://codeforces.com/contest/1092/problem/D2 D2. Great Vova Wall (Version 2) time limit per tes ...
- Codeforces Round #527 (Div. 3) D1. Great Vova Wall (Version 1) 【思维】
传送门:http://codeforces.com/contest/1092/problem/D1 D1. Great Vova Wall (Version 1) time limit per tes ...
- Codeforces Round #527 (Div. 3) C. Prefixes and Suffixes
题目链接 题意:给你一个长度n,还有2*n-2个字符串,长度相同的字符串一个数前缀一个是后缀,让你把每个串标一下是前缀还是后缀,输出任意解即可. 思路;因为不知道前缀还是后缀所以只能搜,但可以肯定的是 ...
- Codeforces Round #527 (Div. 3) . F Tree with Maximum Cost
题目链接 题意:给你一棵树,让你找一个顶点iii,使得这个点的∑dis(i,j)∗a[j]\sum dis(i,j)*a[j]∑dis(i,j)∗a[j]最大.dis(i,j)dis(i,j)dis( ...
- Codeforces Round #527 (Div. 3)
一场div3... 由于不计rating,所以打的比较浪,zhy直接开了个小号来掉分,于是他AK做出来了许多神仙题,但是在每一个程序里都是这么写的: 但是..sbzhy每题交了两次,第一遍都是对的,结 ...
- Codeforces Round #527 (Div. 3)F(DFS,DP)
#include<bits/stdc++.h>using namespace std;const int N=200005;int n,A[N];long long Mx,tot,S[N] ...
- Codeforces Round #527 (Div. 3)C(多重集,STRING)
#include<bits/stdc++.h>using namespace std;const int maxn=1e6+7;pair<string,int>p[maxn]; ...
随机推荐
- Oracle Awr报告_生成
AWR的概念 Oracle数据库是一个使用量很多的数据库,关于Oracle数据库的性能.Oracle10g以后,Oracle提供了一个性能检测的工具:AWR(Automatic Workload Re ...
- 如何将 qsys 子模块设置为参数可调的方式给另外的qsys 调用
Intel FPGA Quartus 软件中的 Qsys工具 也就是 Platform Designer 系统集成工具,可以 图形化界面操作 使用系统自带ip,自定义ip 系统自动生成 ip 间的连接 ...
- 精通并发与 Netty (二)常用的 rpc 框架
Google Protobuf 使用方式分析 对于 RPC 协议来说,最重要的就是对象的发送与接收,这就要用到序列化与反序列化,也称为编码和解码,序列化与反序列化和网络传输一般都在对应的 RPC 框架 ...
- SpringMVC——MVC
一.了解MVC mvc这种设计模式,分为三个基本部分:模型(Model).视图(View)和控制器(Controller),不光运用于Web领域,而且也能用于非Web领域:可以特指一种表现层设计模式, ...
- 嵊州D1T1 总统先生,一路走好!
嵊州D1T1 总统先生,一路走好! 在总统先生的所有财产就是 n 杯黑咖啡,咖啡店可以用 m 个空杯子换一杯黑咖啡. 因为总统的特殊身份,心地善良而心生怜悯的咖啡店店长决定先借给总统一杯黑咖啡,只要他 ...
- Java学习笔记之---入门
Java学习笔记之---入门 一. 为什么要在众多的编程语言中选择Java? java是一种纯面向对象的编程语言 java学习起来比较简单,适合初学者使用 java可以跨平台,即在Windows操作系 ...
- 关于vue项目font字体图标库导入未显示的问题
运行项目时,弹出以下信息:
- Git命令行之快速入门
从头开始创建一个版本库,添加一些内容,然后管理一些修订版本. 有两种建立 Git版本库 的基础技术.第一:从头开始创建,用现有的内容填充它.第二:可以克隆一个已有的版本库.这里选择从一个空的版本库开始 ...
- 数据结构-哈夫曼树(python实现)
好,前面我们介绍了一般二叉树.完全二叉树.满二叉树,这篇文章呢,我们要介绍的是哈夫曼树. 哈夫曼树也叫最优二叉树,与哈夫曼树相关的概念还有哈夫曼编码,这两者其实是相同的.哈夫曼编码是哈夫曼在1952年 ...
- 【HDOJ】2104 hide handkerchief
Problem Description The Children’s Day has passed for some days .Has you remembered something happen ...