又上锁妖塔 (tower.in/tower.out) [题目描述] 小D在X星买完了想要的东西,在飞往下一个目的地的途中,正无聊的他转头看了看身边的小A,发现小A正在玩<仙剑>,可是小A很奇怪,他一直在锁妖塔的周围转来转去,可是就是不进去,于是小D问他:"你在干什么?怎么不上去?"小A说:"我在想怎么从锁妖塔外面爬上去"(倒-) 锁妖塔的建造很特别,塔总共有n层,但是高度却不相同,这造成了小A爬过每层的时间也不同.小A会用仙术,每用一次可以让他向上跳一层…
挖地雷(Mine) 在一个地图上有N 个地窖(N<=200),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径,并规定路径都是单向的,且从编号小的地窖通向编号大的地窖.某人可以从任一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束.设计一个挖地雷的方案,使他能挖到最多的地雷. [输入格式] N {地窖的个数} W1,W2,--WN {每个地窖中的地雷数} X1,Y1 {表示从X1可到Y1,保证xi小于yi} X2,Y2 -- 0 ,0 {表示输入结束…
花店橱窗布置(FLOWER) 提交文件名:flower 问题描述: 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V是花瓶的数目.花束可以移动,并且每束花用1到F的整数标识.如果I < J,则花束I必须放在花束J左边的花瓶中.例如,假设杜鹃花的标识数为1,秋海棠的标识数为2,康乃馨的标识数为3,所有花束在放入花瓶时必须保持其标识数的顺序,即杜鹃花必须放在秋海棠左边的花瓶中,秋海棠必须放在康乃馨左边的花瓶中.如果…
抢金块 输入文件:gold.in 输出文件:gold.out 问题描述: 地面上有一些格子,每个格子上面都有金块,但不同格子上的金块有不同的价值,你一次可以跳S至T步 .如果S=2,T=4.你就可以跳2步.3步或4步,告诉你这些后,你从第一个格子起跳,必须跳到最后一个格子上,请你输出最多可以获得的金块的总价值. 输入格式: 第一行是格子个数, 第二行是S和T ,保证T大于S. 第三行是每个格子上的金块价值..第一个为第一个格子上的价值,默认从第一个格子起跳,必须跳到最后一个格子上,也就是说第一个…
维修栅栏 问题描述: 小z最近当上了农场主!不过,还没有来得及庆祝,一件棘手的问题就摆在了小z的面前.农场的栅栏,由于年久失修,出现了多处破损.栅栏是由n块木板组成的,每块木板可能已经损坏也可能没有损坏.小z知道,维修连续m个木板(这m个木板不一定都是损坏的)的费用是sqrt(m).可是,怎样设计方案才能使总费用最低呢?小z想请你帮帮忙. 输入格式: 输入文件的第一行包含一个整数n,表示栅栏的长度. 第二行包含n个由空格分开的整数(长整型范围内).如果第i个数字是0,则表示第i块木板已经损坏,否…
钱币兑换(exchange) 问题描述: Dave偶然获得了未来几天的美元(dollars)与马克(marks)之间的兑换率.例如Dave开始有100marks,请编写个程序帮助Dave找出最好的买卖marks或dollars的方案,使Dave最后一天有最多的marks. 输入格式: 输入文件的第一行有个自然数N, 1 ≤ N ≤ 100,表示Dave知道未来兑换率的天数. 下面N行每行有两个被空格分隔的自然数B和S, 100 ≤ B ≤ S ≤ 1000.第(i+1)行表示的和是第 i天的兑换…
垃圾陷阱 (well) 卡门--农夫约翰极其珍视的一条Holsteins奶牛--已经落了到"垃圾井"中."垃圾井"是农夫们扔垃圾的地方,它的深度为D (2 <= D <= 100)英尺. 卡门想把垃圾堆起来,等到堆得与井同样高时,她就能逃出井外了.另外,卡门可以通过吃一些垃圾来维持自己的生命. 每个垃圾都可以用来吃或堆放,并且堆放垃圾不用花费卡门的时间. 假设卡门预先知道了每个垃圾扔下的时间t(0小于t小于等于1000),以及每个垃圾堆放的高度h(1&l…
回文字(palin) 问题描述: 如果一个单词从前和从后读都是一样的,则称为回文字.如果一个单词不是回文字,则可以把它拆分成若干个回文字.编程求一个给定的字母序列,最多要分割成几部分,使每一部分都回文字. 输入格式: 输入文件有且只有一行,包含一个字符串.字符串由小写英文字母组成(a-z),长度不超过100. 输出格式: 输出文件只一行,为最少的回文字个数. 输入 样例1:anaban 样例2:abaccbcb 样例3:anavolimilana 输出 样例1:2 样例2:3 样例3:5 [解题…
蛙人 (ple) 蛙人使用特殊设备潜水.设备中有一个气瓶,分两格:一格装氧气,另一格装氮气.留在水中有时间的限制,在深水中需要大量的氧气与氮气.为完成任务,蛙人必须安排好气瓶.每个气瓶可以用它的重量和含有气体的体积来描述.蛙人要完成任务,就需要特定数量的氧气与氮气.要完成任务,他所需带的气瓶的总重量最少是多少呢? 例如:蛙人有下述五个气瓶.每个气瓶表述为:氧气的体积,氮气的体积(以“升”为单位)和气瓶的重量(以“公钱(10g)”为单位): 3 36 120 10 25 129 5 50 250…
day1:学习seach和回溯,初步了解. day2:深度优化搜索 T1 洛谷P157:https://www.luogu.com.cn/problem/P1157 题目描述 排列与组合是常用的数学方法,其中组合就是从nnn个元素中抽出rrr个元素(不分顺序且r≤n)r \le n)r≤n),我们可以简单地将nnn个元素理解为自然数1,2,-,n1,2,-,n1,2,-,n,从中任取rrr个数. 现要求你输出所有组合. 例如n=5,r=3n=5,r=3n=5,r=3,所有组合为: 123,124…
这算不算泄题啊...被kkk发现会咕咕咕吧. 题目大意:给定一个数列a,与常数n,m,k然后有m个询问,每个询问给定l,r.问在a[l]到a[r]中最少分成几段,使每段的和不超过k,如果无解,输出Chtholly 样例: input: 5 5 72 3 2 3 43 34 45 51 52 4 output: 11122 解答: 首先观察数据范围,n<=1e+6 可能的复杂度为O(mlogn).暴力能搞30分吧. 其实这题还是很妙的.我们先考虑暴力:对于[L,R],设个res,对[l,r]从左往…
翻转游戏(flip) [问题描述] 翻转游戏是在一个 4 格×4 格的长方形上进行的,在长方形的 16 个格上每 个格子都放着一个双面的物件.每个物件的两个面,一面是白色,另一面是黑色, 每个物件要么白色朝上,要么黑色朝上,每一轮你只能翻 3 至 5 个物件,从而由 黑到白的改变这些物件上面的颜色,反之亦然.每一轮被选择翻转的物件遵循以 下规则: 1.从 16 个物件中任选一个. 2.翻转所选择的物件的同时,所有与它相邻的左方物件.右方物件.上方物件 和下方物件(如果有的话),都要跟着翻转. 以…
Day2 ---二分 这里直接给出模板 两种对应不同的情况 可以借助数轴理解 int bsearch_1(int l, int r) { while (l < r) { ; if (check(mid)) r = mid; ; } return l; } int bsearch_2(int l, int r) { while (l < r) { >> ; if (check(mid)) l = mid; ; } return l; } 补充:有时候可以借助STL的std::lowe…
Luogu最小生成树模板题 Prim 原理与dijkstra几乎相同,每次找最优的点,用这个点去松弛未连接的点,也就是用这个点去与未连接的点连接. #include<cstdio> #include<vector> using namespace std; struct data { int to,val; }; vector<data> edge[200001]; int n,m,cost[5001],ans; bool visit[5001]; void add(i…
Luogu并查集模板题 #include<cstdio> using namespace std; int z,x,y,n,m,father[10001]; int getfather(int v)//找到根节点 { if (father[v]!=v) father[v]=getfather(father[v]);//路径压缩 return father[v]; } void hb(int x,int y) { x=getfather(x); y=getfather(y); father[x]…
Luogu单源最短路径模版题 dijkstra #include<cstdio> #include<vector> using namespace std; const int oo=0xfffff; struct data { int to,val; }; vector<data> edge[10001]; bool visit[10001]; int cost[10001],n,m,s; void add(int a,int b,int val) { data tm…
生成字符串(strs) [问题描述] 假设字符串只由字符“0”,“1”,“”组成,其中字符“”表示该字符可由 字符“0”或“1”替代. 现有一些字符串,根据这些字符串生成所有可生成的字符串.如: {10,1,0 }可生成{10,01,11,00 } {101,001,*01}可生成{101,001} 注意后一个例子中“*01”并没有生成新的字符串. [输入格式]strs.in 第一行是两个整数 m,n(1≤m≤15,1≤n≤2500).m 表示字符串的长度,n 表示字符串的个数. 以下 n 行每…
桐桐的运输方案(transp) [问题描述] 桐桐有 N 件货物需要运送到目的地,它们的重量和价值分别记为: 重量:W1,W2,…,Wn: 价值:V1,V2,…,Vn: 已知某辆货车的最大载货量为 X,并且当天只能运送一趟货物.这辆货车应 该运送哪些货物,才能在不超载的前提下使运送的价值最大? [输入格式]transp.in 第一行是一个实数,表示货车的最大载货量 x(1<x≤100). 第二行是一个正整数,表示待运送的货物数 n(1<n≤20). 后面 n 行每行两个用空格隔开的实数,分别表…
最大子序列和(maxsum) [问题描述] 输入一个长度为n的整数序列(A1,A2,……,An),从中找出一段连续的长度不超过M的子序列,使得这个序列的和最大. 例如: 序列 1, -3, 5, 1, -2, 3 当M=2或3时,S=5+1=6:当M=4时,S=5+1+(-2)+3=7. [输入格式] 输入文件第一行一个整数n表示序列的长度,第二行n个整数,代表序列的元素.第三行一个整数表示M. [输出格式] 一个整数,即子序列的最大和.保证结果不超过longint范围. [输入样例] 6 1…
CSU-ACM寒假集训选拔-入门题 仅选择部分有价值的题 J(2165): 时间旅行 Description 假设 Bobo 位于时间轴(数轴)上 t0 点,他要使用时间机器回到区间 (0, h] 中. 当 Bobo 位于时间轴上 t 点,同时时间机器有 c 单位燃料时,他可以选择一个满足 \(\lceil\frac{x}{h}\rceil\leq c\) 的非负整数 x, 那么时间机器会在 [0, x]中随机整数 y,使 Bobo 回到 (t − y) 点,同时消耗 y 单位燃料. (其中 ⌈…
目录 WC集训DAY2笔记 组合计数 part.1 基础知识 组合恒等式 错排数 卡特兰数 斯特林数 伯努利数 贝尔数 调和级数 后记 补完了几天前写的东西 WC集训DAY2笔记 组合计数 part.1 今天开 幕 雷 击:PKUWC没过 UPD:THUWC也没过,听说群友380过了,也是高一,我378...,WC集训完可以愉快地vanyousee了(呜呜呜 UPD2:由于我在弱校,是高中rk1(黄神MLE了...),苟进了NOIWC 写笔记,就是记结论的意思 基础知识 组合恒等式 \[ 2^n…
自闭集训 Day7 动态规划 LOJ6395 首先发现这个树的形态没啥用,只需要保证度数之和是\(2n-2\)且度数大于0即可. 然后设\(dp_{i,j}\)表示前\(i\)个点用了\(j\)个度数的最小值,然后就获得了\(O(n^3)\)的DP. 不妨每个点的度数都减1,那么总度数就变成\(n-2\)了. 考虑原来\(i\)的作用是什么:要限制选的点数不能超过\(n​\). 此时我们总度数小于\(n\),所以只要度数不为0的点的总度数不超过n-2那么就肯定有点数不超过n.所以我们可以先认为所…
自闭集训 Day2 线性代数 高斯消元 做实数时,需要找绝对值最大的作为主元,以获取更高精度. 在欧几里得环(简单例子是模合数)意义下也是对的.比如模合数意义下可以使用辗转相除法消元. 欧几里得环:对于任意\(a,b\),都可以定义\(a=qb+r\ \ (|r|<b)\),于是可以辗转相除.(显然,多项式环也是欧几里得环) 逆矩阵 方法与高斯消元类似,左边摆一个原矩阵,右边摆一个单位矩阵,高斯消元的过程中左边的行操作都在右边同样做一遍.最后左边剩下一个单位矩阵,右边就是逆矩阵. 对于方程\(A…
牛客2018国庆集训 DAY1 D Love Live!(01字典树+启发式合并) 题意:给你一颗树,要求找出简单路径上最大权值为1~n每个边权对应的最大异或和 题解: 根据异或的性质我们可以得到 \(sum_{(u, v)}=sum_{(u, 1)} \bigoplus sum_{(v, 1)}\)那么我们可以预处理出所有简单路径上的异或值 对于路径上的最大权值来说,建图后,我们可以将边权进行排序,对于每一个权值为\(w_i(1-n)\)的连通块 现在我们已经得到了当前边权所在的连通块了,所以…
这又是个状压dp (大型自闭现场) 题目大意: 在N*N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子. 输入格式: 只有一行,包含两个数N,K . 输出格式: 所得的方案数. 算法分析: 1.显然这又是一道状压的题 2.显然一样是用f数组表示方案数 But 这个f数组需要开三维 为什么呢 我们首先分析一下f的转移情况 f的状态与什么有关呢 首先我们很容易知道我们的dp是从上往下一点点递推实现的 而这个…
[BZOJ5250][九省联考2018]秘密袭击(动态规划) 题面 BZOJ 洛谷 给定一棵树,求其所有联通块的权值第\(k\)大的和. 题解 整个\(O(nk(n-k))\)的暴力剪剪枝就给过了... #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MAX 1700 #define MOD 64123 inline int read() { int x…
P2800 又上锁妖塔  [温馨提示]使用仙术时飞过一层塔不花费时间,若爬过去,该层有多高,就要花费多长时间     我们可以用 f [ i ] 表示到达第 i 层时所用最短时间   到达第 i 层可以有两类方法:   爬过去:f [ i - 1 ] + a [ i ]    飞过去:f [ i - 2 ] + a [ i - 1 ] (跨越一层)                  f [ i - 3 ] + a [ i - 2 ] (跨越两层) 所以转移方程:f [ i ] = min ( f…
正睿国庆DAY2动态规划专题 排列-例题 1~n 的排列个数,每个数要么比旁边两个大,要么比旁边两个小 \(f[i][j]\) 填了前i个数,未填的数有\(j\)个比第\(i\)个小,是波峰 \(g[i][j]\)是波谷 \(f[i][j] -g[i+1][j']\) \(g[i][j]-f[i+1][j']\) 可以前缀和优化 n个数的排列中恰好有k个位置满足\(a_i<a_{i+1}\)的个数 可能是今天唯一自己想出来的题了23333 \(f[i][j]\) 前i个数的排列有j个小于号的排列…
T1 园艺工人的求助 [题目描述]终于,在一段繁忙的训练之后,到了NOIP 的举办的时候.同学们坐上了大巴车,享受着沿途的风光,讨论着未解决的问题,憧憬着NOIP 赛场上切题的样子.很快,大巴车到了大连大学科技楼,也就是辽宁NOIP 的举办地点.大连大学科技楼是一幢宏伟的建筑,楼前摆放有一排花,共有n 盆.花一共只有26 种,分别用26 个小写英文字母表示,也就是说,楼前的这排花可以用一个仅包含小写英文字母的字符串表示.大连大学雇了一个园艺工人,专门打理科技楼前的花.园艺工人看见你,热情地向你打…
原题地址:http://www.rqnoj.cn/problem/82 解题思路: 简单的动态规划 状态表示:DP[i][0]表示当前在第i层,且当前跳跃状态不可用,此时消耗的最短时间.   DP[i][1]表示当前在第i层,且当前跳跃状态可用,此时消耗的最短时间. 状态转移方程: DP[i][0]=min(DP[i-1][1],DP[i-2][1]); DP[i][1]=min(DP[i-1][0],DP[i-1][1])+t[i-1]; 初始状态: DP[0][0]=INF DP[0][1]…