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 ...
随机推荐
- Linux之MariaDB
MariaDB数据库的起源 MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可.开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜 ...
- 百度知道芝麻将,申请资格&权限介绍&奖惩制度(简剖)
芝麻将,即百度知道管理员.不及掌握,了解下也是好的. 知道圈子,把注册用户,成为芝麻.一般用户,即小芝麻.芝麻将,就是咱们说的知道管理员. 申请. 芝麻将,申请条件不是很难,难的是后续维护,申请前考虑 ...
- 利用PHP str_replace()函数替换符合百度MIP内容标准
了解过百度MIP的同学都知道(什么?你不知道什么是百度MIP?就是移动网页加速器鸭
- 使用MapReduce读取HBase数据存储到MySQL
Mapper读取HBase数据 package MapReduce; import org.apache.hadoop.hbase.Cell; import org.apache.hadoop.hba ...
- python学习之字符串常用方法和格式化字符串
Python中的字符串同样适用标准的序列操作(索引,分片,乘法,成员判断,求长度,取最小值和最大值),但因为字符串是不可变的,因此字符串不支持分片赋值. s='http://www.baidu.com ...
- 常用数字信号的产生(C实现)-ARMA模型数据生成
ARMA模型属于信号现代谱估计的范畴,AR模型常用于信号的线性预测.AR模型最后归结为线性方程,MA最后为非线性方程,因此,AR模型使用较多. AR模型最后归结为解Yule-Walker方程,对应矩阵 ...
- python2.7入门---元组
这次我们来学习下python中的元组.首先,基础认知点是,Python的元组与列表类似,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号.元组创建很简单,只需要在括号中添加元素, ...
- P1196 银河英雄传说(加权并查集)
P1196 银河英雄传说 题目描述 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦 创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在 ...
- Dijkstra标准模板
Dijkstra求最短路问题:单元求最短路,从任意点出发求得该点到达其他任意点的距离 Dijkstra其实是一种贪心策略,与出发点(即源点)所连接的点中找到距离最短的点(这个距离是源点到这个点的最短距 ...
- 九度OJ--Q1166
import java.text.DecimalFormat;import java.util.Scanner; /* * 题目描述: * 立方根的逼近迭代方程是 y(n+1) = y(n)*2/3 ...