vijos 1037 ***】的更多相关文章

链接:点我 #include <cstdio> #include <cstring> #include <algorithm> #include <iostream> using namespace std; + ; + ; ][v]; int main() { int i, j, k; cin >> N; ; i < N; ++i) { cin >> num[i]; sum += num[i]; } memset(dp, -,…
描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块水晶有一个高度,他想用这N块水晶搭建两座有同样高度的塔,使他们成为一座双塔,Mr. F可以从这N块水晶中任取M(1≤M≤N)块来搭建.但是他不知道能否使两座塔有同样的高度,也不知道如果能搭建成一座双塔,这座双塔的最大高度是多少.所以他来请你帮忙. 给定水晶的数量N(1≤N≤100)和每块水晶的高度H…
描述 2001年9月11日,一场突发的灾难将纽约世界贸易中心大厦夷为平地,Mr. F曾亲眼目睹了这次灾难.为了纪念“9?11”事件,Mr. F决定自己用水晶来搭建一座双塔. Mr. F有N块水晶,每块水晶有一个高度,他想用这N块水晶搭建两座有同样高度的塔,使他们成为一座双塔,Mr. F可以从这N块水晶中任取M(1≤M≤N)块来搭建.但是他不知道能否使两座塔有同样的高度,也不知道如果能搭建成一座双塔,这座双塔的最大高度是多少.所以他来请你帮忙. 给定水晶的数量N(1≤N≤100)和每块水晶的高度H…
1.        资源问题1-----机器分配问题F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2------01背包问题F[I,j]:=max(f[i-1,j-v]+w,f[i-1,j]); 3.        线性动态规划1-----朴素最长非降子序列F:=max{f[j]+1} 4.        剖分问题1-----石子合并F[i,j]:=min(f[i,k]+f[k+1,j]+sum[i,j]); 5.        剖分问题2-----多…
1.        资源问题1 -----机器分配问题 F[I,j]:=max(f[i-1,k]+w[i,j-k]) 2.        资源问题2 ------01背包问题   F[I,j]:=max(f[i-1,j-v]+w,f[i-1,j]); 3.        线性动态规划1 -----朴素最长非降子序列   F:=max{f[j]+1} 4.        剖分问题1 -----石子合并 F[i,j]:=min(f[i,k]+f[k+1,j]+sum[i,j]); 5.       …
题目链接: https://vijos.org/p/1037 题目大意: 给n块砖的长度(n<=100),问从中任选m块砖能否建成2个相同高度的塔. 能的话求最高高度,不能输出 Impossible . 题目思路: [动态规划] 想了好久f[i][j]表示前 i 块砖较矮的塔高度为 j 时 塔的差距,结果发现推不出状态. 后来改了,f[i][j]表示前 i 块砖差距为 j 时 较矮的塔的高度,那么有4种情况. ①不取  ②取完放到高的  ③取完放到矮的但是矮的依旧矮  ④取完放到矮的矮的变成高的…
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; const int N = 1013; const int M = 40003; const int…
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已知多项式方程: $$a_0+a_1x+a_2x^2+...+a_nx^n=0$$ 求这个方程在[1, m]内的整数解(n 和 m 均为正整数). 输入格式 输入共 n+2 行. 第一行包含 2 个整数 n.m,每两个整数之间用一个空格隔开. 接下来的 n+1 行每行包含一个整数,依次为$a_0,a_…
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为\(H_i\),城市\(i\)和城市\(j\)之间的距离\(d(i,j)\)恰好是这两个城市海拔高度之差的绝对值,即\(d(i,j) = |H_i - H_j|\). 旅行过程中,小$A$和小$B$轮流开车,第一天小$A$开车,之后每天轮换一次.他们计划选择一个城市$S$作为起点,一直向东行驶,并且…
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊QAQ一上午花了2h+写这道题,最后WA了2个点,调了一下午多. 在矩形一条边上的所有位置都是等效的,所以把每个矩形的四条边拆开,表示为点.每个点只会连出去一条边,暴力找边建图,最后跑堆优dij. 时间复杂度\(O(n^2)\)(附带大常数16一脸不可过?不过最后竟然过了) 一开始认为有环爆搜不可做…
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ 题解详见2009年的论文徐源盛<对一类动态规划问题的研究>. 这道题我第一眼一脸懵逼... 然后持续懵逼... 最后看论文里的题解 我再来重复一下(论文绝对比我讲得详细QAQ) 首先\(R(i)=C_i+k\sum_\limits{j=1}^wR(p_j)\) 如果是单纯的一棵树,那么从孩子传到…
题目:http://hihocoder.com/problemset/problem/1037 一个迷宫有n层,第 i 层有 i 个房间 从第i层的第i个房间(i, i)可以走到第i+1层的第i个房间或第i+1房间(i+1, i)/(i+1, i+1) 每个房间走出去后都不能回头 样例输入 5 //迷宫的层数 2 6 4 1 2 8 4 0 9 6 6 5 5 3 6结果: 28思路动态规划maze[i, j] = max(maze[i-1, j], maze[i-1, j-1]) 源码 迭代方…
a { text-decoration: none; font-family: "comic sans ms" } .math { color: gray; font-family: Consolas } 描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记.因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作…
Description 公元 2044 年,人类进入了宇宙纪元.L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连通了 L 国的所有星球.小 P 掌管一家物流公司, 该公司有很多个运输计划,每个运输计划形如:有一艘物流飞船需要从 ui 号星球沿最快的宇航路径飞行到 vi 号星球去.显然,飞船驶过一条航道是需要时间的,对于航道 j,任意飞船驶过它所花费的时间为 tj,并且任意两艘飞船之间不会产生任何干扰.为了鼓励科技创新, L 国国王同意小 P 的物流…
描述 校门外有很多树,有苹果树,香蕉树,有会扔石头的,有可以吃掉补充体力的--如今学校决定在某个时刻在某一段种上一种树,保证任一时刻不会出现两段相同种类的树,现有两个操作:\(K=1\),读入\(l,r\)表示在区间\([l,r]\)中种上一种树,每次操作种的树的种类都不同\(K=2\),读入\(l,r\)表示询问\([l,r]\)之间能见到多少种树\((l,r>0)\) 输入格式 第一行$n,m$表示道路总长为$n$,共有$m$个操作接下来$m$行为$m$个操作 输出格式 对于每个$K=2$输…
http://codevs.cn/problem/1037/ Alice必胜是Alice将硬币移向边权为0的一端并且把经过的边变为0,让BoB无路可走. 这样只要起点到两个方向最近的0边权的端点的边数有一个是奇数即可. 如果都是偶数,那么考虑都是0,Alice一开始就输了.如果有不是0的,那么Alice任意走一步,都能转化为BoB的必胜状态. 判断奇偶就可以啦~ #include<cstdio> #include<cstring> #include<algorithm>…
不知怎地竟有种错觉此题最近做过= =目测是类似的?那道题貌似是纯动归? 本来今晚想做两道题的,一道是本题,一道是P1653疯狂的方格取数或NOI08 Employee,看看现在的时间目测这个目标又达不成了. 不过至少还是有收获的,虽然现在越来越觉得我做题的时间难以估摸了. 本来纯粹是以复习线段树(喂喂你本来就没码过几遍!)的心态来做这道题的,现在发现(1)我的基础好糟糕(2)这题其实不简单! 至今觉得我不用build_tree,直接维护树导致过程的参变很多这事儿有点麻烦,写个过程要传这么多变量,…
https://vijos.org/p/1892 此题需要手动开栈: <<; //256MB char *p=(char*)malloc(size)+size; __asm__("movl %0, %%esp\n" :: "r"(p)); 还需要卡评测机←十分的神 卡了30多次评测机终于屈服了,一开始我盲目乱提交,总是T,后来上网找了一下解决卡常数方法,如下: 解决卡常数的方法比较多样化,主要有重复交题,拼人品让测评机快一点,在代码末尾加上//orz+神…
题目链接: https://vijos.org/p/1100 题目大意:NOIP著名的加分二叉树.给出一棵树的中序遍历,加分规则左子树*右子树+根.空子树分数为1.问最大加分的树结构,输出树结构的先序遍历. 解题思路: 先从小的问题看起. 对于一棵子树,只要知道根是啥,就能轻松求出这棵子树的加分情况. 那么就变成枚举根的区间DP问题. 由于要输出先序遍历,则用m[i][j]记录在i~j区间选择的根. 区间DP边界: ①一个点情况:即无左右子树,dp[i][i]=node[i],m[i][i]=i…
题目链接: https://vijos.org/p/1180 题目大意:选课.只有根课选了才能选子课,给定选课数m, 问最大学分多少. 解题思路: 树形背包.cost=1. 且有个虚根0,取这个虚根也要cost,所以最后的结果是dp[0][m+1]. 本题是cost=1的特殊背包问题,在两个for循环上有一个优化. for(f+1...j....cost) for(1....k...j-cost) 其中f为当前已经dfs子结点个数.之所以+1,是因为根要预留一个空间. f+=dfs(t),dfs…
题目链接:https://vijos.org/p/1218 算法:环形DP+划分型DP 环形DP的思路很简单,将1~n中每一个节点当成起点进行划分型DP即可,关于划分型DP前面论文有介绍~查找tag把~ sxbk!sxbk...此题那么水卡了我3个小时...变态...到头来发现是初始化.!!!!!!! 但我也学到了不少东西~ #define oo (~(unsigned long long)(0)>>1) 替代了 maxlongint, 将oo+1即可得到负的最大值 负数的mod是将它mod后…
题目链接:https://vijos.org/p/1792 算法:DP 看到这题真的一点不会...只能爆搜一下..但太太慢了..看了题解后,听说是分组背包??不知道.. 好吧,,还是百度了下题解,渐渐明了.. 我们用f(i, j)来表示前i种花摆j盆的最大方案数,可以推得 f(i, j) = sum{ f(i-1, j-k) | 0<=k<=a[i], 其中a[i]为i种花的盆数 } 在这里,我们可以简化为一维的~ f(j) = sum{ f(j-k) | 0<=k<=a[i],…
题目链接:https://vijos.org/p/1431 算法:贪心 描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去.到那时,岛上的所有人都会遇难.守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的.庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.守望者的魔法值恢复的速度为4点/s,只有处…
题目大意: 给出N种木棍(每种木棍数量无限)的长度(<=3000),每根木棍可以把它切掉[1,M]的长度来得到新的木棍. 求最大的不能被组合出来的长度. 如果任何长度都能组合出来或者最大值没有上限输出-1.    (1<N<100, 0<=M<3000), 解题过程: 1.这题就是USACO 4.1的麦香牛块 ,只不过 数据 加强了下. 当时就把它当做 背包 来做,然后确定一个较大的范围(当时就选了60000),求出这个范围里的长度能否都被组合出来,如果能就输出-1. 否则输…
昨天早上上课讲旅行商问题,有点难,这周抽空把3^n的算法码码看.不过这个简化版已经够折腾人了. 其一不看解析不知道这是双进程动态规划,不过我看的解析停留在f[i,j]表示第一个人走到i.第二个人走到j,且1~max(i,j)的都走过的最短路,后面的动态转移方程是我自己写的,不过我的貌似和别人的不太一样? 其二不知道为什么坐标改成real类型就不会207了,这可是个bug?纠结了我一晚上啊昨晚又熬夜了今天早上物理课又打瞌睡了…QAQ 其三给ans或者f数组赋初值不能写maxlongint一定要1e…
做完Victoria的舞会3,挑了vijos里强连通分量里面难度值最低的题目,也就是这道.先把第一小问做了,纯Tarjan,只是我学的时候的标程是用邻接表的,这题数据小于是用了邻接矩阵,两者之间的切换花了点时间,我天真地以为i<j等价于i的时间戳小于j的了,呵呵,那时候天真地连d数组都没写… 第二问看别人写了是用n次dfs?我多念了几遍题这**不就是明星奶牛么…感觉这两题基本都没什么差别.放假前老师给明星奶牛的评价是,做了这题图论基本复习了一遍…好吧,是啊,我把书翻出来,敲了一遍拓扑排序… 写完…
第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫.看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢?hash也很久没写了,导致自己测试的时候有两个点没过是因为hash弄错了. 我的程序里f[x]= same[x] (x<=max) = diff[x-max] (x>max) 总算,最后还是通过了.又是一道想不到思路就写不出的题.据说这题和食物链很像,那么食物链就是我的下一个目标~总感觉并查集是有…
DP orz iwtwiioi 这种题居然是DP……原来统计方案数是可以用动态规划来做的啊= =用一些变量来维护一些信息,保证方案可行性/合法性 人太弱实在是有些忧伤…… /************************************************************** Problem: 1037 User: Tunix Language: C++ Result: Accepted Time:460 ms Memory:42660 kb ***************…
#1037 : 数字三角形 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 问题描述 小Hi和小Ho在经历了螃蟹先生的任务之后被奖励了一次出国旅游的机会,于是他们来到了大洋彼岸的美国.美国人民的生活非常有意思,经常会有形形色色.奇奇怪怪的活动举办,这不,小Hi和小Ho刚刚下飞机,就赶上了当地的迷宫节活动.迷宫节里展览出来的迷宫都特别的有意思,但是小Ho却相中了一个其实并不怎么像迷宫的迷宫——因为这个迷宫的奖励非常丰富~ 于是小Ho找到了小Hi,让小Hi帮助他获取尽可能多的…
可持久化线段树 这次是询问一段区间内权值 在给定范围内的点的数量,同样是可持久化线段树简单操作…… //Vijos 1923 #include<vector> #include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define rep(i,n) for(int i=0;i<n;++i) #defin…