[codeforces/edu2]总结(F)
链接:http://codeforces.com/contest/600
A题:
字符串处理。
B题:
sort+upper_bound
C题:
统计一下每种字符的个数,然后贪心。
(1) 如果没有奇数个的字母。直接按字典序放。
(2) 如果有1个奇数个的字母。就把单出来的那一个字符(注意是一个字符,不是所有的那种字母)放中间,其他的按字典序放。
(3) 如果多与1个奇数个的字母。就把单出来的每种字母的一个按字典序排好,最右边的替换成最左边的,次右边的替换成次左边的……最后情况会转变为(1)或者(2)。
D题:
计算几何看来必须得用最科学的方法去计算啊……不然真的是卡精度卡到死。原则:能用整数决不用小数,简单题自己推别用板子。
E题:
map+启发式合并。对于每个节点,维护两个map:M1和M2,分别表示这个子树里面颜色->个数的映射和个数->颜色的和的映射。合并的时候启发式一下就可以了,swap两个map是O(1)的。
#include<bits/stdc++.h>
using namespace std; const int maxn=;
vector<int> G[maxn];
int c[maxn];
map<int,int> M[maxn];
map<int,long long> M2[maxn];
long long res[maxn]; void dfs(int u,int fa)
{
for (int i=;i<(int)G[u].size();i++)
{
int v=G[u][i];
if (v==fa) continue;
dfs(v,u);
if (M[u].size()<M[v].size())
{
swap(M[u],M[v]);
swap(M2[u],M2[v]);
}
for (auto it=M[v].begin();it!=M[v].end();++it)
{
int c=it->first;
M2[u][M[u][c]]-=c;
M[u][c]+=it->second;
M2[u][M[u][c]]+=c;
}
}
res[u]=M2[u].rbegin()->second;
} int main()
{
int n;
scanf("%d",&n);
for (int i=;i<=n;i++) scanf("%d",&c[i]);
for (int i=;i<=n-;i++)
{
int u,v;
scanf("%d%d",&u,&v);
G[u].push_back(v);
G[v].push_back(u);
}
for (int i=;i<=n;i++) M[i][c[i]]=;
for (int i=;i<=n;i++) M2[i][]=c[i];
dfs(,-);
for (int i=;i<=n;i++) printf("%I64d ",res[i]);
return ;
}
problem E
F题:
题意:给一个二分图,求给边的最少染色数,要求有公共点的边不能同色。输出染色方案。
用增广链构造……不是很懂(待补)
[codeforces/edu2]总结(F)的更多相关文章
- Codeforces #541 (Div2) - F. Asya And Kittens(并查集+链表)
Problem Codeforces #541 (Div2) - F. Asya And Kittens Time Limit: 2000 mSec Problem Description Inp ...
- Educational Codeforces Round 40 F. Runner's Problem
Educational Codeforces Round 40 F. Runner's Problem 题意: 给一个$ 3 * m \(的矩阵,问从\)(2,1)$ 出发 走到 \((2,m)\) ...
- codeforces Gym 100187F F - Doomsday 区间覆盖贪心
F. Doomsday Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100187/problem/F ...
- Codeforces gym 100685 F. Flood bfs
F. FloodTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/F Desc ...
- Codeforces Gym 100513F F. Ilya Muromets 线段树
F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...
- Educational Codeforces Round 61 F 思维 + 区间dp
https://codeforces.com/contest/1132/problem/F 思维 + 区间dp 题意 给一个长度为n的字符串(<=500),每次选择消去字符,连续相同的字符可以同 ...
- Educational Codeforces Round 51 F. The Shortest Statement(lca+最短路)
https://codeforces.com/contest/1051/problem/F 题意 给一个带权联通无向图,n个点,m条边,q个询问,询问两点之间的最短路 其中 m-n<=20,1& ...
- Codeforces Gym 100513F F. Ilya Muromets 水题
F. Ilya Muromets Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100513/probl ...
- Educational Codeforces Round 12 F. Four Divisors 求小于x的素数个数(待解决)
F. Four Divisors 题目连接: http://www.codeforces.com/contest/665/problem/F Description If an integer a i ...
随机推荐
- 打印队列 (Printer Queue,ACM/ICPC NWERC 2006,UVA12100)
题目描述: 题目思路: 使用一个队列记录数字,一个优先队列记录优先级,如果相等即可打印: #include <iostream> #include <queue> using ...
- 【转】: 探索Lua5.2内部实现:虚拟机指令(1) 概述
Lua一直把虚拟机执行代码的效率作为一个非常重要的设计目标.而采用什么样的指令系统的对于虚拟机的执行效率来说至关重要. Stack based vs Register based VM 根据指令获取操 ...
- 【20180808模拟测试】T2 k-斐波那契
描述 k-斐波拉契数列是这样的 f(0)=k;f(1)=k;f(n)=(f(n-1)+f(n-2))%P(n>=2); 现在我们已经知道了f(n)=1,和P: k的范围是[1,P); 求k的所有 ...
- kaldi - Online Audio Server(服务器客户端建立方法-旧版在线解码)
目录 一.服务器客户端识别系统建立方法 1. Command line to start the server(服务器端启动方式): 2. Command line to start the clie ...
- 应用Response.Write实现带有进度条的多文件上传
前几天,写过一篇随笔“使用RESPONSE.WRITE实现在页面的生命周期中前后台的交互”.说是交互,实际上也主要是在ASP.NET的页面周期中 从后台利用RESPONSE.WRITE向前台即时的推送 ...
- 虚拟机下 rm -rf / 尝试
环境:虚拟机 系统版本:centOS 5.8.centOS 6.5 1. root权限:rm -rf / 2. root权限:rm -rf /* 测试结果:5.8下执行命令1,2,根目录文件被删除,系 ...
- 【转】Linux内核结构详解
Linux内核主要由五个子系统组成:进程调度,内存管理,虚拟文件系统,网络接口,进程间通信. 1.进程调度 (SCHED):控制进程对CPU的访问.当需要选择下一个进程运行时,由调度程序选择最值得运行 ...
- 20162328蔡文琛week01
学号20162328 <程序设计与数据结构>第1周学习总结 教材学习内容总结 通过练习课本上给出的代码并结合老师所提供教程,熟悉并初步了解Java的基本编辑 教材学习中的问题和解决过程 无 ...
- 将MathType公式转换为LaTex格式
LaTex编辑公式不够直观,常常会因为结构复杂导致数据或者符号出错,使用MathType编辑公式后再直接转换成LaTex代码可以避免这个问题. 一.首先在MathType中编辑公式 二.然后点击参数— ...
- LintCode-4.丑数 II
丑数 II 设计一个算法,找出只含素因子2,3,5 的第 n 大的数. 符合条件的数如:1, 2, 3, 4, 5, 6, 8, 9, 10, 12... 注意事项 我们可以认为1也是一个丑数 样例 ...