博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforces Round #109 (Div. 1) 题解 【ABC】
阅读量:5323 次
发布时间:2019-06-14

本文共 1230 字,大约阅读时间需要 4 分钟。

A - Hometask

题意:给你一个字符串,然后再给你k个禁止挨在一起的字符串,问你最少删除多少个字符串,使得不会有禁忌的字符串对挨在一起。题目保证每个字符最多出现在一个禁忌中。

题解:由于每个字符只会出现在一个禁忌里面,那么就说明每个询问是独立的。对于每个询问,我们贪心的去处理就好了,就连续的禁忌字符串,我们删除少的那个就好了。

#include
using namespace std;string s,s2;int ans,a,b,m,c,d;int main(){ cin>>s; cin>>m; for(int i=0;i
>s2; a=0,b=0; for(int j=0;j

B. Colliders

题意:你要实现两个功能,加x和减x。如果是加x的话,那么如果添加x的时候如果已经添加了和他不互质的数的话,那么就输出冲突。否则就加进去。

题解:我们对于每个数的因子都预处理处理啊,这个复杂度是nlogn,然后我们再用个set维护存在这个因子的数的开启个数,然后每次暴力的修改就可以了,这个复杂度是nlognlogn的。

代码:

#include
using namespace std;const int maxn = 1e5+7;int v[maxn],n,m,num;vector
p[maxn];set
S[maxn];string op;void pre(){ for(int i=2;i
>op>>num; if(op[0]=='+') add(num); else del(num); }}

C - Double Profiles

题意:给你一个1e6个点,1e6个边的无向图,然后问你有多少对点,满足这两个点的所连接的点都完全相同。

题解:分为两种情况,(i,j)相互连接的,这样就看边左右的两个点,加上自己这个点的hash值是否相同。不相互连接的,那么显然不加上自己这个点的边集hash是一样的,那么我们排序扫一遍统计即可。

代码:

#include
using namespace std;const int maxn = 1e6+7;int n,m;int g[2][maxn];long long p[maxn],k[maxn];int main(){ scanf("%d%d",&n,&m); p[0]=1; for(int i=1;i

转载于:https://www.cnblogs.com/qscqesze/p/6797295.html

你可能感兴趣的文章
一款jq的计时器
查看>>
求1+2+…+n
查看>>
开发者必备的6款源码搜索引擎
查看>>
一个值只有0和1的字段,到底要不要建索引?
查看>>
JavaScript的Math对象
查看>>
form 禁止跳转
查看>>
第七周学习总结
查看>>
20145122《JAVA开发环境的熟悉》实验报告
查看>>
186. Reverse Words in a String II
查看>>
JAVA-初步认识-第五章-数组-常见操作-进制转换整合
查看>>
如何在.net4.0中使用.net4.5的async/await
查看>>
Spring自定义标签实现及踩过的坑(亲测)
查看>>
一些字符串的题
查看>>
第2章:标准输入与输出
查看>>
个人项目——买书
查看>>
POJ 2309 BST
查看>>
Codefroces 415B Mashmokh and Tokens
查看>>
HDU 3440 House Man
查看>>
Mysql 用户管理
查看>>
实验五
查看>>