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 ...
随机推荐
- 通过Ambari2.2.2部署HDP大数据服务
node1 amari-server node2 amari-agent namenode1,datanode,resourcemanager,zk node3 amari-agent namen ...
- java递归 斐波那契数列递归与非递归实现
递归简单来说就是自己调用自己, 递归构造包括两个部分: 1.定义递归头:什么时候需要调用自身方法,如果没有头,将陷入死循环 2.递归体:调用自身方法干什么 递归是自己调用自己的方法,用条件来判断调用什 ...
- 在Liunx上搭建FTP并配置用户权限
伴随着.Net Core的开源,公司前几天上了新的Liunx服务器,我在前几篇文章中介绍了如何搭建环境以及部署.Net Core应用. 然后,今天客户和我说想自己给网站做推广,需要用FTP链接我们的服 ...
- php sign签名实例
1:实现签名代码: /** * 签名生成算法 * @param array $params API调用的请求参数集合的关联数组,不包含sign参数 * @param string $secret 签名 ...
- CentOS下配置jdk
CentOS下配置jdk 1.在jdk官网上下载最新版本的jdk 2.将jdk放到相应的位置,使用如下命令来解压. .0_181 /opt/data/ tar -zxf jdk-8u181-linux ...
- mysql5.7.19安装报错 无法定位程序输入点
https://blog.csdn.net/t876587201/article/details/79503688
- [BZOJ1040][ZJOI2008]骑士(树形DP)
对于一个联通块内,有且只有一个环,即n个点n条边 那么找到那个环,然后任意断一条边,这个联通块就变成一棵树了,然后做树形DP就行了 对于断的边要记录下来DP时特判 Code #include < ...
- C# 控制台应用程序输出颜色字体
最佳解决方案的代码: static void Main(string[] args) { Console.ForegroundColor = ConsoleColor.Green; Console.W ...
- 4 echo服务器
收到数据,给别人原封不动返回 #4. 将接收到的数据再发送给对方 udpSocket.sendto(recvData[0], recvData[1]) #coding=utf-8 from soc ...
- P1886 滑动窗口(单调队列)
P1886 滑动窗口 题目描述 现在有一堆数字共N个数字(N<=10^6),以及一个大小为k的窗口.现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值. 例如: ...