
题目
AnzioNiko
这个作者很懒,什么都没留下…
展开
-
[dp]洛谷P1990 覆盖墙壁 / Leecode790. 多米诺和托米诺平铺
看到大概就能猜出来用dp来做,因为满足了使用dp的无后效性(后面作出的操作不影响已经做完操作的结果)和子问题重叠(每铺一块砖都可以看作是一个子问题).而题目要求给出所有方案,不分优劣只数数量.最大的问题还是状态转移方程怎么写.过程中需要注意数据量过大导致的溢出问题.Leecode要求对1e9+7取模,这就导致3状态的状态转移过程中就可能发生数据溢出,所以要对每一次两两相加的运算进行取余,防止溢出.接下来讨论在这四种状态如何由前方的状态转移过来.将这四种状态命名为0,1,2,3,用。接上一个长条形方块转移.原创 2022-11-12 15:25:55 · 839 阅读 · 1 评论 -
Leecode 24.两两交换链表中的节点
声明好临时变量之后,第一个操作用来把rightNode的next结点交给leftNode的next结点.因为前三个结点的next都需要指向新的结点,而已经有临时变量存放它们的引用,所以优先把待会会被覆盖的rightNode,next放到正确的位置.这时候示意图长这样。原本以为链表是比较容易对付的知识点,但规模比较大的问题很容易在思考完成写代码的时候出现混乱,引发难以debug的问题.用画图这种更形象的方法可以比较有效的解决思路紊乱的问题.的移动,我们设置一个空结点重新作为头结点.交换的起点也是它.原创 2022-11-09 20:03:03 · 592 阅读 · 0 评论 -
2021蓝桥杯初赛砝码称重
题目链接打比赛的时候作为一个没打过acm的带一萌新,自然是毫无思路的.现在看到题目第一反应是dfs暴搜,但一看数据量…emmmm,100,o(2n)的dfs极限状态百分之百超时.抱着不撞南墙不回头的态度还是用暴搜写了一次#include <bits/stdc++.h>using namespace std;const int N = 100005;int n;int a[N];bool flag[N];int ans;void dfs(int idx,int left原创 2022-04-07 21:11:27 · 1053 阅读 · 1 评论 -
洛谷P1164 小A点菜 dp
刚开始看感觉就是到普通的dfs直到我无视了作者的时间强调tle了一半之后这个dfs是优化后的,即便是过了前面的点但还是tle了最后一个,推测是极限情况下钱数足够把所有的菜都点一遍.#include <bits/stdc++.h>using namespace std;const int N = 1005;int n,m;int ans;int a[N];void dfs(int x,int y){ if(!x) ans++; else if原创 2022-03-31 20:01:20 · 525 阅读 · 1 评论 -
洛谷P1786 帮贡排序 暴力模拟
题目链接给帮派打广告都打到算法网站了.jpg 我也干过啊,那没事了令人窒息的一道模拟,算法基本是一目了然级别的,奈何要素实在太多,敲的时候莫名暴躁.#include <bits/stdc++.h>using namespace std;const int N = 150;struct users//用户结构体{ string id;//用户名 int post;//职位代号 int point;//贡献 int lv;//等级 int t原创 2022-03-23 21:46:48 · 570 阅读 · 0 评论 -
洛谷P1065 [NOIP2006 提高组] 作业调度方案 暴力模拟
题目链接题干是真的长,还贼复杂,半天才看懂意思.看到题解之前,我一直不敢相信这真的是个暴力模拟题…思路基本就是题解的,自己敲的时候加了思路注释#include <bits/stdc++.h>using namespace std;const int N = 25;const int T = 100005;struct info//加工属性{ int id;//在第几台机器加工 int cost;//消耗的时间};int workList[405];//原创 2022-03-23 20:59:50 · 721 阅读 · 0 评论 -
洛谷P2058 [NOIP2016 普及组] 海港 模拟+队列
题目链接看题目每个数据都挺大的,再加上这个诡异的要求,刚看到还是有点蒙的.有一会才看明白啥意思,选了双端队列来做.(主要是对数据范围判断失误了,数组+双指针应该也是能过的)这道题不仅卡时间,还卡空间,标记数组不能开太多要不会炸;刚开始按船为单位写,到查重的时候可以说是举步维艰,做题的时候还疑惑人数会不会太多然后炸内存,用双端队列这种动态类型直接存人头,再根据时间更新答案和标记数组,成功a题.#include <bits/stdc++.h>using namespace std;con原创 2022-03-22 17:40:41 · 529 阅读 · 0 评论 -
洛谷P1162 填涂颜色(bfs染色法)
#include <bits/stdc++.h>using namespace std;const int N = 35;int m[N][N];bool flag[N][N];int n;queue<pair<int,int> > p;int main(){ cin >> n; for(int i = 1 ; i <= n ; i++) for(int j = 1 ; j <= n ; j++)原创 2022-03-16 20:13:54 · 1094 阅读 · 0 评论 -
洛谷P1098 [NOIP2007 提高组] 字符串的展开(模拟)
题目链接看着很复杂的一道模拟题,虽然写起来确实不怎么复杂,但细节还是比较多的.主要分析的就是-的处理情况,总体上就是展开和不展开(直接输出)的判断.需要展开的情况:前后有字符,且均为字母或数字字符后者-前者的ascii值>=1(=1时仍然是展开,但什么都不输出.我是用了个特判,但想想好像也不需要)那么不展开的情况就是非上述情况了.包括首尾,前后不为相同类型,甚至还有一堆-相连的一个测试点.我还纳闷为啥还有90分这种情况总体上还是判断写的太渣了,但我又懒得改,开摆!#includ原创 2022-03-16 17:12:11 · 868 阅读 · 0 评论 -
线性dp模板题 Acwing 898. 数字三角形
题目链接听y总讲课听到状态为最大值,突然醍醐灌顶一般的有思路了,然后直接把题a了出来,我也没想到会这么顺利.jpg y总,我悟了!拿到题目,稍加思索,第一反应是dfs,但想想求最大值果然还是bfs合适一点吧?仔细分析,dfs显然要每条都走一遍,毫无争议的O(2n);bfs要从上到下搜,因为在最后一步之前都无法判断最佳路线,仍然是O(2n).但这个500的数据范围,emmmm 分析失败.jpg文字题解看不懂,直接冲进y总小课堂,听到了从下到上分析,状态存储,最大值…emmm要素察觉!为什么要从原创 2022-03-10 18:58:24 · 295 阅读 · 0 评论 -
洛谷P1518 [USACO2.4]两只塔姆沃斯牛(模拟)
题目链接很有意思的一道模拟题,之前其实看过挺多次的,都因为没思路或者觉得难写没动.今天静下心仔细研究下,总算是A掉了.这道题我遇到的坑点还是不少的,如果完全靠自己做结果应该是个未知数,之前影响我对这道题难度判断的地方就是边界检查和无解判断.边界检查这个多做点题还是有经验了的,就是把地图开大点,地图边界算作障碍物,就可以省去比较繁琐的越界检查.即便如此我还是因为少开了一行一列而被迫debug.无解判断偷摸看了题解,有哈希和数组两种判断法,我开了个三维数组来作判断.农夫在同一个方向进入同一格的次数过多,原创 2022-03-09 23:33:53 · 472 阅读 · 0 评论 -
洛谷P1443 马的遍历(bfs)
题目链接很适合做bfs模板题的一道题,用stl中的队列和pair解决.要是不看题解我就写成深搜了#include <bits/stdc++.h>using namespace std;const int N = 505;queue<pair<int,int> > q;//队列,存待跳结果int ans[N][N];//存步数const int dx[8] = {-1,-2,-2,-1,1,2,2,1};const int dy[8] = {2,1,-原创 2022-03-09 21:09:45 · 493 阅读 · 0 评论 -
天梯赛 L2-021 点赞狂魔 (25 分)
题目链接思路这道题在L2里属于偏简单的一道,数据范围很友好,倾向于使用逻辑而非算法.但想要比较轻松的完成这道题目还是需要一些stl使用经验的.对于一个用户,有几个需要记录的属性:姓名,用于输出总点赞数,用于确定输入标签的数量,以及确定输出顺序的次要因素点赞的标签总数,确定输出顺序的主要因素点赞过的标签数,用于去重.实现过程对于一个用户的属性,用一个结构体可以轻松容纳;姓名和点赞数输入都会给出,存下来就行;在输入用户点赞的标签时,边判重边累加其点赞过的标签总数即可.判重我使用了se原创 2022-02-22 17:48:40 · 1248 阅读 · 0 评论 -
洛谷P1540 [NOIP2010 提高组] 机器翻译
题目链接又是一道快乐翻车题刚开始的模拟做法#include <bits/stdc++.h>using namespace std;#define N 1005int ans, m, n;bool s[N];int flag = 0, x[N], a[N];int main(){ cin >> m >> n; for ( int i = 0 ; i < n ; i++ ) { cin >> a原创 2021-11-08 20:46:39 · 326 阅读 · 0 评论 -
stl list实例——洛谷P1160 队列安排
题目链接#include <bits/stdc++.h>using namespace std;int n, m;list<int> lt;/*list是stl自带的双向列表 * 它不支持随机查询,但可以快速地插入和删除数据 * 这道题正好考察了链表重要的三个基本操作: * 插入,删除,浏览 * 这道题很适合熟悉list的用法 */int main(){ cin >> n; list<int>::iterator i原创 2021-11-08 19:58:30 · 725 阅读 · 1 评论 -
洛谷P2678 [NOIP2015 提高组] 跳石头
题目链接/*思路:二分枚举 * 由于给定了起点(0)和终点(d)的确切位置(有界性) * 并且石头按序排列(单调性) * 而答案要求最小值最大(最大值最小也可以,这道题不是) * 这就满足用二分搜索做题的条件 * 虽然直接求出正确答案很难,但可以用较低的复杂度枚举答案 * O(lg(n))的复杂度是完全可以接受的 */#include <bits/stdc++.h>using namespace std;#define N 50005int a[N];int d, m原创 2021-11-05 19:06:38 · 263 阅读 · 0 评论 -
Codeforces Round #748 (Div. 3) D1. All are Same
原题链接纯暴力枚举思路是先找所有数的最小值,然后求所有数与最小值差值的最大公因数.思路很清晰,实现起来老麻烦了,WA了n次才过还是吃了不熟悉stl的亏(//思路是找最小值(必须是最小值)//找差值,然后求所有差值的最大公约数#include<bits/stdc++.h>using namespace std;int gcd(int x, int y)//压根没用上的最大公约数函数.jpg{ int r=x%y; while(r!=0) { x=y; y=r;原创 2021-10-14 21:12:15 · 206 阅读 · 0 评论 -
Codeforces Round #748 (Div. 3) C. Save More Mice
本来以为会是个高深的动态问题,没想到还是贪心(枚举离洞最近的老鼠,模拟猫和老鼠的行动即可#include<bits/stdc++.h>using namespace std;#define N 400005bool cmp(int a,int b){ return a>b;}int main(){ int t; cin>>t; while(t--) { int n,a[N],m; cin>>m>>n; for原创 2021-10-14 19:38:23 · 212 阅读 · 0 评论 -
四则运算(vector模拟栈,无括号版)
今日数据结构课讲到栈,突然提到这道陈年老题用栈去实现,遂脑洞凿开自己写了一遍.顺便用了vector模拟栈,是平时没怎么用过的类型所以改了老半天的bug还做了半天的笔记.然后看了一眼原题是有括号的,寄!#include<bits/stdc++.h>using namespace std;typedef vector<char> vc;typedef vector<int> vi;vc num;//存放数字,即用即清vc s;//存放运算符vi n;//原创 2021-10-12 17:56:38 · 270 阅读 · 0 评论 -
洛谷P3955 [NOIP2017 普及组] 图书管理员
题目链接纯粹的暴力枚举,复杂度O(n2)因为题目数据很小,所以很安全,不会超时.#include<bits/stdc++.h>using namespace std;#define N 1005#define LL long longint book[N];//放书int flag;//放需求码长度int user;//放需求码int n,m;//放书的数量和读者的数量int main(){ int i,j;//老工具人 cin>>n>&g原创 2021-10-08 19:57:20 · 674 阅读 · 0 评论 -
洛谷P3817 小A的糖果
原题链接暴力枚举+贪心.刚开始想多了,后来想想只需要考虑当前糖果和前面糖果的和不超限即可,所以可以边输入边处理.复杂度O(n)#include<bits/stdc++.h>using namespace std;#define N 200005#define LL long longint n,m;//存盒子数量和上限LL ans;//存答案int a[N];//存糖果int main(){ int i=0;//指针初始化0 cin>>n>原创 2021-10-08 19:23:28 · 177 阅读 · 0 评论 -
Codeforces Round #744 (Div. 3) E1. Permutation Minimization by Deque
题目链接题意大概是给n个不重复元素和一个空双端队列,要求按给出的顺序将这些元素插入队头或队尾,来保证最后得到的队列字典序最小。思路就是贪心,刚开始用了数组纯暴力模拟的办法。#include<bits/stdc++.h>using namespace std;#define N 200005int main(){ int t; cin>>t; while(t--) { int n,i,j; int a[N]; cin>>n; int原创 2021-10-01 17:28:14 · 153 阅读 · 0 评论 -
Codeforces Round #744 (Div. 3) B. Shifting Sort
题目链接一道模拟题,题意是给一个长度n的数组,用n次以下选定一个区域集体左移的操作把它排序成一个非递减的数组。刚开始用冒泡写,结果下标和验重都出了问题,比赛直接寄了。之后换选择思路,还是在验重和不用排的情况出事,改了下结构才好。#include<bits/stdc++.h>using namespace std;#define N 60int a[N],ans[N];//原数组和目标数组int l[N],r[N],d[N];//三个输出值int main(){ int原创 2021-10-01 15:32:13 · 249 阅读 · 0 评论 -
cf educational round114 div2 B
原题链接题意理解失误,思路都是一样的计算边界比较,但边界算错了就尴尬了…我理解中一个字母是不能同时作为两组的成员的,比如说AAA中应该有两对而不是三对,总有一个不算数。而实际上,题目中的AAA就是三队…然后公式就写错了,寄改了公式就没啥好提的了。#include<bits/stdc++.h>using namespace std;int main(){ int t; cin>>t; while(t--) { int a[3],m; for(int i=0原创 2021-09-22 19:35:33 · 161 阅读 · 0 评论 -
acw17周周赛 T2 方格集数量
原题链接这道题真的给我恶心坏了……本来是以为自己的思路出了问题,极限答案多出来几千多后来按其他人的思路做了一遍,还是莫名其妙的多几十找了半天才发现是pow函数没做强制转换的锅…pow() 函数用来求 x 的 y 次方的值。头文件:math.h语法/原型:double pow(double x,double y);参数说明:x:双精度数。y:双精度数。返回值:x 的 y 次方的值。大概是因为极限情况下数值过大把double的整数部分撑炸了,得强制类型转换才成。我的思路按数枚举原创 2021-09-22 18:14:44 · 188 阅读 · 0 评论 -
洛谷P3654 First Step (ファーストステップ)
数据范围很小,暴力枚举出奇迹,复杂度O(r*c)第一次开的是string的一维数组,结果re了,换了字符数组解决,结果出了俩wa。发现是没有特判k==1的情况,遂修改ac。#include<bits/stdc++.h>using namespace std;#define N 105typedef long long LL;//string s[N];//这么开rechar s[N][N];int main(){ int r,c,k; int i,j; LL an原创 2021-09-15 20:50:42 · 310 阅读 · 0 评论 -
cf ground16 b min-mex cut
题目这道题属于是没看明白题意,翻译搞了半天一脸懵逼,看赛后的视频讲解还是一脸懵逼盯着题愣了半天才悟出来咋回事…题意有一个mex规则,在一串二进制数中,只有0为1,只有1位0,而都有则为2。给若干个二进制代码,把它分解成若干子串,使子串mex的总和最小。分析由题意可见一个串最大的mex为2,所以这道题不会出现2以上的输出。一个或一串0的mex为1,而一串1的mex为0。那么把原串分解成若干串0和若干串1的集合,最后和2比较即可。Talk is cheap#include<bits/s原创 2021-09-14 21:46:03 · 394 阅读 · 0 评论 -
acw周赛16t2 截断数组
自己的勉强ac代码复杂度之前错算了,优化前的复杂度是O(n2)级别的,直接超时虽然是有前缀和的思路,但并没有建前缀和数组,对于每一个第二次下标还是要遍历前面的下标但通过优化和猜数据居然过了,有点…不知道该说什么而且总感觉哪里还是不对劲,感觉集合更新数据还是写错了但我没有证据最绝望的是ac交上去之后看了一眼表,比赛刚好结束一分钟…谢谢,血压高起来了.jpg#include<bits/stdc++.h>using namespace std;#define MAX 100005原创 2021-09-14 19:59:12 · 241 阅读 · 0 评论