ACM训练
文章平均质量分 54
无
_xwj.
心灵鸡汤之天空飘来五个字——那都不是事。
展开
-
搜索知识总结
浅谈搜索技术一、BFS和队列二、八数码问题和状态图搜索1、八数码问题2、康托展开(一种判重方法)三、A*算法四、双向广搜五、DFS(未完)1、递归2、回溯和剪枝3、迭代加深搜索4、IDA*一、BFS和队列上两篇广搜题解都在讲BFS如何运用队列的,不再赘述二、八数码问题和状态图搜索BFS搜索处理的对象不仅可以是一个数,还可以是一种“状态”。八数码问题是典型的状态图搜索问题。1、八数码问题也是一种简单的扩散过程,从初始状态出发。在八数码问题的搜索树中,存在重复的状态,八数码的重要问题:判重。2、康原创 2021-08-19 09:51:31 · 128 阅读 · 0 评论 -
周末总结3
周末总结字符串&&dpDiv.2字符串&&dp罪不可赦,上周两个div都不满意,两个半洛谷字符串上周做的不好,感觉超级忙两个考试和竞赛过去了,今天开始补Div.2Codeforces Round #752 (Div. 2)B题周末忙着竞赛抱佛脚,div.2结束了才开始做它B题题解题过程和题解 别家博客讲得很清楚了大家可以直接忽略下面我寄己做题的心路历程:那就话的意思是:(那就话就不放这儿了,少儿英语)这些相对应子串的最长上升子序列的长度分别是…其实读原创 2021-11-01 01:38:54 · 72 阅读 · 0 评论 -
(整数划分)(母函数)
容斥原理一种常见的思维方法,有时情况比较多,相互有重叠。为了使重叠部分不被重复计算,可以这样处理:先不考虑重叠的情况,把所有对象的数目的计算出来,然后减去重复重复计算的数目。计数方法为容斥原理。母函数:整数划分,不同划分方法的总数叫作划份数。1.递归求解:#include <iostream>using namespace std;int part(int n,int m)//将整数n划分成最大数不超过m的划分数{ if(n==1||m==1) return 1;原创 2021-09-29 18:25:25 · 193 阅读 · 0 评论 -
2021-10-02
本周解决数学特殊计数Catalan 数是一种序列,增长速度快,但其中有组合计数。实际问题:1.hdu2067小兔棋盘hdu2067就沿对角线的那一串数字该题直接计算数很大,找到规律用递推把下三角的数都计算下来#include <iostream>#include <cstring>using namespace std;long long dp[40][40];int main(){ int n; int t=1; for(in原创 2021-10-03 10:20:08 · 177 阅读 · 0 评论 -
Codeforces Round #756 (Div. 3) D题
D. Weights Assignment For Tree Edges比赛将近一个小时都花在这题上然而最后没出来,后来又花了很长时间实现,后来才知道没理解题意;1.先给定的第一个数组是存第i个节点的根2.第二个数组p是顶点v的排序,是根到该节点v权值w的排序,形成固定的序列pIf it is possible, assign any positive integer weights on the edges, so that the vertices sorted by distance fro原创 2021-11-28 20:55:33 · 178 阅读 · 0 评论 -
(快速幂)(数论)
数论对于像Java也不能处理的大数,存在的问题:一数字大,二计算时间长对于幂数来说,很容易想到快速幂的办法来解决:int f(int a,int n){ if(n==1) return 0; int t=f(a,n/2); //分治 if(n%2==1) //奇数情况 return t*t*a; else return t*t;//偶数情况}更好的一种位运算做快速幂,时间复杂度也是O(log2 n)a11= a8+ a2+ a111原创 2021-09-27 23:55:50 · 68 阅读 · 0 评论 -
(Ramsey定理 )(鸽巢定理)( 组合数学)
组合数学鸽巢原理:典型题目:吃糖果很奇妙的思路找糖果最多的作为隔板,假设有N个隔板,剩余的糖果S必须有S>=N才有唯一解(可以分类讨论一下很有趣,在S<N时,无解)鸽巢原理是Ramsey定理的一个特例:...原创 2021-09-28 19:10:32 · 2768 阅读 · 0 评论 -
Codeforces Round #757 (Div. 2) BC题
B. Divan and a New Project有一次败在了这个地方,应该不会有下次了,太无知啦很简单的一道题就不解释啦虽然最后把数据都改成ll,可以过,其实不是数据太多啦,因为在转化中原创 2021-11-28 18:47:14 · 501 阅读 · 0 评论 -
11.28 图论 基础
图 基础图的存储(两种简单存储)邻接矩阵邻接表图的遍历深度优先遍历广度优先遍历(队列)最小生成树Prime算法Kruskal算法(并查集)最短路径Dijkstra算法Floyd算法(简单动态规划)拓扑排序(栈)最近离散,数据结构都在学图,,,,图的存储(两种简单存储)邻接矩阵 #define N 100 //顶点最大值为100 typedef struct{ int vex[N]; //顶点表 int Edge[N][N]; //邻接矩阵,边表 i原创 2021-11-21 18:33:23 · 598 阅读 · 2 评论 -
Java字符串匹配(题解)
Java字符串匹配字符串匹配s.substring(beginIndex) //以起始位置输出子字符串 int indexOf(String str) //返回第一次出现的指定子字符串在此字符串中的索引。 //等于-1来判断结束int indexOf(String str, int startIndex)//从指定的索引处开始, //返回第一次出现的指定子字符串在此字符串中的索原创 2021-09-23 05:06:09 · 110 阅读 · 0 评论 -
Codeforces Round #753 (Div. 3)D题
Codeforces Round #753 (Div. 3)D题D. Blue-Red Permutation看起来不是一道难题,然而做错了题意:蓝颜色对应的数字可减,红颜色对应的数字可加,问是否可以变成1~n的数字,每个数字有且仅有出现一次。(对每个数字可处理0次或多次)分析:我的思路是将红的放在一起,蓝的放在一起,只要红色有一个大于n,或有两个以上等于n的都为NO,蓝色同理。当时知道可能会少情况,但也没想不出来,下次还是要多举些例子后再提交。题解的逻辑、思路很清晰、巧妙看代码就理解了:原创 2021-11-03 03:30:29 · 157 阅读 · 0 评论 -
周末总结5
模拟&&排序模拟P1003 [NOIP2011 提高组] 铺地毯P1067 [NOIP2009 普及组] 多项式输出P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布P1563 [NOIP2016 提高组] 玩具谜题P1042 [NOIP2003 普及组] 乒乓球P1179 [NOIP2010 普及组] 数字统计模拟P1003 [NOIP2011 提高组] 铺地毯一开始就直接暴力超时超内存还很疑惑,现在再看代码确实有点太暴力,二维数组加一个矩形区域都复制,1e4 数据,每原创 2021-11-15 01:42:24 · 385 阅读 · 0 评论 -
二分算法题解
P1024 [NOIP2001 提高组] 一元三次方程求解#include <bits/stdc++.h>using namespace std;double a,b,c,d;double f(double x){ return a*x*x*x+b*x*x+c*x+d;}int main(){ double l,r,m,x1,x2; int s=0,i; cin>>a>>b>>c>>d; f原创 2021-11-28 21:32:39 · 375 阅读 · 0 评论 -
P1124文件压缩(模拟)(字符串)
P1124文件压缩题目背景提高文件的压缩率一直是人们追求的目标。近几年有人提出了这样一种算法,它虽然只是单纯地对文件进行重排,本身并不压缩文件,但是经这种算法调整后的文件在大多数情况下都能获得比原来更大的压缩率。题目描述该算法具体如下:对一个长度为nn的字符串SS,首先根据它构造nn个字符串,其中第ii个字符串由将SS的前i−1i−1个字符置于末尾得到。然后把这nn个字符串按照首字符从小到大排序,如果两个字符串的首字符相等,则按照它们在SS中的位置从小到大排序。排序后的字符串的尾字符可以组成一个新的原创 2021-10-18 20:28:10 · 463 阅读 · 0 评论 -
深搜 string::substr
#include <bits/stdc++.h>//给出中序和后序//求先序/*晚上了就喜欢一些毒操作*/using namespace std;void b(string in,string af){ if(in.size()>0) { char ch=af[af.size()-1]; cout<<ch; int k=in.find(ch); b(in.substr(0,k)原创 2021-12-16 00:45:54 · 739 阅读 · 15 评论 -
周末总结1
时间过得好快呀,这一个周不是特别充实,还可以更好,有在做题但问小伙伴都比我做的要多,今天找到洛谷的一个筛选,愁死我了之前就没看到,现在像是发现了新大陆很开心,数据结构也要学线性表还不是很熟练oj上面的题都不熟练,线性表,栈和队列,以及基础算法的刷题十月份的任务。还学了一些二叉树的知识和例题...原创 2021-10-17 23:31:39 · 54 阅读 · 0 评论 -
周末总结2
周末总结KMP算法基础算法周末总结:本周做的题的很少(虽然比上周多但也很少),很害怕这速度下去没什么提高,已经尽力在挤时间做题,很想吐槽 聊聊Java,开学到现在代码敲了几乎快是一整学年C++的练习数了都是要提交的作业都是类似简单if判断for循环,实验课敲到吐打开4399最气人的是没flash没法玩。反正以后要努力提高自己的打字速度,争取早日提交实验作业。数据结构都是一些简单的大众知识点,对于实现还需要自己练,以后数据实验课不调试代码只做一遍先把简单的做完,因为有点浪费时间,不如课上仔细思考一下在实践原创 2021-10-23 18:05:01 · 196 阅读 · 0 评论 -
(大数处理)(高精度计算问题)
hdu1047【求和】hdu1047多组输入的处理以及大数的相加运算while(true) 的存在使得可以以0结束一次的相加大数位数相加,从高位开始相加,倒序存储方便后续处理成整数输出这种类型高精度的题目在正式的比赛中至少遇到过两次#include <iostream>#include <string>#include <cstring>using namespace std;int sum[150];char in[150];//存入大数int原创 2021-09-25 23:32:34 · 97 阅读 · 0 评论 -
总结
周六总结本周做了双向广搜,博客上了解女生赛,但后来知道我们是ccpc秦皇岛赛区的题,在晨星上还ba到了,1819级学姐的比赛,拿奖啦。看比赛题,虽然相对容易一点,但自己的水平自己很清楚,根本没办法保证很熟练的ac,虽然知道一点知识点。在洛谷上找了两道相对简单点的题目,依旧做不出来,很郁闷,一方面我的算法书只是没学完,一方面学过的知识做题也很差,现在水平真的很低,有点不知道从哪里开始学起。抑郁有点着急,希望能调整一下心态找到最优的状态就好,做到能做到的最好(希望每天不要那么困)(希望可以少睡一会).原创 2021-09-25 21:34:47 · 48 阅读 · 0 评论 -
P3375 【模板】KMP字符串匹配
字符串KMP算法P3375 【模板】KMP字符串匹配P3375 【模板】KMP字符串匹配视频讲解KMP这已经是第三次学KMP啦,不知道为什么老是忘字符串匹配算法:最简单的是暴力搜索,但很慢KMP算法更加快速高效:s1:a b a a c a b a b c a cs2:a b a b c1.计算前缀表prefix_table将S2单独拿出来数数S2:a b a b ca //最长公共前后缀的长度为0a b // 最长公共前后缀的长度为0a b a //最长公共前后缀的长原创 2021-11-02 22:28:07 · 232 阅读 · 0 评论 -
2021-10-25
#include<cstdio>const int N=100010;int T,n;char a[N];int main(){ scanf("%d",&T); while(T--) { scanf("%d%s",&n,a+1); int ans=-1; for(char c='a';c<='z';++c) { int cnt=0,l=1,r=n; while(l<r) { if(a[l]==a[r]) ++l原创 2021-10-25 17:36:53 · 168 阅读 · 0 评论 -
N皇后问题(深搜 重做详解)
P1219#include <bits/stdc++.h>#define ll long longusing namespace std;const int N=100;//6x6 棋盘被放置,使得每行每列只有一个,每对角线线至多有一个/*解决行冲突,规定一行只放一个皇后列:定义一个一个标记数组flag[]置为被占领状态对角线:对角线有两个方向,当第n行第col列被占领后,要同时把 上下对角线都只为占领状态*/int a[N],b[N],c[N],d[N];// a 分原创 2021-12-05 17:27:49 · 300 阅读 · 0 评论 -
Codeforces Round #750 (Div. 2)E题(动态规划)
Codeforces Round #750 (Div. 2)E题E题. Pchelyonok and Segments题意:将序列分为K段,长度需为K,K-1,,,1,且这些子段不重叠,并保证每个子段的元素之和呈严格递增,寻找最大的长度K,并输出K值。输入:51131 2 351 1 2 2 371 2 1 1 3 2 659 6 7 9 7输出:11231例如:71 2 1 1 3 2 6解:(2,1,1 )(3,2)(6)输出:3仔细一想肯定就是倒序原创 2021-11-01 21:30:46 · 179 阅读 · 2 评论 -
2021-10-10
在这里插入代码片@TOC#include <iostream>using namespace std;typedef struct lnode{ int data; int num; struct lnode *next;}lnode, *llist;llist creat(int n){ llist l=NULL; lnode *s,*r=NULL; int x; for(int i=1;i<=n;i++)原创 2021-10-10 23:51:57 · 172 阅读 · 0 评论 -
单链表C++实现
单链表的实现:单链表实现分解代码:1.无参构造函数——单链表的初始化2.有参构造函数——单链表的初始化3.按位查找和按值查找4.插入操作:5.删除操作:6.摧毁链表,收回空间:7.单链表的功能实现:单链表实现总代码:线性表的两种存储结构:顺序存储和链式存储单链表实现分解代码:struct node{ int data; node *next;};class linklist{public: linklist();//单链表初始化 linklist(int a[原创 2021-09-29 13:47:09 · 1633 阅读 · 0 评论 -
p2412字符串比较
p2412一个字符串比较的题目,直接用string字符串数组超时,后来看题解题目中的一个细节,无论大小写,这就需要将大写的转换成小写字母来比较,如果使用sort排序既需要保留原来的序号数和原来的原字符串#include <iostream>#include <string>#include <cstring>#include <algorithm>using namespace std;int n,m;//首先按照小写的字典序struct原创 2021-10-17 19:35:24 · 63 阅读 · 0 评论 -
周末总结4
周末总结字符串操作P5015 [NOIP2018 普及组] 标题统计P1055 [NOIP2008 普及组] ISBN 号码P1308 NOIP2011 普及组 统计单词数P2010 [NOIP2016 普及组] 回文日期P1012 [NOIP1998 提高组] 拼数P5587 打字练习函数,递归及递推P1028 [NOIP2001 普及组] 数的计算P1036 [NOIP2002 普及组] 选数P1464 FunctionP5534 【XR-3】等差数列P1192 台阶问题P1025 [NOIP2001原创 2021-11-08 01:19:42 · 207 阅读 · 0 评论 -
总结
暑假学习整理整理六月份比赛总结七月份学习总结整理六月份比赛总结结课后做过的cf,错题存了笔记,假期重做很多还像新题一样,像0,1,?简单的动态规划很难独立的敲出来,还是不理解动态规划七月份学习总结...原创 2021-09-19 20:59:55 · 70 阅读 · 0 评论 -
2021-10-11
p1608 奇怪的分组想不到用什么算法,无奈学了别人的做法,隔板法,将n减去所有的Ci,将剩余的分配原创 2021-10-12 00:28:17 · 77 阅读 · 0 评论 -
ACM第十二周总结
二分解题总结lhttps://vjudge.net/contest/439261本周做题时对题意的理解不足,题后分析不精接下来是根据本周做二分题解题分析。u题打印页数分阶段,每段固定费用对于每个pi输出相应的最小费用。首先理解题意后还是没有思路,看了一些博主对二分查找的整理,理清楚了二分查找基本的思想,这道题的解题思路也属于其中。做了这么多题了基本都是这样的思路,如何解这道题呢,该题存在一个关键点是对应每个pi可能在该区间最优也可能在之后的区间最优,那么问题来了要找到它到底在哪个区间。这里使用二分原创 2021-05-30 13:51:42 · 100 阅读 · 0 评论 -
区间dp(String Painter)
题意:将字符穿A粉刷成B,每次只能粉刷一个子段,输出最少需要粉刷多少次。题解:将解题分成两步,第一步,将一空串粉刷成B最少需要多少次,第二步,在第一步的基础上初始化数组ans[i],该数组是记录第i个位置A粉刷成B最少次数,如果A(i)=B(i)则在这里插入代码片,否则,遍历i之前的#include<string>#include<iostream>#include<algorithm>using namespace std;#define N 105cha原创 2021-05-04 23:28:50 · 87 阅读 · 0 评论 -
第六周Dp练习整理(离散化)
4.12原创 2021-04-13 07:57:45 · 141 阅读 · 0 评论 -
01背包
Description(C题)The aspiring Roy the Robber has seen a lot of American movies, and knows that the bad guys usually gets caught in the end, often because they become too greedy. He has decided to work in the lucrative business of bank robbery only for a sho原创 2021-05-16 15:51:27 · 139 阅读 · 0 评论 -
ACM第九周&&第十周背包总结(2021.5.15补)
背包知识理解和总结:01背包: 每种物品仅有一件,可以选择放与不放。完全背包: 每种物品无限件。多重背包: 第i种物品最多有n[i]件可用。分组背包: 选择本组的某一件,还是一件不选。★01背包:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]} ;//f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。因为该状态f[i][v]只与上一状态有关,所以出现了简化(一维):f[v]=max{f[v],f[v-c[i]]+w[i]}还有,一点原创 2021-05-10 00:25:30 · 93 阅读 · 0 评论 -
ACM第七周区间Dp
$原创 2021-04-23 23:53:22 · 126 阅读 · 0 评论 -
ABC string(补)
A. ABC String原创 2021-03-16 00:06:26 · 118 阅读 · 0 评论 -
五一假期集训感想
每天都会很忙碌,但要想做好就容不得想其他事,用心认真对待集训,充分利用时间会收获很多很多。原创 2021-05-06 01:05:46 · 131 阅读 · 1 评论 -
第六周Mashmokh and ACM(Dp Y)
Mashmokh’s boss, Bimokh, didn’t like Mashmokh. So he fired him. Mashmokh decided to go to university and participate in ACM instead of finding a new job. He wants to become a member of Bamokh’s team. In order to join he was given some programming tasks and原创 2021-04-17 00:45:08 · 165 阅读 · 0 评论 -
第一周学习总结(STL)
第一周学习总结STL一、字符串(string)头文件: <string>定义:string访问:下标访问:范围从0到s.size()-1迭代器访问:在这里插入代码片常用操作:二、栈(stack)头文件stack定义:stack<data_type> stack_name;操作:s.empty();//返回bool类型表示栈内是否为空s.size();//返回栈元素个数s.top();//返回栈顶元素s.pop();//移除栈顶元素s.pus原创 2021-03-13 14:52:47 · 219 阅读 · 0 评论 -
ACM第四五周dp总结
解题总结先从近期的题原创 2021-04-10 21:53:08 · 187 阅读 · 0 评论