Educational Codeforces Round 8
开始填坑_(:з」∠)_
628A - Tennis Tournament 20171124
小学数学题,\((x,y)=((n-1)\cdot(2b+1),np)\)
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,b,p,x,y;
int main()
{
scanf("%d%d%d",&n,&b,&p);
x=(n-)*(*b+),y=n*p;
printf("%d %d\n",x,y);
return ;
}
628B - New Skateboard 20171124
由于能根据末尾的两个数字判断出是否为4的倍数,直接每相邻两位判断一下就好了
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define LL long long
string s;
LL ans;
bool check(int k){return k%==;}
int main()
{
cin>>s;
ans=check(s[]-'');
for(LL i=;i<s.size();i++)
ans+=check(s[i]-''),ans+=i*check(s[i-]*+s[i]);
printf("%I64d\n",ans);
return ;
}
628C - New Skateboard 20171124
让每一位修改产生的距离尽可能大即可
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
string s;
int n,k,f[];
int main()
{
scanf("%d%d",&n,&k);
cin>>s;
for(int i=;i<=n;i++)
f[i]=max(s[i-]-'a','z'-s[i-])+f[i-];
if(f[n]<k)return printf("-1\n"),;
for(int i=;i<n;i++)
{
if(k>=f[i+]-f[i])
s[i]=(s[i]-'a'>'z'-s[i])?'a':'z';
else s[i]=(s[i]-k>='a')?s[i]-k:s[i]+k;
k-=f[i+]-f[i];if(k<=)break;
}
cout<<s<<endl;return ;
}
628D - Magic Numbers 20190301
比较恶心的DP,首先将区间\((l,r)\)的询问转化为两次对区间\((1,n)\)的询问
令\(f[i][j][k]\)表示当前进行到第\(i\)位,除以\(m\)的余数为\(j\)时,与\(n\)的大小关系为\(k\)的方案数
循环时\(i\)从\(1\)到\(n\),通过枚举第\(i\)位的数字来推出\(j\)进行转移
接下去就是各种细节处理了
#include<bits/stdc++.h>
using namespace std;
#define N 2005
#define LL long long
#define MOD 1000000007
LL m,d,f[N][N][],ans;
char s[N];
LL rua()
{
LL n=strlen(s+);
memset(f,,sizeof(f));
for(LL j=;j<=;j++)if(j!=d)
{
if(j<s[]-'')f[][j%m][]++;
if(j==s[]-'')f[][j%m][]++;
if(j>s[]-'')f[][j%m][]++;
}
for(LL i=;i<n;i++)
for(LL j=;j<m;j++)
for(LL k=;k<;k++)if(f[i][j][k])
{
//cout<<i<<" "<<j<<" "<<k<<" "<<f[i][j][k]<<endl;
if(i&)
{
if(k==)(f[i+][(j*10ll+d)%m][k]+=f[i][j][k])%=MOD;
if(k==)
{
if(d<s[i+]-'')(f[i+][(j*10ll+d)%m][]+=f[i][j][k])%=MOD;
else if(d==s[i+]-'')(f[i+][(j*10ll+d)%m][]+=f[i][j][k])%=MOD;
else if(d>s[i+]-'')(f[i+][(j*10ll+d)%m][]+=f[i][j][k])%=MOD;
}
if(k==)(f[i+][(j*10ll+d)%m][k]+=f[i][j][k])%=MOD;
continue;
}
for(LL l=;l<=;l++)if(l!=d)
{
if(k==)(f[i+][(j*10ll+l)%m][k]+=f[i][j][k])%=MOD;
if(k==)
{
if(l<s[i+]-'')(f[i+][(j*10ll+l)%m][]+=f[i][j][k])%=MOD;
else if(l==s[i+]-'')(f[i+][(j*10ll+l)%m][]+=f[i][j][k])%=MOD;
else if(l>s[i+]-'')(f[i+][(j*10ll+l)%m][]+=f[i][j][k])%=MOD;
}
if(k==)(f[i+][(j*10ll+l)%m][k]+=f[i][j][k])%=MOD;
}
}
LL res=;
//for(LL j=0;j<m;j++)for(LL k=0;k<2;k++)if(f[n][j][k])cout<<n<<" "<<j<<" "<<k<<" "<<f[n][j][k]<<endl;
for(LL i=;i<n;i++)
for(LL k=;k<;k++)
(res+=f[i][][k])%=MOD;
(res+=f[n][][]+f[n][][])%=MOD;
return res;
}
bool check()
{
LL n=strlen(s+);
for(LL i=;i<=n;i++)
{
if((i&) && s[i]==d+'')
return false;
if(i%== && s[i]!=d+'')
return false;
}
LL r=;
for(LL i=;i<=n;i++)
r=(r*+s[i]-'')%m;
return r==;
}
int main()
{
scanf("%I64d%I64d",&m,&d);
scanf("%s",s+);
ans=MOD-rua()+check();
//cout<<rua()<<endl;
scanf("%s",s+);
ans+=rua();
//cout<<rua()<<endl;
return printf("%I64d\n",ans%MOD),;
}
628E - Zbazi in Zeydabad 20190305
这题只能说。。。bitset大法好,莽就完事了
#include<bits/stdc++.h>
using namespace std;
#define N 3005
#define LL long long
LL n,m,ans;
bitset<N>a[N],b[N],c[N];
int get()
{
char ch=getchar();
while(ch!='.' && ch!='z')ch=getchar();
return ch=='z';
}
int main()
{
scanf("%I64d%I64d",&n,&m);
for(LL i=;i<n;i++)
for(LL j=;j<m;j++)
a[i][m-j-]=get(),b[i].set(),c[i].set();
for(LL i=;i<min(m,n);i++)
{
for(LL j=;j<n;j++)b[j]&=a[j]>>i;
for(LL j=;j<n-i;j++)c[j]&=a[j+i]>>i,ans+=(b[j]&b[j+i]&c[j]).count();
}
return printf("%I64d\n",ans),;
}
628F - Bear and Fair Set 20190306
标解是网络流,但是有种瞎搞的方法不知道为什么能过_(:з」∠)_
考虑\(\{0,1,2,3,4\}\)的所有子集\(A\),对每个区间,计算出满足\(i\%5\epsilon A\)的\(i\)的个数,并与该区间可取数字的个数取\(min\),加起来后若个数小于\(\frac{|A|\cdot n}{5}\),则一定无解
若考虑完所有子集后依旧没有出现不合法的情况,则一定有解(本弱不会证,求大佬证明)
#include<bits/stdc++.h>
using namespace std;
#define mp make_pair
int nn,n,b,q;
vector<pair<int,int> >d;
int main()
{
d.push_back(mp(,));
scanf("%d%d%d",&n,&b,&q),nn=n;
d.push_back(mp(b,n));
for(int i=;i<=q;i++)scanf("%d%d",&b,&n),d.push_back(mp(b,n));
sort(d.begin(),d.end());
for(int i=;i<=q;i++)
if(d[i].second>d[i+].second || d[i+].second-d[i].second>d[i+].first-d[i].first)
return printf("unfair\n"),;
for(int k=;k<;k++)
{
int res=;
for(int i=;i<=q+;i++)
{
int cnt=;
for(int j=d[i-].first+;j<=d[i].first;j++)
cnt+=bool((<<(j%))&k);
res+=min(cnt,d[i].second-d[i-].second);
}
if(res<nn/*__builtin_popcount(k))return printf("unfair\n"),;
}
printf("fair\n");
return ;
}
Educational Codeforces Round 8的更多相关文章
- [Educational Codeforces Round 16]E. Generate a String
[Educational Codeforces Round 16]E. Generate a String 试题描述 zscoder wants to generate an input file f ...
- [Educational Codeforces Round 16]D. Two Arithmetic Progressions
[Educational Codeforces Round 16]D. Two Arithmetic Progressions 试题描述 You are given two arithmetic pr ...
- [Educational Codeforces Round 16]C. Magic Odd Square
[Educational Codeforces Round 16]C. Magic Odd Square 试题描述 Find an n × n matrix with different number ...
- [Educational Codeforces Round 16]B. Optimal Point on a Line
[Educational Codeforces Round 16]B. Optimal Point on a Line 试题描述 You are given n points on a line wi ...
- [Educational Codeforces Round 16]A. King Moves
[Educational Codeforces Round 16]A. King Moves 试题描述 The only king stands on the standard chess board ...
- Educational Codeforces Round 6 C. Pearls in a Row
Educational Codeforces Round 6 C. Pearls in a Row 题意:一个3e5范围的序列:要你分成最多数量的子序列,其中子序列必须是只有两个数相同, 其余的数只能 ...
- Educational Codeforces Round 9
Educational Codeforces Round 9 Longest Subsequence 题目描述:给出一个序列,从中抽出若干个数,使它们的公倍数小于等于\(m\),问最多能抽出多少个数, ...
- Educational Codeforces Round 37
Educational Codeforces Round 37 这场有点炸,题目比较水,但只做了3题QAQ.还是实力不够啊! 写下题解算了--(写的比较粗糙,细节或者bug可以私聊2333) A. W ...
- Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship
Problem Educational Codeforces Round 60 (Rated for Div. 2) - C. Magic Ship Time Limit: 2000 mSec P ...
- Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems(动态规划+矩阵快速幂)
Problem Educational Codeforces Round 60 (Rated for Div. 2) - D. Magic Gems Time Limit: 3000 mSec P ...
随机推荐
- 使用Mac下的sequel Pro链接数据库时提示错误(已解决)
使用Mac下的sequel Pro链接数据库时,出现如下问题: ? 1 MySQL said: Authentication plugin 'caching_sha2_password' cannot ...
- 封装selenium自动化框架中的截图功能
对selenium自带的截图功能进行封装: 以下为封装的代码,自定义一个.py文件即可,图片路径自己设置一个. #coding:utf-8 class Screen(object): ''' 封装的截 ...
- 【medium】78. Subsets
求集合不重复的子集: 下面python的写法很好啊! class Solution(object): def subsets(self, nums): """ :type ...
- 基于用户的协同过滤电影推荐user-CF python
协同过滤包括基于物品的协同过滤和基于用户的协同过滤,本文基于电影评分数据做基于用户的推荐 主要做三个部分:1.读取数据:2.构建用户与用户的相似度矩阵:3.进行推荐: 查看数据u.data 主要用到前 ...
- JS学习过程中碰到的小问题
使用循环语句查找通讯录 //Setup var contacts = [ { "firstName": "Akira", "lastName" ...
- linux统配符
linux通配符注意:linux的通配符和三剑客的表达式是不一样的,因为,代表的意义是有较大区别的.通配符一般用户命令行bash环境,而linux正则表达式用于grep,sed,awk场景. * ...
- C++中的继承(2)类的默认成员
在继承关系里面, 在派生类中如果没有显示定义这六个成员函数, 编译系统则会默认合成这六个默认的成员函数. 1.构造与析构函数的调用关系 调用关系先看一段代码: class Base { public ...
- SQL反模式学习笔记5 外键约束【不用钥匙的入口】
目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外 ...
- bower 基础认识
bower 跟 npm 很像 都是管理包的工具 只是 bower 偏向前端 npm 前后都能管理 npm init 后是 生产 package.json 下载的包在node_modules文件下 ...
- 20175305张天钰Java结对编程四则运算(二)
Java结对编程四则运算(二) 一.题目描述及要求 Git提交粒度不要太粗,建议一个文件/一个类/一个函数/一个功能/一个bug修复都进行提交,不能一天提交一次,更不能一周一次,参考Commit Me ...