题解-bzoj2554 Color】的更多相关文章

Problem Please contact lydsy2012@163.com! 题意概要:有 \(n\) 个球排成一列,每个球都有一个颜色,每次随机选出两个球,使得后者染上前者的颜色,求期望操作多少次,才能使得所有球的颜色都一样? \(n\leq 10^4\) Solution 思想和这篇差不多,但推导方面可能更详尽 推这题用了大半张草稿纸的说 最近用纸效率剧增啊 考虑只要找出对于每一种颜色\(C\),整个序列最终全部变为\(C\)的情况 设整个序列最终变为颜色 \(i\) 的概率为\(p_…
Description 有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作多少次,才能使得所有球的颜色都一样? Solution 挺不错的题! 其实n可以开到1e7 %%lrd真心好题解 思想: 1.26个太多,2个好做. 2.转化成2个?钦定哪一个最后成为最终颜色!这个是白色,剩下都是黑色. 发现问题: 问题1:不一定什么时候都能染成 概率:i/n 问题2:不能之前的f[i]剩下i个白球到全部是同样的…
题目分析: 好题. 一开始看错题了,以为是随机选两个球,编号在前的染编号在后的. 但这样仍然能获得一些启发,不难想到可以确定一个颜色,剩下的颜色是什么就无关了. 那么答案就是每种颜色的概率乘以期望.概率很好求. 考虑期望,这里存在一个"黑洞",也就是f[0]状态无论如何也不可能填满颜色,所以我们要舍弃这个状态,这样往左和往右的转移就不是对半了. 通过求出的概率作比可以发现实际上是i-1:i+1.所以可以列出DP方程 代码: #include<bits/stdc++.h> u…
[BZOJ2554]Color Description 有n个球排成一列,每个球都有一个颜色,用A-Z的大写字母来表示,我们每次随机选出两个球ball1,ball2,使得后者染上前者的颜色,求期望操作多少次,才能使得所有球的颜色都一样? Input 一行一个字符串,表示球的颜色 Output 一行表示结果,精确到小数点后1位. Sample Input AAA Sample Output 0.0 HINT 数据范围   对于10%的数据,n<=20   对于40%的数据,n<=200   对于…
原本用map,发现超时了,后来便先用数组存储排个序,最后for一遍统计每种颜色出现的次数(每种颜色的首位索引相减+1),找出最多的即可. #include <iostream> #include <cstdio> #include <algorithm> #include <string.h> #include <map> using namespace std; ; long long color[maxn]; int main() { int…
Color the ball Time Limit: 9000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 25164    Accepted Submission(s): 12226 Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"…
看了一下题解,显然在做无用功啊,而且麻烦了许多,但是这道题真心不难,显然是一个区间修改的题目,然后查询的题目 我的线段树只需要记录一个量:区间和 看了一下其他题解的pushdown函数,发现真心写的很麻烦 这里有一个很巧妙的解法: 如果这个区域被染成了白棋,那么直接把这个区间总和清零就好了 然后向下传值,只需要把他的儿子节点sum清零就好了 那就直接上代码吧 #include<iostream> #include<cstdio> #include<cstring> #i…
本题使用线段树自然能够,由于区间的问题. 这里比較难想的就是: 1 最后更新须要查询全部叶子节点的值,故此须要使用O(nlgn)时间效率更新全部点. 2 截取区间不能有半点差错.否则答案错误. 这两点卡了我下.看来我的线段树还是不够熟,须要多多练习. 线段树是二分法的高级应用,可是却不是简单应用,要锻炼好并应用好线段树思维还是比二分法难非常多的. static const int SIZE = 100005; static const int TREESIZE = SIZE<<2; int a…
题目链接:http://codeforces.com/problemset/problem/349/B 题目大意 小明要从9个数字(1,2,--,9)去除一些数字拼接成一个数字,是的这个数字最大. 但是小明每取一个数字i就会消耗a[i]点体力,小明目前总共有v点体力. 举个例子: 小明如果有5点体力,而a[1]到a[9]的数值依次为: 5 4 3 2 1 2 3 4 5 那么最好的办法就是取5次数字5,因为a[5]=1最小,所以最终得到的数字是11111,比起其他的取数策略所得到的数字都要大.…
Problem Description N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的"小飞鸽"牌电动车从气球a開始到气球b依次给每一个气球涂一次颜色. 可是N次以后lele已经忘记了第I个气球已经涂过几次颜色了.你能帮他算出每一个气球被涂过几次颜色吗?   Input 每一个測试实例第一行为一个整数N,(N <= 100000).接下来的N行,每行包含2个整数a b(1 <= a <= b…