codeforces
文章平均质量分 61
萌萌哒黑大帅
这个作者很懒,什么都没留下…
展开
-
codeforces #35D
题目大意:农场中原来有X份粮食,每天会有一个动物来,每个动物会在第i天消耗i份粮食,你可以选择接受或者拒绝,求最后能容纳的最多动物数。 题目思路:每个动物消耗的粮食都是定值。。。所以可以直接安装消耗的粮食数进行排序,或者0-1背包处理均可 AC代码: #include #include using namespace std; ifstream fin; ofstream fout;原创 2015-10-25 23:43:39 · 459 阅读 · 0 评论 -
codeforces #38E
题意:有n个弹珠分别位于x轴上的一些位置,你可以选择其中的一些固定住(需要花费ci),当选择完毕之后,从最右面开始,弹珠会依次向左滚动直到遇到被固定住的弹珠(否则视为滚到无穷远处),计算花费+所有弹珠滚动的距离之和的最小值 思路:使用动态规划,首先最左边的弹珠肯定是要被固定住的,接着从左向右考虑每一个弹珠,固定每一个弹珠的花费都是可以直接得到的(花费-右边所有弹珠的个数*该弹珠到它右边相邻的一个原创 2015-10-25 23:36:20 · 523 阅读 · 0 评论 -
codeforces #39E
题目大意:有两个人玩游戏,每次对a或b进行加1的操作,使得a^b 解题思路:博弈类型动态规划,这里采用的是记忆化搜索,没有接触过此类问题的可以先做一下UVAOJ的10404,题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1345 在此题原创 2015-10-26 00:01:43 · 725 阅读 · 0 评论 -
codeforces #25D
题目大意:给你一个由n个点和n-1条边组成的无向图,问你最多去掉几条边同时增加几条边可以使得原图成为一个连通图 解题思路:涉及到连通性问题,则考虑dfs或者并查集。本人采用了后者,读取每条边的同时,看两个端点是否处于一个联通块,若没有,则直接加入,否则将这条边加入一个元素为待删除的边的集合。读取完之后再把所有的点所属于的联通块(记录为根节点)放入一个set,最后轮流取出set中相邻的两项原创 2015-10-27 18:40:20 · 413 阅读 · 0 评论 -
codeforces #25E
题目大意:有一个由n个点组成的无向图,给你一个邻接表,a_i,j代表从i到j的最短距离,接下来会有k次操作,每次操作会新建一条从x到y的路,求每次操作完,更新后的邻接表的每个元素和的一半。 解题思路:每次操作更新x与y间的距离,首先要判断a_x,y是否需要更新,然后利用floyd算法更新其他的最短距离,但如果每次都直接更新,那复杂度是n^3*k会超时,所以考虑优化。又每次更新只更新一条边,所以用原创 2015-10-27 11:28:41 · 409 阅读 · 0 评论 -
codeforces #354(div 2) D
题目链接:http://codeforces.com/contest/676/problem/D 题目大意:经典的迷宫问题,每个时刻有5种操作,走到相邻的房间或者让所有的房间顺时针旋转90°, 房间的旋转只改变门的方向,能走到相邻房间的条件是这间房和下一间房都要有门朝向对面。每次操作 都会花费1秒,求起点走到终点的最短时间。 解题思路:可以用简单粗暴的bfs,用三维的vis数组记录每个房间原创 2016-05-28 20:07:58 · 369 阅读 · 0 评论 -
codeforces #354(div 2) C
题目链接:http://codeforces.com/contest/676/problem/C 题目大意,给定一个长度小于等于100 000的一个只含有a或者b字母的字符串和一个常数k, 问在最多只能改变k个字符的情况下最长的元素都相等的子串的长度为多少? 解题思路:算法比较简单,不妨假设满足题意的子串所含的元素为a, 定义两个变量f和r代表一前一后的两个指针,tmp保存指针所指的子串中原创 2016-05-28 19:46:12 · 348 阅读 · 0 评论