Educational Codeforces Round 53 Div. 2翻车记
A:差点开场懵逼。只要有相邻两位不同就可以作为答案。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 1010
int n,cnt[N][];
char s[N];
int main()
{
n=read();
scanf("%s",s+);
for (int i=;i<n;i++) if (s[i]!=s[i+]) {cout<<"YES\n"<<s[i]<<s[i+];return ;}
cout<<"NO";
return ;
}
B:模拟。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 200010
int n,a[N],b[N];
bool flag[N];
int main()
{
n=read();
for (int i=;i<=n;i++) a[i]=read();
for (int i=;i<=n;i++) b[i]=read();
int x=;
for (int i=;i<=n;i++)
{
int t=;
if (!flag[b[i]])
{
while (a[x+]!=b[i]) x++,flag[a[x]]=,t++;
x++,flag[a[x]]=,t++;
}
printf("%d ",t);
}
return ;
}
C:存在长度为n的移动序列能够到达(x,y)的充要条件显然是n>=abs(x)+abs(y)且n和x+y奇偶性相同。枚举修改区间的左端点,二分右端点即可。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define N 200010
int n,x,y,p,q,cnt[],a[N],cntx[N],cnty[N],ans=N;
char s[N];
int wx[]={,,-,},wy[]={,-,,};
int main()
{
n=read();
scanf("%s",s+);
for (int i=;i<=n;i++)
{
if (s[i]=='U') a[i]=;
if (s[i]=='D') a[i]=;
if (s[i]=='L') a[i]=;
if (s[i]=='R') a[i]=;
}
x=read(),y=read();
if (n<abs(x)+abs(y)||(n&)!=(abs(x)+abs(y)&)) {cout<<-;return ;}
for (int i=n;i>=;i--) cntx[i]=cntx[i+]+wx[a[i]],cnty[i]=cnty[i+]+wy[a[i]];
for (int i=;i<=n;i++)
{
int l=i-,r=n,t=N*;
while (l<=r)
{
int mid=l+r>>;
if (abs(p+cntx[mid+]-x)+abs(q+cnty[mid+]-y)<=mid-i+&&(abs(p+cntx[mid+]-x)+abs(q+cnty[mid+]-y)&)==(mid-i+&)) t=mid,r=mid-;
else l=mid+;
}
ans=min(ans,t-i+);
p+=wx[a[i]],q+=wy[a[i]];
}
cout<<ans;
return ;
}
D:每次先把能跑完整整一圈的减掉,然后暴力。由a%b<=a/2(a>=b),复杂度nlog。根本想不到复杂度是对的啊?
E:比赛时非常弱智的弃掉D去看E。直到最后也没调出来。数位dp(其实根本算不上dp),枚举到第几位卡限制,计算每个位置上数字的贡献,这只要dp出f[i][j]为已经确定了有j种数字存在还剩i位要填时的方案数,就可以暴力计算了。注意前导0不能算在数字集里。不明白为什么绝大多数人都写的状压。
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
int read()
{
int x=,f=;char c=getchar();
while (c<''||c>'') {if (c=='-') f=-;c=getchar();}
while (c>=''&&c<='') x=(x<<)+(x<<)+(c^),c=getchar();
return x*f;
}
#define ll long long
#define P 998244353
ll l,r;
int k,a[],p[],f[][];
void inc(int &x,int y){x+=y;if (x>=P) x-=P;}
int calc(ll m)
{
int ans=,n=-;
while (m) a[++n]=m%,m/=;
bool flag[];
for (int i=n;~i;i--)
{
for (int j=(i==n?:);j<a[i];j++)
{
memset(flag,,sizeof(flag));
for (int k=n;k>i;k--) flag[a[k]]=;
flag[j]=;
int cnt=;
for (int k=;k<;k++) cnt+=flag[k];
if (cnt>k) continue;
int last=;
for (int k=n;k>i;k--) last=(10ll*last+a[k])%P;
last=(10ll*last+j)%P;
last=1ll*last*p[i]%P;
last=1ll*last*f[i][cnt]%P;
inc(ans,last);
for (int x=i-;x>=;x--)
{
for (int y=;y<;y++)
if (flag[y]) inc(ans,1ll*y*p[x]%P*f[i-][cnt]%P);
else inc(ans,1ll*y*p[x]%P*f[i-][cnt+]%P);
}
}
}
for (int i=n-;~i;i--)
{
for (int j=;j<;j++)
{
memset(flag,,sizeof(flag));
flag[j]=;
int cnt=;
for (int k=;k<;k++) cnt+=flag[k];
if (cnt>k) continue;
int last=j;
last=1ll*last*p[i]%P;
last=1ll*last*f[i][cnt]%P;
inc(ans,last);
for (int x=i-;x>=;x--)
{
for (int y=;y<;y++)
if (flag[y]) inc(ans,1ll*y*p[x]%P*f[i-][cnt]%P);
else inc(ans,1ll*y*p[x]%P*f[i-][cnt+]%P);
}
}
}
return ans;
}
int main()
{
cin>>l>>r>>k;
p[]=;for (int i=;i<=;i++) p[i]=10ll*p[i-]%P;
memset(f,,sizeof(f));
for (int i=;i<=k;i++) f[][i]=;
for (int i=;i<=;i++)
for (int j=;j<=k;j++)
f[i][j]=(1ll*f[i-][j]*j+1ll*f[i-][j+]*(-j))%P;
cout<<(calc(r+)-calc(l)+P)%P;
return ;
}
F:没看
G:没认真看,似乎几乎是SA的板子题。
小号打的。result:rank 484 rating +58 感觉没什么救了。
Educational Codeforces Round 53 Div. 2翻车记的更多相关文章
- Educational Codeforces Round 56 Div. 2 翻车记
A:签到. B:仅当只有一种字符时无法构成非回文串. #include<iostream> #include<cstdio> #include<cmath> #in ...
- Educational Codeforces Round 55 Div. 2 翻车记
A:签到. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> ...
- Codeforces Round#500 Div.2 翻车记
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Codeforces Round#509 Div.2翻车记
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Codeforces Round#514 Div.2 翻车记
A:签到 #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> # ...
- Codeforces Round #524 Div. 2 翻车记
A:签到.room里有一个用for写的,hack了一发1e8 1,结果用了大概600+ms跑过去了.惨绝人寰. #include<iostream> #include<cstdio& ...
- Codeforces Round#516 Div.1 翻车记
A:开场懵逼.然后发现有人1min过,于是就sort了一下,于是就过了.正经证明的话,考虑回文串两端点一定是相同的,所以最多有Σcnti*(cnti+1)/2个,cnti为第i种字母出现次数.而sor ...
- Codeforces Round #517 Div. 1翻车记
A:真的懵逼了.冷静了半天之后决定二分一下答案,然后先a安排上尽量小的再贪心地一个个扩大.40min才过.这个做法非常怂的以代码复杂度和时间复杂度为代价换取了比较稳的正确性,事实上由于1~n可以组合出 ...
- Educational Codeforces Round 53 (Rated for Div. 2) (前五题题解)
这场比赛没有打,后来补了一下,第五题数位dp好不容易才搞出来(我太菜啊). 比赛传送门:http://codeforces.com/contest/1073 A. Diverse Substring ...
随机推荐
- JavaScript--动态添加元素(纯js书写table并删除数据)
本文是对上一篇博文的扩展,用js书写表格,并添加和删除数据,详细代码解释见代码页. 对于文中使用的script脚本函数,下载地址如下:https://pan.baidu.com/s/13OFnj7nc ...
- ES6、7、8、9新语法新特性
前言 如果你擅长这种扩散式学习方式,不妨再进一步温习一下整个 ES6 引入的新特性,笔者强烈推荐阮一峰老师的 ECMAScript 6 入门 一书. ES2018 引入的特性还太新,单在对 ES6 特 ...
- GET POST 请求的详细区别
前言: 作为最常见的请求方式 在面试很有可能会被问到 所以在这里做一个简单总结 GET get方法向页面请求发送参数 地址和参数之间用?进行分割 例如 localhost:80/download.ht ...
- vue 数组数据更新或者对象数据更新 但是页面没有同步问题
1,使用set函数来设置数据. 2,你可以通过 $forceUpdate 来做这件事.在数据赋值之后 就直接调用 this.$forceUpdata()
- Java : java基础(4) 线程
java开启多线程的方式,第一种是新建一个Thread的子类,然后重写它的run()方法就可以,调用类的对象的start()方法,jvm就会新开一个线程执行run()方法. 第二种是类实现Runabl ...
- laravel 基础 --内置函数
简介 Laravel 自带了一系列 PHP 辅助函数,很多被框架自身使用,如果你觉得方便的话也可以在代码中使用它们. https://laravelacademy.org/post/8967.html ...
- 【jQuery】 常用函数
[jQuery] 常用函数 html() : 获取设置元素内的 html,包含标签 text() : 获取设置元素内的文本, 不包含标签 val() : 获取设置 value 值 attr() : 获 ...
- 「题目代码」P1034~P1038(Java)
P1034 C基础-求同存异 import java.util.*; import java.io.*; import java.math.BigInteger; public class Main ...
- 「Haskell 学习」二 类型和函数(上)
随着学习的深入,笔记会补充和修订.当然,这个补充修订也许会鸽,但我一定会坚持写完. 这个笔记假定你至少学过C/C++及Python,或与这两种语言类型相同的语言. 类型系统概述 “Haskell’s ...
- ubuntu 把软件源修改为国内源
国内有很多Ubuntu的镜像源,比如:阿里源.网易源等,还有很多教育网的源,比如:清华源.中科大源等. 这里以清华源为例讲解如何修改Ubuntu 18.04里面默认的源. 修改步骤 第一步:备份原始源 ...