- 博客(50)
- 收藏
- 关注
原创 CO_P2 MIPS
主要列一点MIPS里面运用到的一些知识和技巧1.使用宏定义来使用二位数组通常情况下只能用初始位置和下标来定位,那么对于二维数组就需要快速获取下标 .macro index(%rt, %i, %j) sll %rt, %i, 3 add %rt, %rt, %j sll %rt, %rt, 2.end_macro使用类似于这样的宏就可以快速得到一个index2.递归递归的过程中,递归的每一层在进入下一层的时候内容会发生变化,那么就需要我们把当前这一层的东西记录下来 可以使用
2021-11-03 16:23:32 168
原创 CO_P0(logisim)
根据P0的课下作业进行一点小小的总结一.区分两种状态机1.Moore型状态机2.Mealy型状态机两种状态机的区别: 1.Moore输出只和当前的状态有关,Mealy的输出同时和input和当前状态有关。 2.Moore存储的状态就是当前的状态并传到Output模块,Mealy存储的状态是上个时刻的状态,在下一个时刻来临的时候才将状态更新。二.一些小小的trick 1.splitter的应用splitter首先可以用...
2021-10-17 17:27:42 870 1
原创 CF1510D
题目大意:给你n个数,求出一个子集,使得子集的乘积%10为一个值,并且使得子集的乘积最大n <= 1e5 ai <= 1000直接dp的答案不能存下来,就取对数然后判断#include <bits/stdc++.h>using namespace std;typedef pair<int,int> PII;const int maxn = 1e5 + 10;int n, d, a[maxn];double f[maxn][15];PII p
2021-05-12 21:01:06 225 1
原创 CF1514D
复习了莫队维护区间众数的方法对于每个数,开cnt数组记录出现的次数对于每个出现次数,开t数组记录cnt的出现次数每次加入数的时候直接加即可,然后判断最大值是否更新删除的时候考虑答案是否会变化如果删除cnt[x]后t[cnt[x]] == 0 && cnt[x] 是我当前存储的最大值, 那么我的最大值就应该减小一个其他时候最大值不变对于每个区间的答案,如果不大于一半就是1,大于一半就拿剩下的先去凑,其他不能凑的划分成单个,这样的答案是2 * mx - len莫队
2021-04-28 23:35:53 177
原创 刷题
CF1516BAGAGA XOOORRR题目大意:每次操作可以将相邻两个数异或起来变成一个数,问能否存在一种方案,将数列进行操作后所有剩下的数相等(至少剩下两项)。每次只能操作相邻两项,最终剩下的数一定是原数列中的连续一段。考虑第一个数和后面哪些数一起,即可枚举出答案,每次找到能满足答案的分配的最远的即可。最远是为了解决3 3 0这种情况, 0不能被很好的考虑进去复杂度n ^ 2#include<bits/stdc++.h>#define ll long long#d.
2021-04-25 16:26:04 296
原创 Spring Training 1
C:最大空凸包枚举最下面的节点O,dp[i][j]表示以i,j为最后一条边的最大面积 dp[i][j] = max(dp[i][j], S(o,i,j) + dp[j][k]) ij, jk, 为凸#include<bits/stdc++.h>#define ll long long#define rep(i,a,b) for(int i=a;i<=b;i++)using namespace std;struct Point { int x,y; Poi.
2021-04-05 11:34:04 134
原创 UVA 1614
题目大意给你一个长度为n的序列,1 <= ai <= i, 问是否存在一个子序列使得子序列的和为原来总和的一半结论:假设有长度为k的序列,所有子序列可以凑出1 -ak的所有和证明:归纳法 当k = 1时,a1 = 1, 成立当k > 1时: k - 1时成立, 则1 -ak-1都可以被凑出那么ak加入之后只需要和前面的组合再组合,就可以凑出所有的1 -ak ----> k成立那么由归纳法知道对于所有的n都成立那么将所有的ai排序,从大到小,能加入...
2021-02-15 11:05:49 162
原创 UVA 12265
题目大意:给一个矩阵,有些. 有些#,对于每个.,求出以他为右下角的空矩阵的最大周长,统计每种周长出现了多少次预处理出每个点向上能延申的距离,记为h[i][j],为了求出周长,还需要求出最左端能延申到的距离,记录为c对于一个矩阵,当前右下端点为(i, j), 左上端点为(c, h),那么周长为2 * (h - c + j+ 1)对于一行来说,影响答案的只有h - c, 所以考虑维护一个最大的h - c对于单增的c而言,h是单增的,考虑用一个栈来存储对于一个点的h,栈中所有h大于这个h的.
2021-02-10 15:49:33 171
原创 BUAA Winter Training 2
A B 简单题,模拟即可CAtCoder - arc064_b题目大意:给你一个串,保证相邻两个字符不相同,两个人轮流删除中间的一个字符(不包括边界), 问先手还是后手胜考虑最终状态,首尾不同时,最终状态是AB首位相同时,最终状态ABABABA因此讨论奇偶性D - QuestCodeForces - 542F题目大意:有一颗二叉树,有一些点,深度必须满足一定的条件,他们有一定的权值,问如何取使得这个二叉树上的点权和最大考虑一颗二叉树一个点下面有两个儿子,留这个点和..
2021-02-04 17:56:56 83
原创 Winter Training Test1
D - Directing EdgesCodeForces - 1385E题目大意:给定一张图,一些有向边,一些无向边,问是否存在一种方案,对所有的无向边确定方向后不存在环,输出方案对于不存在方案的情况,即一条边无论选择任意方向都不满足条件,即对于任意方向都成环,即原图有环所以只建立有向边,进行拓扑,有环就无解考虑如何输出方案拓扑排序的时候保存出队的时候的顺序,对于一条有向边,总是先出指向后出,因此对于其他的边,也进行相同的操作,先出指向后出#include<iost..
2021-01-28 11:54:33 217 1
原创 Codeforces EDU100
Codeforces EDU100A:题目大意:有三个怪物血量a,b,c 每回合可以对一个怪物造成一点伤害,每7回合对三个怪物都造成一点伤害,
2020-12-26 20:00:07 339
原创 比赛题解:Codeforces 690div3
比赛题解:Codeforces 690div3A :题目大意:按顺序输出序列模拟即可B:题目大意:可以删除中间连续的一个子串,问能否通过一次以内的操作使得串变为2020开头结尾拼成2020,枚举开头和结尾状态判断即可C:题目大意:要找一个最小的正整数,使得不出现重复数字,和为给定值123456789的和为45,超过45的数都不能被凑出来对于小于等于45的可以贪心的取末尾最大,这样高位就会更小,得到一个最小的数D:题目大意:每次可以将序列中的一个元素删除,并将该处的值加到它两.
2020-12-21 23:38:13 220
原创 Noip 2017 逛公园
策策同学特别喜欢逛公园。公园可以看成一张NN个点MM条边构成的有向图,且没有 自环和重边。其中1号点是公园的入口,NN号点是公园的出口,每条边有一个非负权值, 代表策策经过这条边所要花的时间。策策每天都会去逛公园,他总是从1号点进去,从NN号点出来。策策喜欢新鲜的事物,它不希望有两天逛公园的路线完全一样,同时策策还是一个 特别热爱学习的好孩子,它不希望每天在逛公园这件事上花费太多的时间。如...
2018-10-28 21:49:24 174
原创 bzoj 1968 整除分块
题目很裸,求∑i=1~n⌊n/i⌋这个东西可以直接暴力O(n),但对于这个复杂度来说显然不优秀直接枚举的话会发现很多项的值都是相同的,而且呈块状分布,那么就可以用道整除分块来解决有一篇博客讲了证明写的还行https://www.cnblogs.com/0xfffe/p/9648943.html好了现在我们就可以在sqrt(n)的时间内求出这个值了然鹅整除分块经常套这莫反,有时需...
2018-10-28 14:01:26 187
原创 ZJOI 2007 仓库建设
注意到我们所有的东西都只能转移到后面,那么可以考虑dp用dp[i]表示以i结尾建立仓库的最小花费那么dp[i] = min(dp[i], dp[j] + w[i] + sigma(dis[i] - dis[k]) * num[k])这个dp直接转移是n ^ 2考虑优化这个dp然后他是由前面所有的转移过来,而且还有其他的数组来计算答案,一般的数据结构解决不了这个问题,那么就xjb...
2018-10-26 22:06:11 216
原创 考试题(欧拉回路)
悠木皆守学会了一种古老的文字。该文字共有M 种不同的字符1; 2; : : : ; M。一个简单词由两个字符组成(这两个字符可以相同)。一个复杂词由若干个简单词组合而成;具体地,对于一个词(可以是简单词或复杂词)a1a2 · · · al 和另一个简单词b1b2,如果al = b1,那么它们可以组合成一个复杂词a1a2 · · · alb2(因为al = b1 所以b1被去掉了)。例如,...
2018-10-24 18:58:25 306
原创 zoj3470 Water Level
#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=3005;int a[maxn],sum[maxn];int dp[maxn*3],tt[maxn*3],vmax[m...
2018-10-22 20:40:30 134
原创 BZOJ 2131:免费的馅饼
题目大意:https://www.lydsy.com/JudgeOnline/problem.php?id=2131自己看考虑dpdp[i][j]为时间排序后第i个馅饼掉下在第j个位置的收益dp[i][j]=max(dp[i][j],dp[i-1][k]+v[i]);直接转移是n^2的,考虑优化空间上可以只考虑排序时间后的位置,i可以去掉然后对于那个比较RiGuai的转移条...
2018-10-12 10:55:50 209
原创 刷题List+一句话题解
P2468染色:熟练泼粪+线段树维护一下左右边界颜色以及颜色段数,查询的时候看看top[u]和fa[top[u]]的颜色是否相同,相同-1即可P2483K短路:A*模版题,倒着跑dis,然后到一个节点的时候将当前已走的dis作为h,将到终点的最短路作为g来求估价函数,每次取最小的,取k次即可P1627中位数:对于中位数只需要考虑有多少个数比他大和多少个数比他小,然后大的+1小的-1相同不变...
2018-10-09 21:57:06 174
原创 Splay专题模板
调了差不多一天的splay终于把splay写对了顺便纠正了一些原来的错误但是喵喵喵idy002学长的板子似乎是惰性修改可能会有错。。Splay写了两个部分第一个是区间反转,比较简单,比较好写,在find的时候pushdown翻转标记即可第二个就是普通平衡树,耗了我一天下午找前驱和后继终于学到了方便的方法前驱 int pos=T.rank(x) pre=T.kth(po...
2018-08-01 20:43:34 194
原创 NOI2011 阿狸的打字机
调了下午到晚上从0->40->70->100心力交瘁40分做法:直接在fail树上暴力跳,修改节点值,树状数组查询时间复杂度n^2log70分做法:接近正解,离线询问,在对应的位置打标记,dfs的时候可以遍历到这个点的时候,对这个点所有的询问都可以同时处理出来100分做法:读入的时侯可以优化一下,对于原来建过的Trie不用再建,优化一下非常快代...
2018-07-29 21:45:14 169
原创 JSOI 2007 BZOJ 1030 文本生成器
这是做的第一道在Trie图上跑dp的题根据传说中的惯用套路dp[i][j][0/1]表示以i号节点结尾走了j条边是否合法对于这道题而言并不需要考虑合法状态,使用补集转化是更好的选择总的方案mpow(26,m)减去所有的sigma i=0->cnt 的dp[i][m]就是最终答案注意补全Trie图的部分有细节贴代码走人#include<bits/st...
2018-07-29 09:04:18 179
原创 Noip 模拟赛 总结
这次模拟赛时间没有分配号,T1大样例调了两个小时总体来说很简单,区分度没有体现,暴力分很多(qwq)代码能力还要增强 未完待续
2018-07-13 20:14:59 151
原创 欧拉函数
欧拉函数主要使用几个性质:1: if (is_prime[i]) phi[i]=i-1;2:if (i%p==0) phi[i*p]=phi[i]*p;3:if (i%p!=0) phi[i*p]=phi[i]*(p-1);2,3主要是利用phi函数的积性,即phi[m*n]=phi[n]*phi[m] gcd(n,m)=1;那么我们就可以在筛素数的时候吧phi一起求出来代码如下phi[1]=...
2018-07-12 19:46:51 259
原创 左偏树 可并堆 bzoj1455/p1456
简单的左偏堆,维护一个pos记录每一个节点的位置(方便删除),记录每一个堆的最优解,通过swap子树的方式来保证时间复杂度近似logn(度娘上有详解)可以参照某初中大佬 阿波罗2003 对可并堆的一些理解点击打开链接下面是可并堆的代码实现,用类似动态开节点的方式进行操作#include<bits/stdc++.h>using namespace std;const int ma...
2018-06-06 20:27:22 142
原创 Noip2016day1day2考试总结合并
没来的及写上一次的就水掉了%%%%%考场AK的肥佬day1T1 玩具谜题1e5的复杂度直接取模跳就好了没有那么多技巧性但是有一点需要注意啊要么就从0开始输入要么要注意Mod n之后是否为0,要不会死的不明不白,输出0(但是似乎没有这个东西)AC代码#include<cstdio>#include<iostream>#include<cstring>#inc...
2018-05-19 20:59:57 261
原创 2018 4.21 Noip2015 day1 考试总结
妈妈我再也不要斗地主了心态蹦了啊最后一道题改了两个多小时都没改全对好了回归正题来一波今天考试总结加题解T1 神奇幻方其实就是一道很简单的模拟题,根据题目所给的信息来模拟就可以了,可以记录一个前驱这样可以很快的判断#include<cstdio>#include<iostream>#include<algorithm>#include<cstring&...
2018-04-21 16:24:09 184
原创 2018.4.14考试总结 noip2011day2
题目noip2011day2真的很傻逼的错误啊lemon测试用lld输出long long结果Wa成傻子总体来说题目不难,除了第三题的代码实现略显恶心,其他都是可以完成的题,毕竟是七年前的题了。先来发一波题解第一题很显然的数论题懂一点二项式定理的可以随便坐或者现推杨辉三角也完全没有问题最后再快速幂(好像也不用)反正怎么都能过的题被我wa了50分真的醉了把n打成k代码如下#include<cs...
2018-04-14 20:40:15 232
原创 Noip2017普及组T4 跳房子 二分答案 单调队列
题目描述跳房子,也叫跳飞机,是一种世界性的儿童游戏,也是中国民间传统的体育游戏之一。跳房子的游戏规则如下:在地面上确定一个起点,然后在起点右侧画 n 个格子,这些格子都在同一条直线上。每个格子内有一个数字( 整数),表示到达这个格子能得到的分数。玩家第一次从起点开始向右跳, 跳到起点右侧的一个格子内。第二次再从当前位置继续向右跳,依此类推。规则规定:玩家每次都必须跳到当前位置右侧的一个格子内。玩家...
2018-03-24 17:26:15 654
原创 Noip2011 dayt3 Mayan游戏
Mayan puzzle 是最近流行起来的一个游戏。游戏界面是一个7 行5 列的棋盘,上面堆放着一些方块,方块不能悬空堆放,即方块必须放在最下面一行,或者放在其他方块之上。游戏通关是指在规定的步数内消除所有的方块,消除方块的规则如下:1、每步移动可以且仅可以沿横向(即向左或向右)拖动某一方块一格:当拖动这一方块时,如果拖动后到达的位置(以下称目标位置)也有方块,那么这两个方块将交换位置(参见输入输...
2018-03-17 16:50:38 176
原创 POJ 1742 coins 多重背包单调队列优化
DescriptionA Bank plans to install a machine for cash withdrawal. The machine is able to deliver appropriate @ bills for a requested cash amount. The machine uses exactly N distinct bill denominations...
2018-03-10 14:15:00 263
原创 dp day 5
今天的dp加图论略显夸张宫殿里 一共有 n根柱子 ,假设柱子在二维平面内的位置为 ,假设柱子在二维平面内的位置为 (xi,yi)。金科现在 一号柱子,秦王n号柱子。 金科 (小 明)会飞檐走壁所以他 会飞檐走壁所以他 会飞檐走壁所以他 会飞檐走壁所以他 会飞檐走壁所以他 从 i号柱子到 号柱子到 j号柱子的距离为 号柱子的距离为 号柱子的距离为 号柱子的距离为 号柱子的距离为 min(|xi-xj...
2018-03-02 22:15:40 149
原创 bzoj 1010 装玩具
一道bz1000题的斜率优化动态规划(蒟蒻的内心独白)由于double判断的时候好像写的有点问题一直wa最后用整形就对了 血的教训首先我们可以得到dp方程dp[i]=min(dp[j]+(sigma(i->j)+i-(j+1)-l))^2dp[i]=dp[j]+(sum[i]-sum[j]+i-j+l+1)^2令c=l+1;s[i]=sum[i]+i;可得dp[i]=dp[j]+(s[i]-...
2018-03-02 07:58:29 109
原创 dp day 4 斜率优化(fa)bzoj1597+简单dp问题
地主zxr想买一些长方形的土地,所有的土地可以分为若干组,每一组的土地的价格为这一组里的最长的长乘上最长的宽。土地的长和宽是不能交换的,例如一块2*5的土地和一块5*2的土地放在一起,价格为5*5=25。ZXR想知道最少花费多少钱可以买下所有的土地。Input: 第一行一个数n表示一共有n块土地。 接下来n行每行两个数xi和yi分别表示每块土地的长和宽。Outp...
2018-03-01 21:39:29 131
原创 dp day3 数据结构优化dp(虽然蒟蒻不会)
讲道理今天除了第三题秒杀都难想有 N 个红绿灯的直线道路,给出车通过每个路段需要的时间。每个红绿灯都同步(周期相同且红绿灯状态同时改变),其中绿灯 g 秒,红灯 r 秒。有 Q 辆车在某个时刻从起点出发,问分别会在什么时候到达终点。注意红变绿瞬间可以通过,而绿变红瞬间不可通过。【输入格式】输入数据第一行包含三个整数N,g,r,表示红绿灯数量,绿灯持续时间,红灯持续时间。接下来一行 N+1 个整数,...
2018-02-28 22:17:00 470
原创 dp day1
题目描述:在M公司里,每个人只有一个直属上司(除了boss)。这个公司举办派对,每个人可以给派对带来一定的欢乐值,但是每个人不能和自己的上司同时参加这个派对,求派对的最大欢乐值。输入: 第一行n表示公司有n个人。第二行n个数,表示每个人的上司是谁,如果这个人的上司为0,说明这个人是boss。 第三行n个数,表示每个人的欢乐值为wi。输出:一行一个数表示最大欢乐值#include...
2018-02-25 22:08:55 118
原创 图论 day 4 差分约束系统 2-sat
poj 3678 2-sat 跑tarjan缩点附上代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;const int maxn=2010;int n,m,tot=0,idx=0,top=0,cnt...
2018-02-24 21:55:37 258
原创 图论 day 2 网络流
dinicstruct edge{ int v,next,f;}e[maxm];int h[maxn],num = 1;bool vis[maxn];int q[maxn],head,tail; //队列int dis[maxn];void add_edge(int u,int v,int f){ num++; e[num].v = v; e[num].f = f;...
2018-02-22 21:59:40 150
原创 图论 day 1 测试
百度地图上有n 个城市,城市编号依次为1 到n。地图中有若⼲个城市群,编号依次为1 到m。每个城市群包含⼀个或多个城市;每个城市可能属于多个城市群,也可能不属于任何城市群。地图中有两类道路。第⼀类道路是城市之间的快速路,两个城市u; v 之间增加⼀条距离为c 的边;第⼆类道路是城市群之间的⾼速路,连接两个城市群a; b,通过这条⾼速路,城市群a ⾥的每个城市与城市群b ⾥的每个城市之间两两增加⼀条...
2018-02-21 22:01:38 356
原创 Tarjan
#include<cstdio>using namespace std;struct edge{ int v,next;}e[100],ee[100];int h[100],num;int hh[100],numm;int tot[100];void add_edge(int u,int v){ num++; e[num].v = v; e[num]....
2018-02-21 13:57:21 116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人