摘要:
简单题View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;char key[4][20];int main(){ //freopen("t.txt", "r", stdin); strcpy(key[0], "1234567890-="); strcpy(key[1], "QWERTYUIOP[]\\"); strcp 阅读全文
摘要:
暴力搜索dfs,注意要利用递归来减少计算总通信量的次数。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 21int map[maxn][maxn], ans = 0;bool in[maxn];int n;void dfs(int now, int sum){ if (now > n) { if (sum > ans) ans = sum; return; 阅读全文
摘要:
线段树,线段树一般是对连续的区块进行操作,每次给出相应的区块,但是本题给出海报覆盖的是区间,要把区间对应到区块上。虽然有些情况还不能处理,但是过了。View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;#define maxn 20005struct Interval{ int s, e;}interval[maxn];struct Node{ N 阅读全文
摘要:
简单并查集View Code #include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>using namespace std;#define maxn 50004int father[maxn];int getanc(int a){ if (father[a] == a) return a; return father[a] = getanc(father[a]);}void merge(int a, int b){ if (father[a] == -1) 阅读全文
摘要:
题意:有k种物品,m个供应商,n个收购商。每个供应商和收购商都需要一些种类的物品若干。每个供应商与每个收购商之间的对于不同物品的运费是不同的。求满足收购商要求的情况下,最小运费。分析:最小费用最大流,最大流的前提下求最小费用。这题我们可以把k种物品分开计算,每次对一种物品进行最小费用最大流计算。如果不分开算会超时。对于每种物品,从源到供应商连接,容量为供应商的储存量,费用为0。采购商到汇连边,容量为需求量,费用为0。供应商到采购商连边,容量为无穷,费用为对应的运费。最小费用最大流的计算流程大致是:每次找到一条根据费用来看的最短路,然后对这条最短路进行增加流量,直到所有路径流量都不能增加为止。V 阅读全文