分类: 算法

15 篇文章

贪心算法专训题解
P1007. 独木桥 题目描述 当两人面对面相碰时,两人都会转向行走, 那可以看成两个人交错而过。 求最小时间,计算出每个人到达两边的最小时间,所有时间中最大的一个即为所有人离开桥需要用的时间。 求最大时间,计算出每个人到达两边的最大时间,所有时间中最大的一个即为所有人离开桥需要用的时间。 #include<bits/stdc++.h>…
Codeforces Round 988 Div. 3 题解
题目链接:https://codeforces.com/contest/2037 E. Kachina's Favorite Binary String 通过不断询问$k_i=f(1,i),i=1,2,...,n$,如果ki>ki-1,则表示改位置为1,会产生新的满足条件的子串;如果$k_i=k_{i-1}$,则表示当前位置是0,不会产生新的满足条…
Codeforces Round 925 Div. 3 题解
题目链接:https://codeforces.com/contest/1931 A. Recovering a Small String 难度:800 将a记为1,b记为2,以此类推。给出一个3-78之间的一个数,求出一个字典序最小的3个字母,使得这3个字母相加等于给定的数。 int t,x,a,b,c; int main() { // ios:…
寒假算法训练(二)字符串算法
#Algo0201. 【模板】字符串哈希 题目描述 题目需要求出给定字符串中是否有重复的,利用桶存储字符串的Hash,并判断该Hash是否存在。 char s[2001]; int n,ans; const int N=100005; int a[43961944]; struct Hash { const int Mod1=439…
寒假算法训练(一)数据结构基础
#Algo0101. Look Up S 题目描述 本题为单调栈模版题。每头奶牛向右看,求出每只奶牛离她最近的仰望对象,也就是求出右边第一个大于自己的数。从右往左维护一个严格单增的单调栈即可。 int n,a[1000006],b[1000006]; stack<pair<int,int>> q; int…
并查集
模版 #include<bits/stdc++.h> using namespace std; int n,m,k,x,y; int pre[200005]; int find(int x) //查找根 { if (x!=pre[x]) pre[x]=find(pre[x]); return pre …
字典树Trie Tree
模版 struct trie { int next[26]; //指向子节点节点的下标,默认值为0则表示没有子节点,并用0-25代表'a'-'z' int isEnd; //是否为一个单词的结尾 }tree[500005]; int inc; //最后一个分配的字典树下标,用于分配新的节点下标 int insert(string s…
单调栈
模版 //以下所有将b[i]=q.top().second改为b[i]=q.top().first 即可得到元素的值而不是坐标。 //n为数组规模,默认下标从1开始 //数组a为原数组 //数组b为查找到的坐标(元素值) void findRMin(int n,int a[],int b[]) //寻找右边第一个比自…
算法基础训练 50 题(四)搜索
#JC0401. 自然数的拆分问题 题目描述 利用回溯算法,每次都从1遍历到上限,并记录当前搜索的值以及总和。每当总和等于n时,输出所有记录的值。 using namespace std; int t,n,m,a[100],ans; string s; int run(int l,int s,int sum) { if (sum==n) {…