上一页 1 2 3 4 5 6 7 ··· 9 下一页

2014年6月7日

CodeForces 424D: ...(二分)

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

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

2014年6月5日

CodeForces 141E: ...(最小生成树)

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

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

2014年5月3日

[日后思路重温系列]

摘要: ZOJ 2978 计算几何 阅读全文

posted @ 2014-05-03 22:28 ShineCheng 阅读(112) 评论(0) 推荐(0) 编辑

2014年4月20日

[日后重做系列] 2014-04-20

摘要: zoj 3781 Paint the Grid Reloaded zoj 3779===================================zoj 3779 解法简记(反选可见):可以看成4个4*4的方格(答案可以两次开方)然后解决以下问题:n个颜色,涂4*4的方格,要求颜色必须都用,问... 阅读全文

posted @ 2014-04-20 20:08 ShineCheng 阅读(270) 评论(0) 推荐(0) 编辑

2014年4月9日

HDU 2767:Proving Equivalences(强连通)

摘要: 题意:一个有向图,问最少加几条边,能让它强连通方法:1:tarjan 缩点2:采用如下构造法: 缩点后的图找到所有头结点和尾结点,那么,可以这么构造:把所有的尾结点连一条边到头结点,就必然可以是强连通了。如果说有几个结点不连通,那么让他们的尾结点相互只向对方的头结点就好了。那么,最后的答案就是,头结点和尾结点中比较小的那个数量。当然,如果缩点后只有一个点,那么就是0;代码:#include #include #include #include using namespace std;#define N 20010using namespace std;vector to[N];vector . 阅读全文

posted @ 2014-04-09 22:03 ShineCheng 阅读(140) 评论(0) 推荐(0) 编辑

POJ 2828: Buy Tickets(线段树)

摘要: 扯淡:这题要赞。因为卡了我两次……第三次终于做出来了。。。好吧是看了别人代码之后T T。太弱太弱。。。题意:有n个人排队,但他们会插队。他们按先后顺序来到,每次每个人选择插在Pos[i]这个位置,问最后的排队情况(每个人用其val值表示)。(1 ≤ N ≤ 200,000) 思路:容易想到,最后一个人,插哪,那它就在哪。也就是说,一个人的最后位置,只会被它后面的人影响到。再分析,就会发现,如果一个人插在Pos[i]这个位置,那么表示,它插入的时候,前面有Pos[i]个人(废话)。那么我们倒着计算的时候,由于他后面的人已经进来了,那么第i个人站的实际位置,是在它前面还有pos[i]个空位的位置( 阅读全文

posted @ 2014-04-09 14:38 ShineCheng 阅读(147) 评论(0) 推荐(0) 编辑

2014年3月31日

HRBUST 2078:糖果(模拟,贪心)

摘要: 题不难,但作为一道恶心到了我的题,我还是记录一下的好。题意:n个人围一圈,要求:相邻两人,分数高的要比分数低的得到更多的糖果,若分数相同则必须得到相同数量的糖果。问满足要求的最少需要分配的糖果数。(N#include #include using namespace std;#define N 1000010struct AA{ int id; int v; int num;}a[N], stk[N];bool cmpV(const AA &a, const AA &b) { return a.v 1 && stk[top-1].v == stk[0].v) { 阅读全文

posted @ 2014-03-31 19:11 ShineCheng 阅读(248) 评论(0) 推荐(0) 编辑

2014年3月26日

大视野 1016: [JSOI2008]最小生成树计数(最小生成树)

摘要: 总结:此类题需要耐心观察规律,大胆猜想,然后证明猜想,得到有用的性质,然后解答。 简单的说:找隐含性质。传送门:http://61.187.179.132/JudgeOnline/problem.php?id=1016 题意:n个点m条边的图,问其最小生成树的个数(只要有一条边不同,就算不同)。n#include #include using namespace std;#define mod 31011#define N 200struct Edge{ int a, b, c; bool operator >=1; } ... 阅读全文

posted @ 2014-03-26 19:40 ShineCheng 阅读(300) 评论(0) 推荐(0) 编辑

2014年3月25日

HRBUST 2064:萌萌哒十五酱的宠物~(最近公共祖先LCA)

摘要: 题意:一个n个点的树,询问某两点之间的简单路径,问路径上任选三边能否组成一个三角形。 N= A[i-1] + A[i-2];观察可以发现其增长类似斐波那契,又因为权值=45个时,必然可以组成三角形。剩下的,就暴力一下就好了。确定路径边的个数的方法是深度结合lca来做。暴力的话就是两点向上攀,直到公共祖先。然后sort一下,然后检查是否存在 A[i] #include #include using namespace std;#define N 100010struct BCJ{ int fa[N]; void init(int n) { for (int i = 0;... 阅读全文

posted @ 2014-03-25 19:47 ShineCheng 阅读(212) 评论(0) 推荐(0) 编辑

HRBUST 2072:萌萌哒十五酱的礼物~(树,字典树)

摘要: 题意:n个点的一棵树,树的边上有权值。一条路径的权值定义成这条路径上所有边的权值的xor。问所有路径的最大权值是多少。思路:首先,树上任意两点之间的路可以表示成 这两点到根节点的路- 其最近公共祖先到根节点的路*2.那么这里如果是用xor操作,重复的那部分正好就没了。深搜一边,得出所有点到根节点的权值,这样问题就边成了n个数字,将其中两个xor,问得到的最大值是什么。然后这里我卡住了……实际上做法非常……用字典树记录所有这些树(二进制),然后对每一个数,去找现在存在的和它xor之后答案最大的那个数。暴力完n个数就得到答案= =……坑:深度太深爆栈了。只能自己写。用栈模拟了递归,但感觉又不像是深 阅读全文

posted @ 2014-03-25 19:04 ShineCheng 阅读(230) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 9 下一页

导航