- 博客(28)
- 资源 (8)
- 收藏
- 关注
原创 UVALive - 4764 Bing it dp
题目链接思路:水dp,记录每一个数其上一个相同数的前驱,对于新来的这个数,如果前面有这个数出现过,那么就可以得分,并维护该点得分与不得分的与前面的最大值.#includeusing namespace std;const int maxn=1e5+10;int pre[maxn],dp[maxn];int main(){ int n; while(scanf("%d",&n)
2017-04-27 23:25:12 513
原创 蓝桥杯 算法训练 乘积最大 dp
题目链接思路: 这个题的话我的做法就是dp[i][j] 表示前i个字符添加j个乘号的最大值,那么可得出如下转移方程:dp[i][j]=max(dp[i][j],dp[w][j-1]+get(w+1,i));这个题的话我感觉应该longlong也存不下,可能因为蓝桥的数据很水所以就过了,java大数的写法后期再补.#include#define Ri(a) scanf
2017-04-26 23:04:29 1213
转载 默慈金数
感谢大佬~!今天,我来讲一种比较特殊的数,可能很多人都没有听过这种数,它叫默慈金数。但事实是它早就已经进入了ACM竞赛中了。好了,接下来让我们一起来认识它,并会讲述一些它的重要应用。 在百度百科上,是这样定义默慈金数的:一个给定的数的默慈金数是在一个圆上的个点间,画出彼此不相交弦的全部方法的总数。比如为4时,方法数为9,如下图
2017-04-26 14:38:55 632
原创 数学定理及部分代码(长期更新)
1.卡特兰数前几项为:1, 1, 2, 5, 14, 42, 132,catalan数满足递推式[1] :h(n)= h(0)*h(n-1)+h(1)*h(n-2) + ... + h(n-1)*h(0) (n>=2)h(n)=h(n-1)*(4*n-2)/(n+1);h(n)=C(2n,n)/(n+1) (n=0,1,2,...)h(n)=c
2017-04-26 14:35:57 618
原创 UVALive - 5012 Rescue/hdu3717 二分+思维
题目链接题意:告诉n个石头,然后现在要用至多k个魔法球把石头全部消灭,问每个魔法球的魔力值至少要是多少。每次在消灭石头的时候,可以选择站在一个石头的右侧,然后向左边扔一个魔法球,比如站在第i个石头右侧,那么对于第j个石头,会带来max( 0,p-(i-j)*(i-j) )点伤害,只有当一个石头的伤害值小于0的时候它才算完全被消灭。消灭后它不会消失,还会在那个位置 思路:像这
2017-04-26 14:21:31 334
原创 关于我的电脑安装了 eclipse 出现Failed to load the JNI shared library 的解决
好不容易搞完了jdk配置,配置jdk就是需要新增几个系统变量 PATH CLASSPATH JAVA_HOME ;然后win+r 输入cmd 输入java javac 检查配置是否完成.然后我安装了eclipse软件 打开后显示Failed to load the JNI shared library 上网一查才知道可能是自己下载的jdk 和 eclipse 的位数不匹配 一个为32b 一
2017-04-24 18:13:08 642
转载 WIN10 怎么配置java环境变量
工具/原料windows10jdk-8u51-windows-x64.exe方法/步骤1、首先,点击进入JDK官网。2、进入官网过后,同意协议,并下载对应版本的JDK,64位电脑的下载X64的,32位电脑下载i586的。3、点击下载,并下载到你选择的下载文件中。4、在下载文件中,双击下载的可执行文件jdk-8u51-w
2017-04-24 18:01:33 1467
原创 ZOJ - 3962 Seven Segment Display 数位dp
题目链接题意:给出一个16进制数,自身+n-1。超过FFFFFFFF后从0开始算。每个数的贡献如图所示。问贡献和为多少。 思路: 刚接触数位dp,队友说是数位dp还让我给否定了...惭愧...(PS: 0x 十六进制 0 八进制)对于这个题我们需要注意的就是如果超过0xffffffff的话 需要用solve(0xffffffff)-(solve(l-1)-solve(r)
2017-04-23 20:56:32 413
原创 Gym 101246E Kidnapping 递推or dfs 优化
题目链接题意:抓劫匪的题,最后总结为有n条路,a[x][y]表示第x条路与第y条路之间的距离,由于绑匪将人绑着,所以人只能计算出走的路程给出计算的路程问最后到达的劫匪窝点可能是那条街(每次都是从第一条路开始)思路:这个题的话可以有两种写法,一个是递推,即从这一步可以走的点开始,按照距离去寻找可以走到的下一个点并标记,在赋值回来依次递推,直到最后所有被标记的点就是可能的点.#
2017-04-23 20:49:27 397
原创 hdu 1024和hdu 1244 两个最大和子序列 dp 优化
hdu 1244 题目链接思路:dp[i][j] 表示前i个数(包括第i个数)取了j段的最大和,则转移方程为 dp[i][j]=max(dp[i-1][j],dp[i-b[j]][j-1]+s[i]-s[i-b[j]])#include#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld", &a)#define Rf
2017-04-22 22:55:41 634
原创 hihocoder 1142 三分法求极值
题目链接 思路:直接一个裸的三分,第一次接触三分 就此机会学习一下,三分的复杂度也是log级别的.在之前的几周中我们了解到二分法作为分治中最常见的方法,适用于单调函数,逼近求解某点的值。但当函数是凸形函数时,二分法就无法适用,这时就需要用到三分法。从三分法的名字中我们可以猜到,三分法是对于需要逼近的区间做三等分:我们发现lm这个点比rm要低,那么我们要
2017-04-22 22:35:11 721
原创 POJ 1661 Help Jimmy dp
题目链接思路: 对于这种有两种走法的我们需要进行两个状态的dp,也就是说一个表示从左到地面的最小值,一个是从右到地面你的最小值,然后维护二者的最小值.还是那句话,对于起始位置确定的末位置不确定的我们一般倒着往前dp,最后直接输出起始位置的最小值就好dp[i][0]表示第i个平台从左走到地面的最小值,dp[i][1]表示从右走到地面的最小值.对于这个题还有很多需要
2017-04-22 21:36:51 342
转载 hdu 1029 B - Ignatius and the Princess IV 思维
题目链接大体题意就是让你输出奇数个数的数列中出现次数大于 n/2的那个 我记得类似的题目啊哈的最后出现过,我们肯定首先想到的就是排序然后输出中间那个,但是这样的复杂度是快排为nlogn,那么我们有没有线性的方法呢?有一个比较好的方法就是 我们可以利用该数出现n/2 的性质,那么我们每次删除数组中的两个数,一直删到最后留下的就一定是那个出现次数超过n/2的那个#inclu
2017-04-22 21:20:26 360
原创 hdu 1176 免费馅饼 dp
题目链接思路: 本人也是刚接触dp,所以这个题用了两种方法,但是一种方法当时发现测试数据好像有点水,我自己举了一个样例不对竟然给我ac了 然后又自己改了一下... 像这样起点位置确定了而末位置不确定的我们从后往前倒着dp,这样以便确定最优解,转移方程为 dp[i][j]+=max(dp[i+1][j],max(dp[i+1][j-1],dp[i+1][j+1
2017-04-22 21:02:47 333
原创 Codeforces Round #410 (Div. 2) Mike and gcd problem 思维
题目链接题意:每次可以改变第i和i+1两个数 使他们分别变成 ai-ai+1 ai+ai+1 问你有没有可能使给出的n个数的gcd大于1 能则输出yes和最小步数 否则输出no思路: 对于这个题首先要明白一点题目中不可能出现no的情况,因为对于两个数ai 和ai+1 如果改变两次的话你会发现两个数变成了 -2*ai+1 2*ai 所以也就是说只要改变两次就
2017-04-22 20:36:37 393
原创 Codeforces Round #410 (Div. 2) Mike and distribution 思维
题目链接 题意: 给你 两个长度为n的数组 元素一一对应,要你从中选出k个数,k的个数最多为n/2+1个,使得每个数组k个元素的和大于整个和的一半思路:这个题嘛真的是思维题,转个弯过来真的很水... 既然要满足k个的和大于sum的一半,那么我们可以先按照a的值升序排一个序,保证第一个选上,然后从第二个开始每两个元素当中选择b的值大的那一个,这样就保证了对于
2017-04-22 20:29:37 329
原创 E - Balanced Number HDU - 3709 数位dp
题目链接题意: 找出区间内平衡数的个数,所谓的平衡数,就是以这个数字的某一位为支点,另外两边的数字大小乘以力矩之和相等,即为平衡数思路:数位dp的模板题,dp[pos][x][st]=dp[pos-1][x][st+i*(pos-x)] pos表示第几位的数,第x位支点,st为此时的力矩和。然后按位枚举找出所有可能的情况即可。#include#include#i
2017-04-18 17:08:40 324
原创 hihocoder 1285 智力竞赛 dp 类多重背包问题
题目连接 思路:这个题算是一个类多重背包的问题吧,dp[i][j],表示第i关时回答了j道题至少答对了几道题目;那么对于每一关的积分a[i]我们可以求出所要答对问题的最大值,然后在m道题的范围内枚举答对的次数,用答错题x来补剩余的分数,然后维护这个最小值.#include#define Ri(a) scanf("%d", &a)#define Rl(a) scanf("%lld
2017-04-17 20:24:39 610
原创 ZOJ 3956 Course Selection System 01背包变形
题目链接 题意:给你n个hi, ci,问你怎样拿才能让你 使上面式子最大。 思路:根据上面的式子我们可知,对于一个C值当hi越大,则上面的式子才可能更大一些,又因为题目中C的值很小最多50000,所以我们可以以C为背包容量 c[i]为体积h为价值进行01背包,然后维护一下最大值.真的是很巧妙的问法,当时有想过dp,想到了背包可是没有明确怎么背,,,哎 orz#i
2017-04-13 00:19:48 796
原创 Mars Stomatology Gym - 100765I dp
题目链接题意: 给出n,k,p 代表 坏牙数 棉花数 钱数 给出 棉花价格 给出 补牙价格 补牙所在牙龈 一个棉花可以用于一个牙龈 i代表牙龈,j代表总补牙数,z代表这层的补牙数 思路:dp[i][j]表示前i个牙龈共修j颗牙的花费, 为了求的最大的修牙数我们队每个牙龈上的牙的价钱按照升序排序 优先修最便宜的,记录一下每个牙龈上修牙价钱的前缀和,然后枚举第i个牙龈上修几颗
2017-04-13 00:10:55 508
转载 c/c++中的两个反正切函数
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下。前者接受的是一个正切值(直线的斜率)得到夹角,但是由于正切的规律性本可以有两个角度的但它却只返回一个,因为atan的值域是从-90~90 也就是它只处理一四象限,所以一般不用它。第二个ata
2017-04-04 14:07:26 8404
原创 POJ 2449 Remmarguts' Date A*+spfa求第k最短路
题目链接题意:给你个图 让你求s到t的第k短路\思路:首先讲讲A*算法吧。众所周知,A*算法就是启发式搜索,基本形式就是这样:f(x)=g(x)+h(x);其中f(x)代表在x点所需要的总代价,而g(x)代表:从源点到x点已经耗费的实际代价,h(x)代表从x到终点需要的估计代价,这个函数是一个估计值.而从x到终点真正需要的代价为h*(x),在整个启发式搜索中我们必须
2017-04-04 13:49:54 412
原创 hdu 2577 How to Type dp
题目链接题意:给你一些字符串a~z||A~Z,然后我们按键最少能把他们都打出来,如果开始Cap大写灯是灭的,我们需要打A的话,可以按下cap键,然后再按a,需要两步,但是这下状态变为了大写灯亮,当然我们也可以按下shift,再按下a,需要两步,但是这下状态就变成了大写灯灭。题目要求的是,把这些字母打出来需要的最小按键数目。有一点需要注意,按键完成之后需要使cap键关闭。思路
2017-04-04 12:42:25 530
原创 Wooden Signs dp
题目链接题意:木匠要做N个路标并把它们钉在一起(如图).每个路标可以朝左也可以朝右,但是每个路标的起点要跟下一层路标的起点或终点重合. 重合位置必须有面积覆盖,不能像231右图那种只重合一个点.现在他不记得这些路标各自的朝向了. 但是他记得N+1个值,其中第1个值是第1个路标的终点坐标. 其余为n块的起点,(这里以箭头为头)求可能满足条件的路标有多少种情况. (区别在于各自
2017-04-01 20:59:47 718
原创 A - Overlapping Scenes UVALive - 4994 STL+全排列
题目链接题目描述:就是把几个字符串收尾拼接,可重合的部分去掉。求最小长度。思路:这个题用next_permutation 产生全排列 然后用substr产生子串去判断是否可链接 比写dfs省事多了 我也是通过这个题终于觉得学一下了#include#define PT printf#define SC scanfusing namespace std;cons
2017-04-01 18:23:21 1571
原创 C - Permutation Counting UVALive - 5092 dp
题目链接题意:给出n和m,我们有一个由1~n组成的n个数字的数列a[],如果a[i]>i,我们就把ans++,我们要求出ans==m的数列有多少个。思路:直接按照dp的思想,我们考虑每增加一个数那么它只会是E-VAL的值要么不变 要么增加1那么dp[i][j]就表示第i个数j E-val 的数列个数,可得出此动态转移方程dp[i][j]=(dp[i][j]+(j+1)*
2017-04-01 18:18:30 383
原创 E - The Queue UVALive - 5002 树形dp
题目链接题意:n个人排队,每个人b除CEO外都有一个监督人a,b必须排在a的后面,问有多少排队方案。 思路: 这是一道树形dp和组合数学的题目,当时训练的时候公式推对了 ,但是写的时候想错了...这道题我一看是n个点 n-1个边 又有上下级关系 所以我们就想到可以看成一个树,那么我们dp[i] 表示以i为根节点所能排队的方案数,num[i]表示以i为根节点的字数一共有几个结点,那
2017-04-01 18:12:45 399
原创 C - Underwater Snipers UVALive - 5000 最小值最大化问题 二分
题目链接题意:一条河岸线y=k,y>k区域有n个敌人,现在要在y解法:求最小值最大的问题。二分这个距离,如果距离为x,那么最好是狙击手都站到y=k-x处,可以最大范围地打到敌人。然后check的时候求出每个敌人在y=k-x线上的能够打到他的狙击手范围,为[Xi-sqrt(D^2-(Yi-k+x)*(Yi-k+x),Xi+sqrt(D^2-(Yi-k+x)*(Yi-k+x
2017-04-01 17:58:14 723
中国科学院大学深度学习课程实验作业——电影评论情感分类(代码+实验报告)
2021-03-17
保研/考研准备资料大礼包(经验汇总+个人陈述+个人简历+联系老师+面试+自我介绍+申请表+提交材料+推荐信)
2021-01-21
中国科学院大学深度学习课程实验作业——猫狗分类(代码+实验报告)
2021-01-14
中国科学院大学深度学习课程实验作业——电影评论情感分类(代码+实验报告)
2021-01-14
中国科学院大学深度学习课程实验作业——手写数字识别(代码+实验报告)
2021-01-14
中国科学院大学深度学习课程实验作业——自动写诗(代码+实验报告)
2021-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人