Solution Set -「ABC 197」
「ABC 197A」Rotate
Link.
略。
#include<bits/stdc++.h>
using namespace std;
int main(){
char a,b,c;cin>>a>>b>>c;cout<<b<<c<<a;
return 0;
}
「ABC 197B」Visibility
Link.
扫。
#include<bits/stdc++.h>
using namespace std;
int main(){
int h,w,x,y;cin>>h>>w>>x>>y;vector<string> a(h);--x,--y;
for(string &i:a)cin>>i;
int ans=0;
for(int i=x;~i;--i)if(a[i][y]=='.')++ans;/*,printf("(%d %d)\n",i+1,y+1);*/else break;
for(int i=x;i<h;++i)if(a[i][y]=='.')++ans;/*,printf("(%d %d)\n",i+1,y+1);*/else break;
for(int i=y;~i;--i)if(a[x][i]=='.')++ans;/*,printf("(%d %d)\n",x+1,i+1);*/else break;
for(int i=y;i<w;++i)if(a[x][i]=='.')++ans;/*,printf("(%d %d)\n",x+1,i+1);*/else break;
cout<<ans-3;
return 0;
}
「ABC 197C」ORXOR
Link.
二进制枚举暴力算。
#include<bits/stdc++.h>
using namespace std;
long long n,a[30],b[30];
int main(){
scanf("%lld",&n);for(long long i=1;i<=n;++i){scanf("%lld",&a[i]);}
long long up=(1<<n),ans=1e18;
for(long long i=0;i<=up;++i){
long long ct=1;
b[ct]=a[1];
for(long long j=2;j<=n;++j)if(((i>>(j-1))&1)^((i>>(j-2))&1))b[++ct]=a[j];else b[ct]|=a[j];
long long tmp=0;
for(long long j=1;j<=ct;++j)tmp^=b[j];
ans=min(ans,tmp);
}
printf("%lld\n",ans);
return 0;
}
「ABC 197D」Opposite
Link.
数学题,不会,而且读不太懂题。
// Oops, something went wrong.
「ABC 197E」Traveler
Link.
这个题看起来就很 关路灯。
对于每一种颜色(这里的颜色是指我们已经收集完了上一种颜色,正在收集的颜色),我们不可能走过而不拾。
于是收完一种颜色后,我们一定是这种颜色的的最左 / 右边。
然后就可以 DP 了;设 \(f_{i,0\text{ or }1}\) 为拾 \(i\)-th 颜色,在左 / 右,转移显然。
/*
Denote f[i][0/1] for the minimum time, that we finish collecting the i-th color and we're at the left/right (0/1) endpoint.
f[i][0]=min( f[las][0]+Dist( R[las],L[i] ),f[las][1]+Dist( L[las],L[i] ) )+R[i]-L[i];
f[i][1]=min( f[las][0]+Dist( R[las],R[i] ),f[las][1]+Dist( L[las],R[i] ) )+R[i]-L[i];
*/
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const LL INF=1e18;
int n;
LL f[200010][2],L[200010],R[200010];
int main()
{
scanf("%d",&n);
for( int i=1;i<=n;++i ) L[i]=INF,R[i]=-INF;
for( int i=1;i<=n;++i )
{
LL pos;
int color;
scanf( "%lld %d",&pos,&color );
L[color]=min( pos,L[color] );
R[color]=max( pos,R[color] );
}
#define Dist( x,y ) ( LL( abs( ( x )-( y ) ) ) )
for( int i=1,las=0;i<=n+1;++i )
{
if( L[i]!=INF )
{
f[i][0]=min( f[las][0]+Dist( R[las],L[i] ),f[las][1]+Dist( L[las],L[i] ) )+R[i]-L[i];
f[i][1]=min( f[las][0]+Dist( R[las],R[i] ),f[las][1]+Dist( L[las],R[i] ) )+R[i]-L[i];
las=i;
}
}
printf( "%lld\n",f[n+1][1] );
return 0;
}
「ABC 197F」Construct a Palindrome
Link.
相当于是从 \(1\) 和 \(n\) 同时走,每次走字母一样的边,直接双向 BFS 即可。
#include<bits/stdc++.h>
using namespace std;
#define turn(c) ((c)-'a')
#define fs first
#define sc second
const int INF=1e9;
vector<int> suf[1010][26];
int n,m,ans=INF,vis[1010][1010];
struct node
{
int fs,sc,val;
node(int A=0,int B=0,int C=0){fs=A,sc=B,val=C;}
};
queue<node> q;
int main()
{
// freopen("in.in","r",stdin);
// freopen("my.out","w",stdout);
scanf("%d %d",&n,&m);
vis[1][n]=1;
for(int i=1;i<=m;++i)
{
int x,y;
scanf("%d %d",&x,&y);
char c=getchar();
while(c<'a' || c>'z') c=getchar();
suf[x][turn(c)].emplace_back(y);
suf[y][turn(c)].emplace_back(x);
}
q.emplace(node(1,n,0));
while(!q.empty())
{
int one=q.front().fs,ano=q.front().sc,lav=q.front().val;
q.pop();
if(lav==ans) return printf("%d\n",ans<<1),0;
for(int i=0;i<26;++i)
{
for(int exone:suf[one][i])
{
for(int exano:suf[ano][i])
{
if(exone==ano || exano==one) return printf("%d\n",lav<<1|1),0;
if(exone==exano) ans=lav+1;
if(!vis[exone][exano])
{
vis[exone][exano]=1;
q.emplace(node(exone,exano,lav+1));
}
}
}
}
}
printf("-1\n");
return 0;
}
Solution Set -「ABC 197」的更多相关文章
- Solution Set -「ABC 217」
大家好屑兔子又来啦! [A - Lexicographic Order] 说个笑话,\(\color{black}{\text{W}}\color{red}{\text{alkingDead} ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...
- Solution Set -「ARC 107」
「ARC 107A」Simple Math Link. 答案为: \[\frac{a(a+1)\cdot b(b+1)\cdot c(c+1)}{8} \] 「ARC 107B」Quadrup ...
- Solution -「ABC 219H」Candles
\(\mathcal{Description}\) Link. 有 \(n\) 支蜡烛,第 \(i\) 支的坐标为 \(x_i\),初始长度为 \(a_i\),每单位时间燃烧变短 \(1\) ...
- Solution -「ABC 215H」Cabbage Master
\(\mathcal{Description}\) Link. 有 \(n\) 种颜色的,第 \(i\) 种有 \(a_i\) 个,任意两球互不相同.还有 \(m\) 个盒子,每个盒子可以被放 ...
- Solution -「ABC 213G」Connectivity 2
\(\mathcal{Description}\) Link. 给定简单无向图 \(G=(V,E)\),点的编号从 \(1\) 到 \(|V|=n\).对于 \(k=2..n\),求 \(H= ...
- Solution -「ABC 213H」Stroll
\(\mathcal{Description}\) Link. 给定一个含 \(n\) 个结点 \(m\) 条边的简单无向图,每条边的边权是一个常数项为 \(0\) 的 \(T\) 次多项式, ...
- Solution -「ABC 217」题解
D - Cutting Woods 记录每一个切割点,每次求前驱后驱就好了,注意简单判断一下开闭区间. 考场上采用的 FHQ_Treap 无脑莽. #include <cstdio> #i ...
- 「ABC 249Ex」Dye Color
考虑停时定理. 初始势能为 \(\sum \Phi(cnt_i)\),末势能为 \(\Phi(n)\),我们希望构造这样一个 \(\Phi:Z\to Z\) 函数,使得每一次操作期望势能变化量为常数. ...
- Note -「Lagrange 插值」学习笔记
目录 问题引入 思考 Lagrange 插值法 插值过程 代码实现 实际应用 「洛谷 P4781」「模板」拉格朗日插值 「洛谷 P4463」calc 题意简述 数据规模 Solution Step 1 ...
随机推荐
- 使用 ProcessBuilder API 优化你的流程
ProcessBuilder 介绍 Java 的 Process API 为开发者提供了执行操作系统命令的强大功能,但是某些 API 方法可能让你有些疑惑,没关系,这篇文章将详细介绍如何使用 Proc ...
- 【C#/.NET】xUnit和Moq实现TDD
目录 前置条件 Moq xUnit TDD 实践 创建项目 红灯 绿灯 重构 单元测试一些最佳实践 总结 前置条件 Moq 安装Moq包 Install-Package Moq Moq是一个Mo ...
- @Override注解的使用
先看看@Override注解在Java SE中的声明: package .lang; import java.lang.annotation.*; @Target(ElementType.METHOD ...
- Tab切换以及倒计时组件封装
1.Tab组件 功能 支持默认选中tab 子元素可以是文本或者图片 自定义tab的数量,并自适应展示 实现方式 用ul > li标签遍历传入的tabs数组参数渲染 判断是否传入背景,未传则显示文 ...
- 4大数据实战系列-hive安装配置优化
1 基础环境 1.1 版本预览 Cnetos 6.5 已安装 Hadoop 2.8 已安装集群 Hive 2.3 待安装 Mysql 5.6 已安装 Spark 2.1.1 已安装 1.2 机器环境 ...
- 1 大数据实战系列-spark+hadoop集成环境搭建
1 准备环境 192.168.0.251 shulaibao1 192.168.0.252 shulaibao2 hadoop-2.8.0-bin spark-2.1.1-bin-hadoop2.7 ...
- 计算机网络那些事之 MTU 篇 pt.2
哈喽大家好,我是咸鱼 在<计算机网络那些事之 MTU 篇 >中,咸鱼跟大家介绍了 MTU 是指数据链路层能够传输的最大数据帧的大小 如果发送的数据大于 MTU,则就会进行分片操作(Frag ...
- 详解RISC v中断
声明 本文为本人原创,未经许可严禁转载.部分图源自网络,如有侵权,联系删除. RISC-V 中断与异常 trap(陷阱)可以分为异常与中断.在 RISC v 下,中断有三种来源:software in ...
- [译]使用Python和Dash 创建一个仪表盘(上)
介绍 在数据科学和分析的领域,数据能力的释放不仅是通过提取见解的方式, 同时也要能通过有效的方式来传达见解.这就是数据可视化发挥见解的地方. 数据可视化是信息和数据的可视化呈现. 它使用可视化元素,如 ...
- vue+element 判断table表格输入不能为空
点击确定的时候,判断表格其中某行某值不能为空 1.HTML <div class="app-container"> <el-form ref="form ...