Codeforces Round #544 (Div. 3) D F1 F2
题目链接:D. Zero Quantity Maximization
#include <bits/stdc++.h> using namespace std; #define maxn 200005 #define LL long long #define pii pair<LL,LL> map<pair<LL,LL>,LL>mp,mpp; LL a[maxn],b[maxn]; LL gcd(LL a,LL b){ return b?gcd(b,a%b):a; } int main(){ LL n; scanf("%lld",&n); ;j<n;j++){ scanf("%lld",&a[j]); } ;k<n;k++){ scanf("%lld",&b[k]); } LL mx = ,ans = ; ;j<n;j++){ LL z = gcd(abs(a[j]),abs(b[j])); ){ a[j] = -a[j]; b[j] = -b[j]; } ){ ) ans++; continue; } ){ mp[make_pair(1LL*,1LL*)]++; mx = max(mx, mp[make_pair(1LL*,1LL*)]); continue; } mp[make_pair(a[j]/z,b[j]/z)]++; mx = max(mx, mp[make_pair(a[j]/z,b[j]/z)]); } printf("%lld\n",mx+ans); }
F1: Spanning Tree with Maximum Degree
判断一下 bfs 就ok
#include<bits/stdc++.h> using namespace std; #define maxn 200005 #define LL long long vector<int>q[maxn]; int fa[maxn]; bool flag[maxn]; void bfs(int u){ queue<int>Q; Q.push(u); while(!Q.empty()){ u = Q.front(); Q.pop(); ;j<q[u].size();j++){ int v = q[u][j]; if(!flag[v]){ flag[v] = ; Q.push(v); printf("%d %d\n",u,v); } } } } int main(){ memset(fa,,sizeof(fa)); memset(flag,,sizeof(flag)); ,; scanf("%d%d",&n,&m); ;j<m;j++){ int u,v; scanf("%d%d",&u,&v); q[u].push_back(v); q[v].push_back(u); fa[u]++; fa[v]++; if(mx<fa[u]){ mx = fa[u]; in = u; } if(mx<fa[v]){ mx = fa[v]; in = v; } } // cout<<in<<endl; flag[; bfs(in); }
F2 :F2. Spanning Tree with One Fixed Degree
先判断 节点的度够不够 不够直接 输出 NO
dfs 判断1有多少个连通块 如果连通块数量 大于d 直接输出NO
最后 添加 在 1 节点添加 d-连通块个数个 点 bfs
#include <bits/stdc++.h> using namespace std; #define maxn 200005 #define LL long long #define pii pair<int,int> vector<int>q[maxn],z; vector<pii>lis; bool fa[maxn]; int n,m,d; void dfs(int u){ ;j<q[u].size();j++){ int v = q[u][j]; if(!fa[v]){ fa[v] = ; dfs(v); } } } bool bfs(int u){ queue<int>Q; ; Q.push(u); while(!Q.empty()){ u = Q.front(); Q.pop(); ;j<q[u].size();j++){ int v = q[u][j]; if(!fa[v]){ fa[v] = ,sum++; Q.push(v); //cout<<u<<" "<<v<<endl; lis.push_back(make_pair(u,v)); ){ d--; ) break; } } } } //cout<<sum<<" "<<n-1<<endl; )) ; ; } int main(){ scanf("%d%d%d",&n,&m,&d); memset(fa,,sizeof(fa)); ; ;j<m;j++){ int u,v; scanf("%d%d",&u,&v); q[u].push_back(v); q[v].push_back(u); ||v==) sum++; } if(sum<d){ printf("NO\n"); ; } fa[]=; set<int>se; ;j<q[].size();j++){ ][j]; if(!fa[v]){ fa[v]=; se.insert(v); dfs(v); } } //cout<<se.size()<<endl; if(se.size()>d){ printf("NO\n"); ; } //cout<<*se.begin()<<endl; ;j<q[].size()&&se.size()<d;j++){ se.insert(q[][j]); } q[].clear(); for(auto &i:se){ //cout<<i<<endl; q[].push_back((int)i); } memset(fa,,sizeof(fa)); fa[] = ; bfs(); printf("YES\n"); ;j<lis.size();j++){ pii pa = lis[j]; printf("%d %d\n",pa.first,pa.second); } }
Codeforces Round #544 (Div. 3) D F1 F2的更多相关文章
- Codeforces Round #544 (Div. 3) 题解
Codeforces Round #544 (Div. 3) D. Zero Quantity Maximization 题目链接:https://codeforces.com/contest/113 ...
- CodeForces Round #544 Div.3
A. Middle of the Contest 代码: #include <bits/stdc++.h> using namespace std; int h1, m1, h2, m2; ...
- Codeforces Round #544 (Div. 3)解题报告
A.Middle of the Contest 考虑把输入的时间单位化成分钟,相加除以2就好了 #include<bits/stdc++.h> using namespace std; # ...
- Codeforces Round #544 (Div. 3) (补)
D:没有注意到a==0&&b==0的情况,把自己卡崩了.对于数学公式推导一定要注意关于0的特殊情况,不可以少 #include <iostream> #include &l ...
- Codeforces Round #544 (Div. 3) dp + 双指针
https://codeforces.com/contest/1133/problem/E 题意 给你n个数(n<=5000),你需要对其挑选并进行分组,总组数不能超过k(k<=5000) ...
- Codeforces Round #544 (Div. 3) D. Zero Quantity Maximization
链接:https://codeforces.com/contest/1133/problem/D 题意: 给两个数组a,b. 同时ci = ai * d + bi. 找到一个d使c数组中的0最多. 求 ...
- Codeforces Round #544 (Div. 3) C. Balanced Team
链接:https://codeforces.com/contest/1133/problem/C 题意: 给n个数, 在这n个数中选最多n个数,来组成一个队伍. 保证这n个数的最大最小差值不大于5. ...
- Codeforces Round #544 (Div. 3) B.Preparation for International Women's Day
链接:https://codeforces.com/contest/1133/problem/B 题意: 给n个数,和一个k,在n个数中选几对数,保证没对数相加可以整除k. 求最大能选几个数. 思路: ...
- Codeforces Round #544 (Div. 3) A.Middle of the Contest
链接:https://codeforces.com/contest/1133/problem/A 题意: 给两个时间点,求中间时间点. 思路: 数学 代码: #include <bits/std ...
随机推荐
- Java笔记(day9~day10)
继承: 好处:1.提高代码复用性: 2.让类之间产生关系,给多态提供了前提: 父类.子类 Java中支持单继承,不直接支持多继承,但对C++的多继承进行了改良 单继承:一个子类只能有一个直接复类 ...
- PHP设计模式的六大设计原则
PHP设计模式的六大设计原则 1 简介 软件设计最大的难题就是应对需求的变化,但是纷繁复杂的需求变化却是不可预料的.此时,我们可以通过六大设计原则良好的应对未来的变化. 2 讲解 2.1 单一职责原则 ...
- vue 单文件组件中样式加载
在写单文件组件时,一般都是把标签.脚本.样式写到一起,这样写个人感觉有点不够简洁,所以就想着把样式分离出去. 采用import加载样式 在局部作用域(scoped)采用@import加载进来的样式文件 ...
- 模板引擎artTemplate的使用
1.引入template文件 <script src = js/template-native.js></script> 2.写模板 <script type=" ...
- Vue开发插件
(一)Vue.js的插件应该有一个公开方法:install. 这个方法的第一个参数是Vue构造器,第二个参数是一个可选的选项对象,一般是如下操作: MyPlugin.install = functio ...
- 团队项目(六)- Alpha阶段项目复审(江山代有才人秃)
排名仅代表个人观点: 小组名字 优点 缺点&Bug报告 排名 中午吃啥队 从测试链接来看,作为一个订餐的APP,有着跟现在的订餐APP相似的功能,很完整,是一个踏踏实实做出来的项目 向购物车中 ...
- MySQL Error Number 1005 Can’t create table(Errno:150)
mysql数据库1005错误解决方法 MySQL Error Number 1005 Can’t create table ‘.\mydb\#sql-328_45.frm’ (errno: 150) ...
- Redmine入门-安装
Redmine提供了两种方式安装,如果仅仅只是使用Redmine,建议采用一键安装的方式,快捷方便.如果需要做二次开发或者更多的个性化处理,可以采用源码安装方式,下面分别介绍两种安装方式. ----- ...
- objective-c高级编程 笔记
引用计数:通过给对象计数标志,来判断是否释放对象 注:只能释放自己持有的对象 id obj = [NSMutableArray array] 如obj这个对象,并不是你所持有的对象,所以你无法进行释放 ...
- dig请求和回应中的参数解释
; <<>> DiG 9.9.5-3ubuntu0.6-Ubuntu <<>> baidu.com dig这个程序的版本号和要查询的域名 ;; glob ...