AtCoder Beginner Contest 264(D-E)
D - "redocta".swap(i,i+1)
题意: 给一个字符串,每次交换相邻两个字符,问最少多少次变成"atcoder"
题解: 从左到右依次模拟
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=2e5+5;
const ll inf=1e18;
const ll mod=998244353;
ll a[N];
ll minn[N];
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
string s;cin>>s;
string p="atcoder";
ll ans=0;
for(ll i=0;i<=6;i++){
if(s[i]==p[i]) continue;
ll j=i;
while(s[j]!=p[i]){
j++;
}
ans+=j-i;
for(ll z=j;z>=i;z--) s[z]=s[z-1];
s[i]=p[i];
}
cout<<ans;
}
E - Blackout 2
题意: 给出N个城市,M个发电厂,K个电线,然后Q次操作 ,每次剪断一根电线,问每次操作之后,有几个城市是有点的,只有到一个城市与发电厂是连通的,才是有电的。
题解: 我们可以把这个问题换位思考。
- 开始有K根电线,然后每次剪断一根,问剪断之后有多少城市有电
- 开始有K-Q根电线,每次加上一根,问加上之后有多少城市有电
我们可以发现,上面这两个问题他们最后得出的答案刚好是相反的,所以,我们可以通过第二种方法求出答案然后逆序输出,明显第二种方法简单。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> pll;
const int N=5e5+5;
const ll inf=1e18;
const ll mod=998244353;
ll pre[N];
pll q[N];
ll sum[N],flag[N];
ll p[N],vis[N],vp[N];
ll find(ll x){
if(pre[x]==x) return x;
return pre[x]=find(pre[x]);
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
ll n,m,k;cin>>n>>m>>k;
for(ll i=1;i<=k;i++){
cin>>q[i].first>>q[i].second;
}
ll t;cin>>t;
for(ll i=1;i<=t;i++){ cin>>p[i];vis[p[i]]=1;}//记录那些电线是剪断的
for(ll i=1;i<=n+m;i++) pre[i]=i;
for(ll i=1;i<=k;i++){
if(vis[i]) continue;//遍历开始没有剪断的电线
ll fx=find(q[i].first);
ll fy=find(q[i].second);
pre[fx]=fy;
}
for(ll i=1;i<=n;i++){
ll fx=find(i);
sum[fx]++;
}
ll ans=0;
for(ll i=n+1;i<=m+n;i++){//求出开始的时候有多少城市有电
ll fx=find(i);
ans+=(flag[fx]==0?sum[fx]:0);
flag[fx]=1;
}
stack<ll> lm;
for(ll i=t;i>=1;i--){
lm.push(ans);
ll fx=find(q[p[i]].first);
ll fy=find(q[p[i]].second);
if(fx==fy) continue;//如果是连通的,就没必要处理
if(!flag[fx]&&flag[fy]){//如果第一个是没电,第二个有电,就答案加上没电的
flag[fx]=1;ans+=sum[fx];
}
else if(flag[fx]&&!flag[fy]){//同理
flag[fy]=1;ans+=sum[fy];
}
else if(!flag[fx]&&!flag[fy]){//如果都没电,就让他们合并
sum[fy]+=sum[fx];
}
pre[fx]=fy;
}
while(lm.size()){
cout<<lm.top()<<endl;//逆序输出
lm.pop();
}
}
AtCoder Beginner Contest 264(D-E)的更多相关文章
- Atcoder Beginner Contest 147C(状态压缩)
最多15个人,用N个二进制的数字表示每个人的状态,然后检验.这串数字相当于已经把这些人的状态定了下来,如果和输入的情况不符则这串数字不正确,直接忽略,因为枚举了所有的情况,所以总有正确的,不必在错误的 ...
- AtCoder Beginner Contest 254(D-E)
Tasks - AtCoder Beginner Contest 254 D - Together Square 题意: 给定一个N,找出所有不超过N的 ( i , j ),使得( i * j )是一 ...
- AtCoder Beginner Contest 086 (ABCD)
A - Product 题目链接:https://abc086.contest.atcoder.jp/tasks/abc086_a Time limit : 2sec / Memory limit : ...
- AtCoder Beginner Contest 085(ABCD)
A - Already 2018 题目链接:https://abc085.contest.atcoder.jp/tasks/abc085_a Time limit : 2sec / Memory li ...
- AtCoder Beginner Contest 084(AB)
A - New Year 题目链接:https://abc084.contest.atcoder.jp/tasks/abc084_a Time limit : 2sec / Memory limit ...
- AtCoder Beginner Contest 083 (AB)
A - Libra 题目链接:https://abc083.contest.atcoder.jp/tasks/abc083_a Time limit : 2sec / Memory limit : 2 ...
- Atcoder Beginner Contest 121D(异或公式)
#include<bits/stdc++.h>using namespace std;int main(){ long long a,b; cin>>a>&g ...
- Atcoder Beginner Contest 156E(隔板法,组合数学)
#define HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ; ; long long fac[N] ...
- Atcoder Beginner Contest 155E(DP)
#definde HAVE_STRUCT_TIMESPEC #include<bits/stdc++.h> using namespace std; ]; int main(){ ios: ...
随机推荐
- React项目中 使用 CSS Module
安装react-app-rewired 由于新的 react-app-rewired@2.x 版本的关系,还需要安装 customize-cra.但是我们这里不需要安装 react-app-rewir ...
- 基于thinkphp6 layui的优秀极速后台开发框架推荐
很多时候我们在做项目开发的时候,苦于没有好一点的轮子,自己动手开发的话,太耗费时间了,如果采用VUE的话,学习成本跟调试也比较麻烦, 而且有时候选用的东西甲方也不太容易接受,现在给大家介绍一款优秀的极 ...
- KVM虚拟机安装及桥接网络配置
1.查看CPU是否支持intel或AMD的虚拟技术 cat /proc/cpuinfo | grep -E "vmx|svm" --color --vmx intel的CPU sv ...
- 如何用python做出老师看了都给满分的GUI学生管理系统毕设
序 言 哈喽大家好鸭!我是小熊猫 最近有什么有趣的事情发生吗?快来说给我听听( •̀ ω •́ )✧表弟大学快毕业了,学了一个学期Python居然还不会写学生管理系统,真的给我丢脸啊,教他又不肯学,还 ...
- ArrayList分析2 :Itr、ListIterator以及SubList中的坑
ArrayList分析2 : Itr.ListIterator以及SubList中的坑 转载请注明出处:https://www.cnblogs.com/funnyzpc/p/16409137.html ...
- 001 Security概述
1.Spring Security概述 Spring Security是用于解决认证与授权的框架 SpringSecurity默认要求所有的请求都是必须先登录才允许的访问 BCrypt加密算法 BCr ...
- 聊聊 Redis 是如何进行请求处理
转载请声明出处哦~,本篇文章发布于luozhiyun的博客:https://www.luozhiyun.com/archives/674 本文使用的Redis 5.0源码 感觉这部分的代码还是挺有意思 ...
- 2022-7-9 第五小组 潘堂智 html学习笔记
什么是 HTML? HTML 是用来描述网页的一种语言. HTML 指的是超文本标记语言 (Hyper Text Markup Language) HTML 不是一种编程语言,而是一种标记语言 (ma ...
- 初学者入门:使用WordPress搭建一个专属自己的博客
体验简介 阿里云云起实验室提供相关实验资源,点击前往 场景将提供一台基础环境为CentOS 的ECS(云服务器)实例,这台服务器上已经内置LAMP环境.我们将会在这台服务器上安装 WordPress ...
- Windows环境中Hadoop配置
我们之前已经在Windows中安装好了Hadoop,并且配置了环境变量.如果要在本地上运行的,还需要这两个文件,可以去找一下,放到Hadoop的bin目录下面.这样我们写好的mr程序就可以直接在Win ...