
模板
文章平均质量分 73
模板
AimerAimerAimer
我人很懒,什么都没写
展开
-
背包问题九讲(自用)+货币系统(方案数)
1. 01背包问题2. 完全背包问题3. 多重背包问题4. 混合背包问题5. 二维费用背包问题6. 分组背包问题7. 背包问题求方案数8. 求背包问题的方案9. 有依赖的背包问题01背包问题二维数组#include <bits/stdc++.h>using namespace std;int n,m;int dp[1005][1005]={0};int v,w;int main(){ cin >> n >> m原创 2022-04-25 21:48:56 · 402 阅读 · 0 评论 -
链式前向星
边集数组a[i].to表示第i条边的终点a[i].next表示与第i条边同起点的下一条边的存储位置a[i].w为边权值数组head[],它是用来表示以i为起点的第一条边存储的位置,实际上你会发现这里的第一条边存储的位置其实在以i为起点的所有边的最后输入的那个编号.struct edge//存储边{ int next;//下条边的编号 int to;//这条边到达的节点...原创 2020-04-14 22:06:30 · 130 阅读 · 0 评论 -
线段树模板(区间修改+区间查询)
1548:【例 2】A Simple Problem with Integers时间限制: 5000 ms 内存限制: 524288 KB提交数: 2062 通过数: 495【题目描述】这是一道模板题。给定数列 a[1],a[2],…,a[n],你需要依次进行 q 个操作,操作有两类:1、lrx:给定 l,r,x,对于所有 i∈[l,r],将 a[i] 加上 x...原创 2020-04-04 18:32:41 · 286 阅读 · 0 评论 -
线段树模板(单点修改+区间查询)
1547:【 例 1】区间和时间限制: 1000 ms 内存限制: 524288 KB提交数: 2072 通过数: 639【题目描述】给定一数列,规定有两种操作,一是修改某个元素,二是求区间的连续和。【输入】输入数据第一行包含两个正整数n,m(n≤100000,m≤500000),以下是m行,每行有三个正整数k,a,b(k=0或1,a,b≤n).k=0时表示将...原创 2020-04-04 18:08:09 · 452 阅读 · 0 评论 -
hdu 4857逃生(反向拓扑+优先队列+逆向输出)
topoSort1->4->2 5->3->2结果:1)字典序从小到大排序:1 4 5 3 2 +(正向建图+正向输出+优先级小)2)尽量要最小的靠前: 1 5 3 4 2 +(反向建图+反向输出+优先级大)#include <iostream>#include <cstdio>#include <cmath&g...原创 2020-03-24 13:23:51 · 156 阅读 · 0 评论 -
拓扑排序(模板)2153 D.ly的排队问题(ZCMU)
思路:在有向图中将入度为0的节点依次分离出来。如果最后不存在入度为0的节点,则说明有环,不存在拓扑排序,无解。注意:如果按照字典序排序,则改用优先队列。模板 queue<int>q; vector<int>edge[n]; for(int i=0;i<n;i++) //n 节点的总数 if(in[i]==0) q.p...原创 2020-03-24 12:27:39 · 282 阅读 · 0 评论 -
lower_bound()与upper_bound()
#include <iostream>#include <cstdio>#include <algorithm>#define ll long longusing namespace std;int a[10]={1,2,2,3,3,4,4,4,5,6},n=10;int b[10]={6,5,4,4,4,3,3,2,2,1};int my_l...原创 2020-03-04 23:16:30 · 98 阅读 · 0 评论 -
各排序整合
用函数实现排序,并输出每趟排序的结果.直接插入排序:#include <iostream>using namespace std;int a[100];void insertSort(int n,int *a){ for(int i=1;i<n;i++) { int t=a[i],j; for(j=i-1;j>...原创 2020-02-28 17:34:36 · 279 阅读 · 0 评论 -
归并排序模板
#include <bits/stdc++.h>using namespace std;const int maxn=1e5+5;int a[maxn],n,tmp[maxn];//临时数组void mergeSort(int *a,int l,int r){ if(l>=r) return; int mid=(l+r)>>...原创 2020-02-25 19:38:43 · 109 阅读 · 0 评论 -
快速排序模板
#include <bits/stdc++.h>using namespace std;const int maxn=1e5+5;int a[maxn],n;void quickSort(int *a,int l,int r){ if(l>=r) return; int i=l,j=r,t=a[i]; while(i&l...原创 2020-02-25 19:12:20 · 126 阅读 · 0 评论 -
大数乘法(高精度)
#include <bits/stdc++.h>#define ll long longusing namespace std;string s1,s2;string multi(string s1,string s2){ int n1=s1.size(),n2=s2.size(); string res(n1+n2,'0'); for(int i...原创 2020-02-24 11:03:42 · 150 阅读 · 0 评论 -
快速幂+取余模板 O(log(n))
位运算#include <bits/stdc++.h>#define ll long longusing namespace std;ll a,b,k;ll quickPower(ll a,ll b)//+取余k{ ll res=1,base=a; while(b)//次数 { if(b&1) { ...原创 2020-02-24 10:23:13 · 118 阅读 · 0 评论