上一页 1 ··· 98 99 100 101 102 103 104 105 106 ··· 121 下一页
摘要: 题目链接:http://www.codeforces.com/problemset/problem/5/C思路:如果str[i]=='(',那么入栈;否则如果str[i]==')',我们用一个p来保存i的位置;否则就是str[i]==')'的情况了,首先当然是出栈了,然后就是求更新。具体就代码:View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #include<stack> 5 using namespac 阅读全文
posted @ 2013-05-03 23:39 ihge2k 阅读(203) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3605题意:世界末日即将到来,地球上有n个人想转移到m个外星球,但是不同的人适应于不同的星球(1个人可适应多个星球),每个外星球都有人数的限制,现在给你星球人数的上限。还有每个人不同的适应情况。问,能否安排所有的人都成功地转移到外星球上。思路:多重匹配。。。View Code 1 #include 2 #include 3 #include 4 using namespace std; 5 #define MAXN 100000+10 6 #define MAXM 12 7 8 bool map.. 阅读全文
posted @ 2013-05-03 21:09 ihge2k 阅读(195) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2553哎,不说了,打表过的,直接搜的话,TLE..View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 //#define MAXN 22 6 //int num[MAXN]; 7 //bool mark[3][MAXN]; 8 int sum,n; 9 10 /*11 void dfs(int row){12 if(row==n 阅读全文
posted @ 2013-05-03 19:27 ihge2k 阅读(165) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2883思路:这道和hdu 3572很像http://www.cnblogs.com/wally/archive/2013/05/03/3056726.html。这里也一样,我们选择0为源点,然后源点和顾客之间连边,容量为(ni*ti),然后,将每个顾客要求的时间区间看成点(由于区间可能覆盖),因此,我们可以直接对起始时间和结束时间进行排序,然后去掉重复的。这样假设我们排序后得到count个时间点,这样就有2*count-1个时间区间了,于是我们可以对每个时间区间与汇点连边,此时汇点为(vt=n+co 阅读全文
posted @ 2013-05-03 17:31 ihge2k 阅读(851) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3572先说一下题意:有M个机器,有N个任务。每个任务必须在Si 或者以后开始做,在Ei 或者之前完成,完成任务必须处理Pi 个时间单位。其中,每个任务可以在任意(空闲)机器上工作,每个机器的同一时刻只能工作一个任务,每个任务在同一时刻只能被一个机器工作,而且任务做到一半可以打断,拿去其他机器做。问:能否在规定时间内把任务做完。思路:建图是关键,我们可以选择0为源点,然后源点与每个任务都连一条边,容量为要求的天数p,然后每个任务都与相应的时间点连边,边容量为1,最后我们要确定汇点,汇点可以取vt=ma 阅读全文
posted @ 2013-05-03 15:12 ihge2k 阅读(1578) 评论(0) 推荐(0)
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549最大流基础题。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define MAXN 22 6 #define inf 1<<28 7 int map[MAXN][MAXN]; 8 int pre[MAXN]; 9 int level[MAXN];10 int gap[MAXN];11 12 int SA 阅读全文
posted @ 2013-05-03 11:38 ihge2k 阅读(470) 评论(0) 推荐(0)
摘要: 终于决定开始学习网络流了=.=<<图论算法理论、实践与应用>>那本书讲了很多关于求最大流的算法,然后我就只挑了一种传说中神奇的SAP算法学习。首先引入几个新名词:1、距离标号:所谓距离标号,就是某个点到汇点的最少的弧的数量(即边权值为1时某个点到汇点的最短路径长度)。设点i的标号为level[i],那么如果将满足level[i]=level[j]+1的弧(i,j)叫做允许弧,且增广时只走允许弧。2、断层(本算法的Gap优化思想):gap[i]数组表示距离标号为i的点有多少个,如果到某一点没有符合距离标号的允许弧,那么需要修改距离标号来找到增广路;如果重标号使得gap数组 阅读全文
posted @ 2013-05-03 11:05 ihge2k 阅读(3526) 评论(3) 推荐(0)
摘要: 题目链接:http://poj.org/problem?id=1037理解了牛人的代码才明白的,花了一晚上的功夫,orz....跪dp.思路:dp[len[i][0]表示长度为len的以i开始的前两个下降的序列的个数,dp[len][i][1]表示长度为len的以i开始的前两个上升的序列的个数;则有dp[len][i][0]+=dp[len-1][j][1](j<i);dp[len][i][1]+=dp[len-1][j][0](j>i);预处理之后,把序列求出来就可以了(这是难点);做法:由于不知道开始是上升还是下降,这一开始枚举,确定第1位的数,以及升降情况,然后我们就可以根据 阅读全文
posted @ 2013-05-02 23:20 ihge2k 阅读(1160) 评论(0) 推荐(0)
摘要: 题目链接:http://www.codeforces.com/problemset/problem/4/B思路:一开始我看数据也不大,然后就dfs暴搜了一下,orz.....,TLE,然后看了别人的贪心策略,佩服得五体投地啊!!!可以先把Min,Max求出来,然后从第一个MAX[i]开始减,边界条件为MAX[i]>MIN[i]&&r>sum;View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 i 阅读全文
posted @ 2013-05-02 20:14 ihge2k 阅读(182) 评论(0) 推荐(0)
摘要: 题目链接:http://www.codeforces.com/problemset/problem/3/D思路:贪心+调整,?就改成')',如果加了')'后发现右括号比左括号多,就将花费小的括号变成'(',(采用优先队列,默认排序是从大到小);View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 #include<cstring> 5 using namespace std; 6 typedef long long 阅读全文
posted @ 2013-05-02 18:35 ihge2k 阅读(177) 评论(0) 推荐(0)
上一页 1 ··· 98 99 100 101 102 103 104 105 106 ··· 121 下一页