F2: 什么dfs根本不会啊,只会瞎贪心。。。

我们考虑先连哪些边,对于u,v两个点,如果u,v所在的联通块都与1相连的话,那我们肯定先不连这种边吧。

因为太亏了啊。。。

总而言之我们要在不影响答案的情况下,与1相关的边我们要尽可能地扔到后面。

那么我们可以先把1拿出来,连来连去变成一片森林,然后我们再在森林之间连来连去,最后去连1.

dfs代码看不懂啊。。怎么十几行就没了啊。。这是什么东西啊。。。

upd:看懂了。首先随便dfs一下,因为dfs是从下到上的,所以到最后与1相连的边就是最少的need,那么有解的话这个need应该小于d。

那么现在我们可以遍历一下与1直接相连的点,如果这个点跟其他的点连了,那么我们可以把这条边挪到1这里来。

放一下我瞎搞的贪心代码。。。

 #include <bits/stdc++.h>
#define pii pair<int,int>
#define mk(a,b) make_pair(a,b)
using namespace std;
int n,m,d;
int fa[],b[];
int find(int a){
return a==fa[a]?a:fa[a]=find(fa[a]);
}
bool unite(int x,int y){
x=find(x),y=find(y);
if(x==y)return ;
if(b[x])fa[y]=x;
else fa[x]=y;
return ;
}
int u[],v[];
vector<int> g;
vector<pii>ans;
int main(){
ios::sync_with_stdio(false);
cin>>n>>m>>d;
for(int i=;i<=n;i++)fa[i]=i;
for(int i=;i<=m;i++){
cin>>u[i]>>v[i];
if(u[i]==){
g.push_back(v[i]);
b[v[i]]=;
} else if(v[i]==){
g.push_back(u[i]);
b[u[i]]=;
}
}
int tot = n-;
for(int i=;i<=m;i++){
if(tot<=d)break;
int fa = find(u[i]),fb=find(v[i]);
if(b[fa]&&b[fb])continue;
if(u[i]!=&&v[i]!=&&unite(u[i],v[i])){
ans.push_back(mk(u[i],v[i]));
tot--;
}
}
for(int i=;i<=m;i++){
if(tot<=d)break;
int fa = find(u[i]),fb=find(v[i]);
if(b[fa]&&b[fb]&&u[i]!=&&v[i]!=&&unite(u[i],v[i])){
ans.emplace_back(mk(u[i],v[i]));
tot--;
}
}
for(auto x:g){
if(unite(,x))
d--,tot--,ans.push_back(mk(,x));
if(tot==||d==)
break;
}
if(tot!=){
cout<<"NO"<<endl;
} else{
cout<<"YES"<<endl;
for(auto tmp:ans){
cout<<tmp.first<<' '<<tmp.second<<'\n';
}
}
}

F1:找个最大的点,然后加边

 #include <bits/stdc++.h>
using namespace std;
const int N = 2e5+;
vector<int> g[N];
int n,m,d[N],fa[N],u[N],v[N];
int find(int a){
return a==fa[a]?a:fa[a]=find(fa[a]);
}
bool unite(int x,int y){
x=find(x),y=find(y);
if(x==y)return ;
fa[x]=y;
return ;
}
vector<pair<int,int>> ans;
int main(){
ios::sync_with_stdio(false);
cin>>n>>m;
for(int i=;i<=n;fa[i]=i,i++);
for(int i=;i<=m;i++){
cin>>u[i]>>v[i];
g[u[i]].push_back(v[i]);
g[v[i]].push_back(u[i]);
d[u[i]]++,d[v[i]]++;
}
int mx=,id=-;
for(int i=;i<=n;i++)
if(d[i]>mx)mx=d[i],id=i;
for(auto x:g[id]){
unite(x,id);
ans.push_back(make_pair(x,id));
}
for(int i=;i<=m;i++){
if(unite(u[i],v[i]))
ans.push_back(make_pair(u[i],v[i]));
}
for(auto x:ans)
cout<<x.first<<' '<<x.second<<endl;
}

E:考虑dp和贪心(雾),用dp[i][j]表示到第i个位置分为j组。 如果不管i那么就是 dp[i-1][j],如果管了i的话,那么一定是放到(i-5)那一组里最优吧。

然后可以先预处理一下每个数最左能放到哪。

 #include <bits/stdc++.h>
using namespace std;
int n,k;
int a[],id[];
int dp[][];
int main(){
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=;i<=n;i++){
cin>>a[i];
}
sort(a+,a++n);
for(int i=;i<=n;i++){
id[i]=lower_bound(a+,a++i,a[i]-)-a;
}
for(int i=;i<=n;i++){
for(int j=;j<=k;j++){
dp[i][j]=max(dp[id[i]-][j-]+i-id[i]+,dp[i-][j]);
}
}
cout<<dp[n][k];
}

D:这什么啊??哪里来的数论啊,直接map存一下找个最多的不就行了吗,这范围也卡不了精度啊我看。。

 #include <bits/stdc++.h>
#define rep(x) for(int i=1;i<=x;i++)
using namespace std;
typedef long double db;
int n;db a[],b[];
map<db,int>m;
int main(){
ios::sync_with_stdio(false);
cin>>n;
rep(n)cin>>a[i];
rep(n)cin>>b[i];
int ans=;
rep(n){
if(a[i]!=)
m[b[i]/a[i]]++;
else{
if(b[i]==)
ans++;
}
}
int tmp=ans;
ans=;
for(auto t:m){ans=max(ans,t.second);}
cout<<ans+tmp<<endl;
}

C:

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,a[];
map<int,int> mp;
map<int,int>::iterator it;
int main(){
ios::sync_with_stdio(false);
cin>>n;
for(int i=;i<=n;i++)cin>>a[i],mp[a[i]]++;
ll ans = ;
for(it=mp.begin();it!=mp.end();it++){
ll tmp = it->second;
for(int i=;i<=;i++){
if(mp.count(it->first+i)){
tmp+=mp[it->first+i];
}
}
ans=max(ans,tmp);
}
cout<<ans;
}

B:好难。

 #include <bits/stdc++.h>
using namespace std;
int n,k,x,b[];
int main(){
ios::sync_with_stdio(false);
cin>>n>>k;
for(int i=;i<=n;i++){
cin>>x,b[x%k]++;
}
int ans = b[]/;
for(int i=;i<k;i++){
if(i==k-i) ans+=b[i]/;
else if(i<k-i)ans+=min(b[i],b[k-i]);
}
ans<<=;
cout<<ans<<endl;
}

A:

 #include <bits/stdc++.h>
using namespace std;
string s,t;
void g(){cout<<setfill('')<<setw();}
int main(){
ios::sync_with_stdio(false);
cin>>s>>t;
int t1=,t2=;
t1=(s[]-'')*+(s[]-'');
t1*=;
t1+=(s[]-'')*+(s[]-'');
t2=(t[]-'')*+(t[]-'');
t2*=;
t2+=(t[]-'')*+t[]-'';
int tmp = t1+t2>>;
int res = tmp/;tmp%=;
g();
cout<<res<<':';
g();
cout<<tmp<<endl;
}

R 544的更多相关文章

  1. babeljs源码

    babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...

  2. [原]CentOS7安装Rancher2.1并部署kubernetes (二)---部署kubernetes

    ##################    Rancher v2.1.7  +    Kubernetes 1.13.4  ################ ##################### ...

  3. 利用python进行数据分析2_数据采集与操作

    txt_filename = './files/python_baidu.txt' # 打开文件 file_obj = open(txt_filename, 'r', encoding='utf-8' ...

  4. Django项目:CRM(客户关系管理系统)--81--71PerfectCRM实现CRM项目首页

    {#portal.html#} {## ————————46PerfectCRM实现登陆后页面才能访问————————#} {#{% extends 'king_admin/table_index.h ...

  5. sparklyr包:实现Spark与R的接口

    日前,Rstudio公司发布了sparklyr包.该包具有以下几个功能: 实现R与Spark的连接—sparklyr包提供了一个完整的dplyr后端 筛选并聚合Spark数据集,接着在R中实现分析与可 ...

  6. How-to go parallel in R – basics + tips(转)

    Today is a good day to start parallelizing your code. I’ve been using the parallel package since its ...

  7. sparklyr包:实现Spark与R的接口+sparklyr 0.5

    本文转载于雪晴数据网 相关内容: sparklyr包:实现Spark与R的接口,会用dplyr就能玩Spark Sparklyr与Docker的推荐系统实战 R语言︱H2o深度学习的一些R语言实践-- ...

  8. R语言(入门小练习篇)

    问题: 一组学生参加了数学.科学和英语考试.为了给所有的学生确定一个单一的成绩衡量指标,需要将这些科目的成绩组合起来.另外,还想将前20%的学生评定为A,接下来20%的学生评定为B,以此类推.最后,希 ...

  9. R多线程并行计算

    先上代码案例: 主要的操作: library(parallel);#加载并行计算包 cl <- makeCluster(8);# 初始化cpu集群 clusterEvalQ(cl,library ...

随机推荐

  1. Uva11582 Colossal Fibonacci Numbers!(同余模定理+快速幂)

    https://vjudge.net/problem/UVA-11582 首先明确,斐波那契数列在模c的前提下是有循环节的.而f[i] = f[i-1]+f[i-2](i>=2)所以只要有两个连 ...

  2. iOS:基于RTMP的视频推流

    iOS基于RTMP的视频推流 一.基本介绍 iOS直播一出世,立马火热的不行,各种直播平台如雨后春笋,正因为如此,也同样带动了直播的技术快速发展,在IT界精通直播技术的猴子可是很值钱的.直播技术涉及的 ...

  3. MySQL表与表之间的SQL Joins图介绍

    下图很好的解释了各表之间SQL Joins之间的关系

  4. 解决Everything1.4版本预览时不支持自定义后缀的问题

    2017年6月Everything版本升级到了1.4.x 个人使用下来认为最主要的有以下几点 添加预览功能 搜索结果多选 点击目录列即打开文件所在目录(需要设置:常规->结果->双击路径列 ...

  5. IDEA调试SpringMvc项目时,出错:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener,解决办法

    具体报错信息如下图所示: 解决方法:File > Project Structure > Artifacts > 在右侧Output Layout右击项目名,选择Put into O ...

  6. android Glide简单使用

    版权声明:大家可以转载,请写明转载申明 https://blog.csdn.net/bzlj2912009596/article/details/81702367 今天,简单讲讲Android里Gli ...

  7. 在新安装的Centos中安装python3.7 解决pip和yum问题

    首先要先安装依赖包: yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-deve ...

  8. asp.net中 使用参数化mysqlparameter 保存数据时,总保存成一个汉字的解决方案。

    var param = new MySqlParameter("@" + columName, property.Value); param.DbType = DbType.Str ...

  9. ionic入门教程-ionic路由详解(state、route、resolve)(转)

    http://blog.csdn.net/onil_chen/article/details/51758696?appinstall=0 今天好好的跟大家讲讲ionic的路由配置. 问到的朋友有点多, ...

  10. lbs@node(lbs asp blog 移植到 nodejs)

    lbs@node 2018年的4月26日,我在自己的idea清单中,加上了一条"基于 nodejs 移植 lbs 博客系统". 一.lbs 是什么东东? 它是一款比较小众的博客程序 ...