- 博客(11)
- 资源 (1)
- 收藏
- 关注
原创 写多线程时遇到的坑
语言:c 相关库:pthread.h 编译 gcc lab.c -o lab -lpthread 各个线程跨行乘 pthread_create的时候传func的参数 弄成数组的形式(可能跟地址有关? 上面两个问题都不知道原因 还要思考一下... ...
2019-04-29 10:41:50
202
原创 F - Largest Rectangle in a Histogram(HDU-1506)
题意:给若干个矩形,宽度均为1,求最大矩形面积。 分析:对于一个位置i来说,只要知道左边相邻的比它高的矩形的最大跨度和右边相邻的比它高的矩形的最大跨度,就可以求出以h[i]为高度的最大矩形面积。暴力是妥妥tle的,其实可以有dp的思路。 dp做法其实也是从前面开始扫一遍求有一个关键点,就是若h[i]l数组记录相邻最左比它高的矩形的下标)。 for(int i=1;i<n;i++){
2017-02-19 18:21:03
228
原创 期望dp(HDU - 4405)
题意:玩飞行棋。。掷到几就走几步直到走到终点,其中有很多暗道,可以直接飞过去。求到终点掷色子的次数的期望。 这道题其实不难,思路差不多想到,但是求的时候完全写不出来。后来知道求期望一般是从最后往前推,(求概率一般是从前往后推),答案是第一个状态。 dp[i]代表从i处到终点需要掷色子的次数的期望,那么对于下一个状态来讲,每个值各有1/6的可能性,即: for(int j=1;j<=6
2017-02-18 08:28:25
328
原创 区间dp(POJ - 1141)
题意:就是'[' ']' '(' ')'的配对,求需要增加的最少的个数。区间dp。 第一次接触区间dp,最想吐槽的是输出。。感觉整个人都弱爆了。。然后中间有个地方if不加花括号的锅,导致我最后对着人家的代码还找不到自己错在哪里wa到怀疑人生。。 弄懂了以后我还是觉得蛮有趣(毕竟我那么菜看什么都有趣。。)。主要思路就是对于[i,j]这个区间,若是全部匹配那ok很好,但是如果有不匹配的,找
2017-02-18 08:14:46
233
原创 动态规划LCS问题( HDU - 1159 Common Subsequence)
题意:最长公共子集裸 求解LCS问题的解法描述网上有很多很详细的,不过几乎都差不多。大概就是,公共子集Z中,对于zi有三种可能: 1.zi=xk=yj,则dp[k][j]=dp[k-1][j-1]+1; 2.zi=xk&&xk!=yj或者zi=yj&&yj!=xk,这个时候归为一条式子即 dp[k][j]=max(dp[k-1][j],dp[k][j-1]); 当然还存在全不相等的
2017-02-18 07:48:23
218
原创 最大连续子序列(HDU - 1231)
题意:最大连续子序列裸 思路很简单,其实就是枚举,对于第i个数,考虑dp[i-1]+num[i]和num[i]的大小,即,是跟着前面一起玩呢还是另起一家->dp[i]=max(dp[i-1]+num[i],dp[i]),每次都尝试更新答案,即可求得最大值。 if(dp[i-1]>0){ dp[i]=dp[i-1]+num[i]; }else{ dp[i
2017-02-18 07:24:18
231
原创 LIS问题(POJ - 3903 Stock Exchange)
题意:LIS裸题 关于最长上升子序列有段时间看了很多解法,关键是要选择较小的那个插入序列中(如1423长度为2的有14 12 这个时候应选择12因为2比4小这样后面才有可能最长) 当新加入元素时,若大于末端元素,则直接加在后面;若小于,则在序列中找到第一个不小于它的数字尝试更新,维护子序列的最优。 LIS的代码网上有很多,但是有一次看到某场比赛师兄给的题解以后觉得网上写的都好
2017-02-18 06:01:31
443
1
原创 完全背包(HDU - 1114 Piggy-Bank)
额似乎一直忘记了解释题意和梳理思路。。我就说怎么那么奇怪。。 这道题其实就是问,给你几种面值的钱,每种无限取,求达到重量时的最小总金额值。 完全背包裸题。 注意正着循环。还有当dp[amount]=INF(初始值)的时候代表无法达到该重量 #include #include #include #include #include #include #include #include #de
2017-02-18 05:33:33
458
原创 并不是很多重背包的多重背包(HDU - 2191 悼念汶川大地震。。
之所以取这个标题,是因为我做的时候根本不知道多重背包什么。。就是很单纯的把它拆成01背包。。强行过了。。然后看题解的时候觉得莫名其妙。。 不是太明白裸多重背包数据那么水要干嘛 这里的做法是把问题化为01背包和完全背包 对第i件物品: 1.若总额不超过拥有金额,则把第i个物品拆成2、4、8。。。利用了位运算(这个真的用很多耶 化为01 背包 //但是拆完以后别忘了把权数乘上去,还有最后剩一
2017-02-17 22:31:33
170
原创 从01背包开始(HDU - 2602 Bone Collector)
最开始接触01背包一直搞不懂。。后来自己跟着解题思路在纸上走了一遍马上就明白了 基本思路其实就是以最优的方式回答这个问题:第i件物品应该放入背包中吗? 二维数组的就不放了,直接放空间优化过的代码。需要注意的是第二层循环要倒着来,看了讲解说是为了防止一件物品被放多次,其实不太明白。我的理解就是拿着那么多钱然后一点点被花掉。。。 #include #include #includ
2017-02-17 22:22:41
157
原创 第一篇博客
这个学期从完完全全的一个小白到稍微学了一点c/c++知识水过院ACM选拔赛接下来要开始为期10天的集训啦。 集训的内容: 图论(2天): 图的基本概念,建图方法(邻接矩阵,邻接链表,前向星); BFS和DFS; 最短路:Dijkstra,Bellman-Ford,Floyd,SPFA,差分约束; 最小生成树:Prim,Kruskal; 树:dfs序,LCA; 其他图算法:拓扑排序,
2017-01-09 09:21:03
229
2
混合算法 护士排班
2018-10-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人