随笔分类 -  01. . . . . |CodeForces

CodeForces 424D: ...(二分)
摘要:题意:给出一个n*m的矩阵,内有一些数字。当你从一个方格走到另一个方格时,按这两个方格数字的大小,有(升,平,降)三种费用。你需要在矩阵中找到边长大于2的一个矩形,使得按这个矩形顺时针行走一圈的费用,与给定费用最接近。3#include #include #include #include #inc... 阅读全文

posted @ 2014-06-07 00:04 ShineCheng 阅读(325) 评论(0) 推荐(0)

CodeForces 141E: ...(最小生成树)
摘要:[条件转换] 两两之间有且只有一条简单路径树题意:一个图中有两种边,求一棵生成树,使得这棵树中的两种边数量相等。思路:可以证明,当边的权是0或1时,可以生成最小生成树到最大生成树之间的任意值的生成树。那么,方法就是生成最小生成树,然后,尽量替换0边,使得其成为值为(n-1)/2的生成树。代码:写的很... 阅读全文

posted @ 2014-06-05 12:50 ShineCheng 阅读(568) 评论(0) 推荐(0)

Codeforces 404E: Maze 1D(二分)
摘要:题意:指令“R”机器人会向右走一步,“L”是向左。起初机器人在0位置,可以在除了0以外的任何位置放障碍,如果机器人的指令将使它走到障碍上,那这一步他会保持不动。要求让机器人最终结束的那一步一定只走过一次,也就是最后一次,这样称为完成指令。求在放障碍最少的情况下,能使机器人完成指令的方案数。方法:我去,这题意略长啊。最开始从细节分析,然后枚举情况,感觉挺简单的,然后……就没有然后了……后面枚举情况的时候,好复杂,感觉怎么都想不全(至少短时间想不全诶)然后看解题宝宝。(是报告)额,原来可以用模拟+二分解决~真是暴力的思路呀,不过没有发现它的二分性质~诶,以后要从暴力的方面先想象咯,或者,太复杂的时 阅读全文

posted @ 2014-03-20 22:29 ShineCheng 阅读(325) 评论(0) 推荐(0)

Codeforces 403D: Beautiful Pairs of Numbers(DP)
摘要:题意:转换模型之后,就是1~n个数中选k个,放到一个容量为n的背包中,这个背包还特别神奇,相同的物品摆放的位置不同时,算不同的放法(想象背包空间就是一个长度为n的数组,然后容量为1的物体放一个格子,容量为n的物体放在相邻的n个格子里。问方案数。方法:选k个物品放在背包中有多少种放法。然后就是k个物品放了以后,还剩下几个空位,空位的位置不同,则方案数也不同。所以要求出几个空位放在几个地方有多少方案数最后相乘,再乘上阶乘就好了。#include #include #include #define mod 1000000007long long dp[1010][55];int ans[1010][ 阅读全文

posted @ 2014-03-18 19:50 ShineCheng 阅读(517) 评论(0) 推荐(0)

CodeForces 385D: Bear and Floodlight
摘要:类型:DP,计算几何题意:坐标系上有(l,0)~(r,0)一条直线,是一条路。然后还有其他一些点,这些点上有灯,灯能照一定的角度,需要用这些灯照亮那条路,问起点开始最远一直能照到哪。思路:状态压缩DP.dp[1111..1] = max(遍历所有灯,那个被去掉的灯,从dp[11..0..11]这点开始照,最远照到哪)就是求计算几何有点不会诶。。。。与出现顺序有关的问题,可以用状态DP,从N!降到2N。我的代码:#include #include #include #include using namespace std;#define N 22const double eps = 1e-8;c 阅读全文

posted @ 2014-03-05 21:44 ShineCheng 阅读(205) 评论(0) 推荐(0)

CodeForces 148D: Bag of mice
摘要:类型:概率DP题意:袋子里有黑球白球,公主和恶龙依次从里面拿。公主先。恶龙拿的时候,会额外掉出去一个(这个不参与胜负评判)。谁先拿到白球谁胜利。如果都拿完了都没人拿到,则判定恶龙胜。思路:如图代码:#include #include double p[1004][1004];int main() { int w, b; while (scanf("%d%d", &w, &b) != EOF) { //其实可以放到外面只初始化一次 for (int i = 0; i = 3 && j >= 2) { double re... 阅读全文

posted @ 2014-03-04 12:10 ShineCheng 阅读(184) 评论(0) 推荐(0)

CodeForces 380.C Sereja and Brackets
摘要:题意一串括号序列,只由(和)组成,然后是m个提问,提问l和r区间内,最大的匹配匹配括号数。思路第一,贪心的思想,用最正常的方式去尽量匹配,详细点说就是,先找到所有的(),然后删除这些(),再找所有的()。用这种方式匹配出来的,就是最优的方案。第二,如果我们把所有的'('当成+1, ')'当成-1, 然后画成函数,那么,我们可以通过函数的图像,来得到得到,这段区间的长度(r-l),这段区间的最小值(min),这段区间没用的')'的数量(f(l)-min),这段区间没用的'('的数量(f(r)-f(l)+(f(l)-min)) 然后就 阅读全文

posted @ 2014-01-14 23:39 ShineCheng 阅读(548) 评论(0) 推荐(0)

CodeForces 315.D Sereja and Periods
摘要:传送门:http://codeforces.com/contest/315/problem/D类型:字符串题意:给出两个重复的字符串,告诉你重复单元和重复次数,问第二个字符串在第一个串中出现的次数(子序列)方法:http://blog.csdn.net/u010710717/article/details/9059403求出串二单元每个位置开头时,在串一单元中能完整出现的次数,和经过这个单元后, 串二当前位置。然后从0到串一重复次数模拟一遍。得到串二单元在串一中出现的完整次数最后除以串二重复次数(取整),得到答案。代码: #include <stdio.h> #include .. 阅读全文

posted @ 2013-06-11 12:11 ShineCheng 阅读(259) 评论(0) 推荐(0)

CodeForces #1 B. Spreadsheets
摘要:传送门:http://codeforces.com/contest/1/problem/B类型:简单模拟,进制转换题意:对于第23行第55列,有两种描述方式:一种是R23C55一种是BC23。其中BC表示55.(A->1,Z->26,AZ->27)给出其中一种表达方式,求另一种思路:本题就是10进制和以1开始的 1-26 这特殊的 26进制 的相互转换。方法:10 to 1-26while (c) { re[p--] = (c-1)%26 + 'A'; c = (c-1)/26;}从低位到高位的顺序输出。注意 c-1,每次相当与把个位的 1-26 转换成了 0 阅读全文

posted @ 2013-05-30 01:52 ShineCheng 阅读(291) 评论(0) 推荐(0)

导航