-
http://codeforces.com/contest/12/problem/C 题意:有n个价格价格,m个要买的东西(可能有相同的种类,设为k种),把n个标签中拿出k个给个贴上。。。问最大价钱和最少价钱分别是多少。 思路:贪心。不过要按照map的value排序。。然后发现其实不用排序。。因为map的key值其实不影响。 vector降序排列的话。。直接 sort(v.rbegin(),v.rend());就好。 /* *********************************************** Author :111qqz Created Time :2015年12月29日 星期二 15时30分54 …
Read More -
http://codeforces.com/contest/526/problem/B 题意:有一棵完全二叉树。每条边上有一定数量的路灯。问最少需要添加多少个路灯。使得根节点道叶子节点的每一条路径上的路灯数量一样。 思路:同叶子节点网上更新即可。 /* *********************************************** Author :111qqz Created Time :2015年12月11日 星期五 16时57分27秒 File Name :code/cf/problem/526B.cpp ************************************************ */ …
Read More -
http://codeforces.com/problemset/problem/596/B 题意:初始序列全为0,问经过多少次变换,能变成序列b。一次变换是指,选定一个i,从i一直到最后每个元素都增加1,或者每个元素都减少1. 思路:很容易发现。后面的变换补影响前面的变换。每一个数字可以唯一由之前的增加和减少次数决定。所以我们用两个变量,记录之前做的增加和减少变换的次数。然后扫一遍即可。 /* *********************************************** Author :111qqz Created Time :2015年12月08日 星期二 17时53分58秒 File Name …
Read More -
http://codeforces.com/problemset/problem/600/C 题意:给定一个字符串。要求用最少的变换得到一个回文串。且在变换次数相同时要字典序最小的。输出变换后的字符串。 思路:对不能构成会文串有影响的是出现奇数次的字母。所以我们先统计每个字母出现的次数。然后按照出现奇数次的字母的个数分奇偶分别搞。偶数的话直接把后面一半变成前面一半。奇数的话,也是这样。输出的时候按照字母从a扫到z,如果有就输出一半。然后再倒着扫一遍。 输出另一半。这样可以保证是字典序最小。需要注意的是奇数的时候的输出情况。不要忘记中间那个字母。 /* …
Read More -
http://codeforces.com/problemset/problem/158/B 题意:n组人,每组有si个(1<=si<=4),每辆车能装4个人。问最少需要多少辆车装下所有人并且保证同一组的人在一辆车里。 思路:统计人数分别为1,2,3,4的人数。对于4的直接加到答案。贪心的思路是:优先用人数少的去填人数多的。 /* *********************************************** Author :111qqz Created Time :2015年12月06日 星期日 17时34分21秒 File Name :code/cf/problem/158B.cpp …
Read More -
题意是说。给n个balls,k个箱子。保证(n<=2*k) 一个箱子中中最多放两个balls,size为两个balls的size之和。 所有的箱子的size都要一样。 问size最小是多少。 只要让最大的size尽可能小即可。 容易想到一组贪心策略。 可以先看有几个多出来的位置 (2*k-n) 然后把最大的几个size的ball装在多余的位置里。。更新答案。 然后对于剩下的。。。最小的和最大的一组状进去。。。扫一遍更新答案。 /* *********************************************** Author :111qqz Created Time :2015年12月02日 星期三 00时00 …
Read More -
贪心..尽量把一样的材料放在一起... 然后写蠢了..妈蛋... 详情见代码 /************************************************************************* > File Name: code/bc/#56/1001.cpp > Author: 111qqz > Email: rkz2013@126.com > Created Time: 2015年09月19日 星期六 18时55分49秒 ************************************************************************/ …
Read More -
http://codeforces.com/contest/558/problem/C 题目大意是说,给定N个数,可以对任意数进行任意次两种操作,×2,和/2(整除) 问最少操作多少次,可以让所有数相等。 嘛,前半个小时A掉了前两个提,d E貌似都是线段树。。并不会。。。就一直搞C。。。。 然而并没有做出来。位运算是什么神奇的黑魔法。 转载一份题解:http://blog.csdn.net/qq_24451605/article/details/46906813 思路是声明两个数组,一个数组表示到达i的步数,另一个数组表示n个数中能够达到i的数的个数(包括本身) 1 2 …
Read More -
http://codeforces.com/problemset/problem/479/D 题意是说有一把尺子,本身有一些刻度,然后需要测量x和y,问最少需要添加多少个刻度,如果需要,这些刻度分别添加在什么位置。 一开始没有看清题目,以为答案最多为4,但是发现,a[1]=0 a[n]=l这两个是确定的,所以答案最多为2, 而不会出现中间有两个刻度,无论是往前刻还是往后都会越界的情况。 先去看看已知的刻度里有没有直接满足的。 除此之外,如果在已知的刻度下无法测量x也无法测量y,我们还可以找找是否能有公用点使得只刻一个刻度就可以满足题意。公用点分两种情况,一种是在两个刻度之间,另一种是在两个刻度的同侧。 前一种没什么坑,后一种要判断是 …
Read More -
http://codeforces.com/problemset/problem/525/B 题意是说一个字符串,进行m次颠倒变换(从a[i]位置到a[l-i+1]位置),问得到的字符串。容易发现,对于越在里边(对称,也就是越靠近中间位置)的字符,调换的次数越多。我们可以把a[i]从小到大排序。然后经过分析发现,把两个相邻的a[i]分为一组,做处理,如果m为奇数,最后还剩下a[m]没有被分组,要单独处理a[m]细节上要注意st数组是从st[0]开始的...好吧的确不方便,适牛也说我了。。数组下标以后还是从0开始吧。。。主要是受高中OI用的pascal的影响。。。那个数组下标随便啊。代码: 1 2 3 /* …
Read More