Codeforces_723
A.取中间那个点即可。
#include<bits/stdc++.h>
using namespace std; int a[]; int main()
{
ios::sync_with_stdio(false);
cin >> a[] >> a[] >> a[];
sort(a,a+);
cout << a[]-a[] << endl;
return ;
}
B.模拟,注意判断是否在括号内。
#include<bits/stdc++.h>
using namespace std; int n;
string s; int main()
{
cin >> n;
getchar();
getline(cin,s);
int maxx = ,cnt = ,now = ,flag = ;
for(int i = ;i < n;i++)
{
if(s[i] == '(')
{
flag = ;
now = ;
}
else if(s[i] == ')')
{
flag = ;
if(now) cnt++;
now = ;
}
else if(s[i] == '_')
{
if(flag == && now) cnt++;
now = ;
}
else
{
now++;
if(flag == ) maxx = max(maxx,now);
}
}
cout << maxx << " " << cnt << endl;
return ;
}
C.先算出ans,再把个数不到ans的数填满。
#include<bits/stdc++.h>
using namespace std; int n,m,a[],b[] = {}; int main()
{
ios::sync_with_stdio(false);
cin >> n >> m;
for(int i = ;i <= n;i++)
{
cin >> a[i];
if(a[i] <= m) b[a[i]]++;
}
int ans = n/m,cnt = ,now = ;
for(int i = ;i <= n;i++)
{
if(a[i] <= m && b[a[i]] <= ans) continue;
while(b[now] >= ans) now++;
if(now == m+) break;
if(a[i] <= m) b[a[i]]--;
a[i] = now;
b[now]++;
cnt++;
}
cout << ans << " " << cnt << endl;
for(int i = ;i <= n;i++) cout << a[i] << " ";
cout << endl;
return ;
}
D.dfs找出每一个湖泊,按面积排序,把cnt-k个小的填满。
#include<bits/stdc++.h>
using namespace std; int n,m,k,vis[][] = {},ok,sum;
int dx[] = {,,-,};
int dy[] = {-,,,};
string s[];
struct xxx
{
int x,y,sum;
friend bool operator <(xxx a,xxx b)
{
return a.sum < b.sum;
}
}a[]; void dfs1(int x,int y)
{
if(vis[x][y]) return;
vis[x][y] = ;
sum++;
for(int i = ;i < ;i++)
{
int xx = x+dx[i],yy = y+dy[i];
if(xx < || xx > n || yy < || yy > m)
{
ok = ;
continue;
}
if(s[xx][yy] == '*') continue;
dfs1(xx,yy);
}
} void dfs2(int x,int y)
{
s[x][y] = '*';
for(int i = ;i < ;i++)
{
int xx = x+dx[i],yy = y+dy[i];
if(xx < || xx > n || yy < || yy > m || s[xx][yy] == '*') continue;
dfs2(xx,yy);
}
}
int main()
{
ios::sync_with_stdio(false);
cin >> n >> m >> k;
int cnt = ;
for(int i = ;i <= n;i++)
{
cin >> s[i];
s[i] = " "+s[i];
}
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++)
{
if(s[i][j] == '*' || vis[i][j]) continue;
ok = ;
sum = ;
dfs1(i,j);
if(ok)
{
a[++cnt].x = i;
a[cnt].y = j;
a[cnt].sum = sum;
}
}
}
sort(a+,a++cnt);
cnt -= k;
int ans = ;
for(int i = ;i <= cnt;i++)
{
ans += a[i].sum;
dfs2(a[i].x,a[i].y);
}
cout << ans << endl;
for(int i = ;i <= n;i++)
{
for(int j = ;j <= m;j++) cout << s[i][j];
cout << endl;
}
return ;
}
E.因为是无向图,所以有偶数个度为奇数的点,我们把他们与第n+1个点相连,则所有点的度都是偶数个,存在欧拉回路,输出这个回路的路径(不包括第n+1个点),符合要求。
#include<bits/stdc++.h>
using namespace std; int n,m,d[];
set<int> s[]; void dfs(int now)
{
while(s[now].size())
{
int t = *s[now].begin();
s[now].erase(t);
s[t].erase(now);
if(now != n+ && t != n+) cout << now << " " << t << endl;
dfs(t);
}
} int main()
{
int T;
cin >> T;
while(T--)
{
cin >> n >> m;
memset(d,,sizeof(d));
while(m--)
{
int x,y;
cin >> x >> y;
s[x].insert(y);
s[y].insert(x);
d[x]++;
d[y]++;
}
int ans = ;
for(int i = ;i <= n;i++)
{
if(d[i]%)
{
s[i].insert(n+);
s[n+].insert(i);
}
else ans++;
}
cout << ans << endl;
for(int i = ;i <= n;i++) dfs(i);
}
return ;
}
F.原图无向连通,可以把原图的除s,t外的点分为三类团。
①与s相连。②与t相连。③与s,t相连。
若不存在第③类团,则把相应团与s或t相连,最后把s与t相连。
若存在第③类团,则s与t不必相连,可以通过第③类团来把他们相连,这样其中某个点的度就少了1,为最优情况。
#include<bits/stdc++.h>
using namespace std; struct xx
{
int x,y;
xx(int a,int b):x(a),y(b){};
};
int n,m,x,y,dx,dy,cnt = ,a[] = {},b[] = {},vis[] = {};
vector<int> v[];
vector<xx> ans; void dfs(int now)
{
vis[now] = ;
for(int i = ;i < v[now].size();i++)
{
int t = v[now][i];
if(t == x) a[cnt] = now;
else if(t == y) b[cnt] = now;
else if(!vis[t])
{
ans.push_back(xx(now,t));
dfs(t);
}
}
} int main()
{
ios::sync_with_stdio(false);
cin >> n >> m;
for(int i = ;i <= m;i++)
{
cin >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
cin >> x >> y >> dx >> dy;
for(int i = ;i <= n;i++)
{
if(vis[i] || i == x || i == y) continue;
++cnt;
dfs(i);
}
int z = ;
for(int i = ;i <= cnt;i++)
{
if(a[i] == )
{
ans.push_back(xx(b[i],y));
dy--;
}
else if(b[i] == )
{
ans.push_back(xx(a[i],x));
dx--;
}
else z++;
}
if(dx < || dy < || dx+dy- < z)
{
cout << "No" << endl;
return ;
}
if(z == ) ans.push_back(xx(x,y));
else
{
int flag = ;
for(int i = ;i <= cnt;i++)
{
if(a[i] == || b[i] == ) continue;
if(flag)
{
if(dx)
{
ans.push_back(xx(a[i],x));
dx--;
}
else
{
ans.push_back(xx(b[i],y));
dy--;
}
}
else
{
flag = ;
ans.push_back(xx(a[i],x));
dx--;
ans.push_back(xx(b[i],y));
dy--;
}
}
}
cout << "Yes" << endl;
for(int i = ;i < ans.size();i++) cout << ans[i].x << " " << ans[i].y << endl;
return ;
}
Codeforces_723的更多相关文章
随机推荐
- SpringCloudAlibaba通过jib插件打包发布到docker仓库
序言 在SpringBoot项目部署的时候,我了解到了Jib插件的强大,这个插件可以快速构建镜像发布到我们的镜像仓库当中去.于是我打算在毕设当中加上这个功能,并且整合到github actions中去 ...
- linux各目录及重要目录的详细介绍
1 目录说明 根目录 (/) /bin bin是Binary的缩写, 这个目录存放着最经常使用的命令,比如ls,cat,mkdir等 /dev dev是Device(设备)的缩写, 该目录下存放的是L ...
- java线程相关基本方法
java线程中常用的基本方法有wait,notify,notifyAll,sleep,join,yield等. 线程的生命周期一共分为五个部分,分别是:新建(New).就绪(Runnable).运行( ...
- docker命令总结(二)
上次只是给大家把命令的作用以及简单使用列出来了(大家可以查看:docker命令总结(一)),那这篇文章会详细介绍每条命令的参数,命令比较多建议大家使用搜索,进行查看 search docker sea ...
- docker发布.net core程序的坑
docker发布遇到的两个问题 1:Could not resolve CoreCLR path. For more details, enable tracing by setting COREHO ...
- bootstrap4popper.js报错Uncaught ReferenceError
这是因为bootstrap4需要umd版的popper.js <script src="https://cdn.bootcss.com/popper.js/1.15.0/umd/pop ...
- html转成pdf 下载,支持后台保存
最近有个需求,需要将html转换成pdf并支持下载 1.需要两个js库 下载 提取码: vab7 <script type="text/javascript" src=&qu ...
- CBV 序列化
一.模型表 from django.db import models # Create your models here. class Publish(models.Model): name = mo ...
- 2.Java程序运行机制
1.编译型:compile,把所有东西翻译好,若有更新需要重新全部翻译.执行速度够快,对操作系统要求比较低.开发操作系统时用到编译型语言,例如c/c++...运行时需编译整个程序 2.解释性:运行一个 ...
- Java入门 - 语言基础 - 15.StringBuffer
原文地址:http://www.work100.net/training/java-stringbuffer.html 更多教程:光束云 - 免费课程 StringBuffer 序号 文内章节 视频 ...