原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ110.html 题解 我们发现n=2000 的子任务保证A=1! 分两种情况讨论: $n\leq 100$: 贪心地从高位到低位逐位考虑,看当前位是否可以放 0.用 $dp[i][j]$ 表示前 $i$ 个数是否可以在各段sum的or值不超过当前上限的情况下分成 $j$ 段. 时间复杂度 $O(n^3 \log V)$ . $A = 1$: 贪心地从高位到低位逐位考虑,看当前位置是否可以放0. 用 $d…
[题目]1510 最小化序列 [题意]给定长度为n的数组A和数字k,要求重排列数组从而最小化: \[ans=\sum_{i=1}^{n-k}|A_i-A_{i+k}|\] 输出最小的ans,\(n \leq 3*10^5,k \leq 5000,-10^9 \leq A_i \leq 10^9\). [算法]贪心+动态规划 先对序列从小到大排序,通过贪心容易发现连续的段在一起时最优.所以实际上要求将序列分成\(k\)段,其中\(n%k\)个大段和其它小段,小段的段长是\(g=\frac{n}{k…
16-矩形嵌套 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:13 submit:28 题目描述: 有n个矩形,每个矩形可以用a,b来描述,表示长和宽.矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度).例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中.你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内. 输入描述: 第一…
印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 NN 座雕塑,为方便起见,我们把这些雕塑从 11 到 NN 连续地进行标号,其中第 ii 座雕塑的年龄是 YiYi 年.为了使这条路的环境更加优美,政府想把这些雕塑分成若干组,并通过在组与组之间种上一些树,来吸引更多的游客来巴厘岛. 下面是将雕塑分组的规则: 这些雕塑必须被分为恰好 XX 组,其中 A≤X≤BA≤X≤B,每组必须含有至少一个雕塑,每个雕塑也必须属于且只属于一个组.同一组中的所有雕塑必须位于这条路的连…
http://uoj.ac/problem/110 这道题subtask4和subtask5是不同的算法. 主要思想都是从高位到低位贪心确定答案. 对于subtask4,n比较小,设\(f(i,j)\)表示前\(i\)个雕塑分成\(j\)组能否满足当前答案,最后检查\(f(n,A\sim B)\)是否有值为true的,时间复杂度\(O(n^3\log\sum Y_i)\). 对于subtask5,n比较大,但A=1,设\(f(i)\)表示前\(i\)个雕塑要满足当前答案最少能分成多少组,最后检查…
题目描述 印尼巴厘岛的公路上有许多的雕塑,我们来关注它的一条主干道. 在这条主干道上一共有 $N$ 座雕塑,为方便起见,我们把这些雕塑从 $1$ 到 $N$ 连续地进行标号,其中第 $i$ 座雕塑的年龄是 $Y_i$ 年.为了使这条路的环境更加优美,政府想把这些雕塑分成若干组,并通过在组与组之间种上一些树,来吸引更多的游客来巴厘岛. 下面是将雕塑分组的规则: 这些雕塑必须被分为恰好 $X$ 组,其中 $A \leq X \leq B$,每组必须含有至少一个雕塑,每个雕塑也必须属于且只属于一个组.…
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ345.html 前言 我真的是越来越菜了,连树形DP都感觉陌生了. 题解 首先,我们来看看在不断生长叶子会发生什么. 第一种:顺着生长方向走. 第二种:在某一个节点的某些子树依次生长,达到他们之间互相消耗的作用. 对于一个子树 x,假设初始情况下,树心在点 x 上,那么在 x 子树中生长若干次之后,树心离开 x,那么我们考虑求出在树心离开 x 之后,能将 x 往 x 子树方向拉的次数的上界 Max[x]…
题解 感觉自己通过刷水题混LOJ刷题量非常成功 首先是二进制枚举位,判是否合法 要写两个solve不是很开心,\(A\)不为1的直接记录状态\(f[i][j]\)为能否到达前\(i\)个分成\(j\)段,转移\(n^3\) \(A\)为1的相当于在一张拓扑图上求到\(N\)的最短路是否小与\(B\),连边方式即为如果\(sum[j] - sum[k]\)是二分值的一个子集则\(k\)到\(j\)有边 代码 #include <bits/stdc++.h> #define fi first #d…
描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于 第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间.因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗? 输入 第一行是一个整数T,表示输入数据一共有T组. 每组测试数据的第一行是一个整数N(1<=N<=5000),表示有N个木棒.接下来的一行分别输入N个木棒的L,W(0 < L ,W <…
首先可以想到一个贪心的方法,然后一层一层的合并. 也可以采用动态规划的方式,为了写起来好写,把点数*2+1,然后发现在本机上跑不过1500的数据. 交上去居然A掉了. 贪心 #include <cstdio> #define F(i,j,k) for (int i=j;i<=k;++i) int main() { int n,m,a; scanf("%d",&n); a=0; m=n+1; F(i,0,30) a+=(m>>i)&1; pr…
最少拦截系统 HDOJ-1257 我做这题的思路就是采用暴力或者贪心.也就是每次循环选出从第一个未被选择的元素开始,依次把后面可以选择的元素作为一个系统.最后统计可以有多少个系统. 还有人的思路就是利用动态规划的思路,求解最长上升子序列,也就是反着题意来求.因为在这个最长上升子序列中,所有的元素不可能在同一个拦截系统中,所以子序列的长度就是最后的答案,也就是拦截系统的个数 https://blog.csdn.net/qq_29963431/article/details/49081409 还有博…
原文链接https://www.cnblogs.com/zhouzhendong/p/AGC026E.html 题目传送门 - AGC026E 题意 给定一个长度为 $2n$ 的字符串,包含 $n$ 个 $'a'$ 和 $n$ 个 $'b'$ . 现在,让你按照原顺序取出一些字符,按照原顺序组成新的字符串,输出所有满足条件的字符串中字典序最大的?(字典序: $'b'>'a'>'\ '$) 条件限制:当且仅当取了原序列的第 $i$ 个 $'a'$ 时,原序列的第 $i$ 个 $'b'$ 也被取了…
题目链接:传送门 题目: F. Summer Practice Report time limit per test seconds memory limit per test megabytes input standard input output standard output Vova has taken his summer practice this year and now he should write a report on how it went. Vova has alre…
[BZOJ4922][Lydsy六月月赛]Karp-de-Chant Number Description 卡常数被称为计算机算法竞赛之中最神奇的一类数字,主要特点集中于令人捉摸不透,有时候会让水平很高的选手迷之超时. 普遍认为卡常数是埃及人Qa'a及后人发现的常数.也可认为是卡普雷卡尔(Kaprekar)常数的别称.主要用于求解括号序列问题. 据考证,卡(Qa'a)是古埃及第一王朝的最后一位法老.他发现并研究了一种常数,后世以他的名字叫做卡常数.卡特兰数的起源也是因为卡的后人与特兰克斯结婚,生…
首先将每个括号序列转化为三元组(ai,bi,ci),其中ai为左括号-右括号数量,bi为前缀最小左括号-右括号数,ci为序列长度.问题变为在满足Σai=0,bi+Σaj>=0 (j<i)的情况下,最大化Σci. 考虑在确定了选哪些序列的情况下如何排列能够尽量满足条件.显然应该把ai>0的放在前面,<0的放在后面.对于ai>=0,考虑按bi降序排列.因为假设这样排列后第一个不合法的位置是x,要让该位置合法显然应该将x后面的某个三元组i和前面的交换,但该三元组的bi<bx,…
题目: Now that you’ve come to Florida and taken up surfing, you love it! Of course, you’ve realized that if you take a particular wave, even if it’s very fun, you may miss another wave that’s just about to come that’s even more fun. Luckily, you’ve got…
题目链接 Solution 很妙的DP,很妙的贪心. 首先考虑,如果说没有那个相同的不能配对的情况; 那么我们肯定是直接排两遍序,然后一一对应即可. 但是是有限制的,同时我们可得几个条件供贪心: 每个数字仅在 \(a\) 或 \(b\) 中出现一次. 即每个序列排序之后满足 \(a_i≠b_i\). 如果 \(a_i=b_i\) ,我们需要去和其他位置的元素交换; 我们交换的元素与当前元素的绝对距离不会大于 \(2\),也就是说每次我们碰到相同的情况,只需要 \(a_i\) 与 \(a_{i+1…
题目描述 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以他们要吃的菜各有不同,打饭所要花费的时间是因人而异的.另外每个人吃饭的速度也不尽相同,所以吃饭花费的时间也是可能有所不同的. THU ACM小组的吃饭计划是这样的:先把所有的人分成两队,并安排好每队中各人的排列顺序,然后一号队伍到一号窗口去排队打饭,二号队伍到二号窗口去排队打饭.每个人打完饭后立刻开始吃,所有人都…
Wooden Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)        Total Submission(s): 23527    Accepted Submission(s): 9551 There is a pile of n wooden sticks. The length and weight of each stick are known in a…
原文链接www.cnblogs.com/zhouzhendong/p/UOJ316.html 题解 首先,我们将答案转化成最大矩形大小 \(\leq k\) 的概率 减去 \(\leq k-1\) 的概率. 然后我们考虑 DP. 设 \(dp[i][j]\) 表示矩形宽度为 \(j\) ,当前已知最底下 \(i\) 行是安全的,在这个情况下,最大安全区域 \(\leq k\) 或 \(\leq k-1\) 的概率. 状态的转移分两种:一种是第 \(i+1\) 层全部安全,一种是枚举第 \(i+1…
可以在UOJ上提交也可以在bzoj上提交(权限) A. Bali Sculptures 对于前72%的数据,按位考虑,然后跑一点沙茶dp就行了. dp:用f[x][y]表示前x位分为y段是否满足条件. 对于最后29%的数据,我们改一下dp方程. dp:用f[x]表示前x位满足条件至少要分几段. 结论:傻逼题 #include <iostream> #include <stdio.h> #include <stdlib.h> #include <algorithm&…
1.前言 正式开始的第一周的任务--把NOIP2010至NOIP2015的所有D1/2的T2/3写出暴力.共22题. 暴力顾名思义,用简单粗暴的方式解题,不以正常的思路思考.能够较好的保证正确性,但是最大的问题在于效率.搞OI这么久,每次考试也经常纠结于暴力与正解之间,其实这两者概念上本来就没有明显的界限,是一组相对概念. 下面尽可能的不提到正解,但是如果正解容易到我都能够轻松秒的话就还是说一下了. 普通的DFS/BFS搜索是暴力,但暴力不局限于此.根据向总的话,记忆化搜索亦属于暴力,名字逼格这…
高精度 a.加法 b.减法 c.乘法(应该只会有高精乘单精)                                d.高精度除单精                 (后面c,d考的可能性较小,应该只考a,b) 排序算法 a.选择排序 b.插入排序 c.hash排序 d.归并排序(单纯的排序可能用不到,有快排就行了,但是归并排序的思想很重要) e.堆排序 f.快排 字符串匹配算法 a.蛮力法 b.KMP 数论 a.欧几里德算法(用辗转相除法求最大公约数) b.扩展欧几里德算法 ax+by…
一.函数调用优化(空间跨度,避免访问内存) 1.大数据求和,使用sum a = range(100000) %timeit -n 10 sum(a) 10 loops, best of 3: 3.15 ms per loop %%timeit ...: s = 0 ...: for i in a: ...: s += i ...: 100 loops, best of 3: 6.93 ms per loop 2.小数据求和,避免使用sum %timeit -n 1000 s = a + b +…
1.前言 迎接NOIP的到来...在这段闲暇时间,决定刷刷水题.这里只是作非常简单的一些总结. 2.NOIP2014 <1> 生活大爆炸之石头剪刀布(模拟) 这是一道考你会不会编程的题目...方法有很多,预处理输赢矩阵,或者一大堆if什么的乱搞就行了. <2> 联合权值(搜索) 简单的树上求解问题,由于只需要长度为2的链,只要能够清楚地分析出各种情况,一遍DFS直接出来:自身节点与祖父节点有一对:自身节点与兄弟节点有若干对.在计算权值的时候存在一个优化,即如果每次得到一对之后就计算…
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.       …
发信人: fennec (fennec), 信区: Algorithm 标 题: acm 总结 by fennec 发信站: 吉林大学牡丹园站 (Wed Dec 8 16:27:55 2004) ACM总结(fennec) 其实在北京比赛完的时候,我就想写了,不过还是早了点,直到上海比赛结束,大家的心中都不是太好受.郭老师有句话:你们这样做也是对的,不成功就成仁.让我的心也能安慰了不少. 我是从大一下学期开始接触ACM的,那时候我们学校才刚刚起步,siyee,wjiang师兄可以说是我的领路人了…
AT(pat.zju.edu.cn)是一个面向 C/C++程序的 Online Judge 系统.相比 ZOJ,HDOJ,POJ 等 ACM 题库,PAT 的题目非常基础,对于数据结构.算法的入门是比较有助益的. 本文按照自己的认识,给 PAT advanced level 做出了分类.由于很多题目实际上兼顾有多种解法和思路,我给每道题打上了 tag,来应对分类的独占性局限,供大家参考. 简单题 这类题几乎不需要数据结构.算法基础,主要通过简单的逻辑流程和判断实现. 1001 A+B 1002…
首先来一张图,很直观(截止到2012年数据) 下面是收集的一些,我改了一下 红色加粗表示特别重要,必须掌握 绿色加粗表示最好掌握,可能性不是很大,但是某些可以提高程序效率 高精度 a.加法 b.减法 c.乘法(应该只会有高精乘单精)                                d.高精度除单精                 (后面c,d考的可能性较小,应该只考a,b) 排序算法 a.选择排序 b.插入排序 c.hash排序 d.归并排序(单纯的排序可能用不到,有快排就行了,但…