A. 骑上彩虹
看到一个人想要骑上彩虹,那么他喜欢的所有人和喜欢他的所有人都必须一同骑上彩虹,考虑并查集,题目求彩虹能承载的最多人数,考虑01背包算法
首先将求并查集数组,路径压缩到根节点,新建数组,表示根节点人骑上彩虹时同时要骑上去的人数,子节点设为0,新建数组,表示根节点人上去需要的质量,从01背包的角度看,质量看成价值,人数看成占的容量就行了
大约 3 分钟
看到一个人想要骑上彩虹,那么他喜欢的所有人和喜欢他的所有人都必须一同骑上彩虹,考虑并查集,题目求彩虹能承载的最多人数,考虑01背包算法
首先将求并查集数组,路径压缩到根节点,新建数组peo[MAXN],表示根节点人骑上彩虹时同时要骑上去的人数,子节点设为0,新建数组aft[MAXN],表示根节点人上去需要的质量,从01背包的角度看,质量看成价值,人数看成占的容量就行了
例1 给定两个字符串 S1 和 S2,S2是S1的子串,输出S2在S1中所有的起始下标
标答用的Hash,但我觉得STL厉害,我用set
#include<iostream>
#include<set>
using namespace std;
int n;
string a;
set<string> s;
int main() {
scanf("%d",&n);
while(n--) {cin>>a;s.insert(a);}
cout << s.size();
}