第十三届蓝桥杯省赛C/C++ B组
@
A顺子日期
答案是1478
B顺子日期
答案14(如果012算的话)
C刷题统计
数据范围1e18,所以不能直接暴力,先取余,再暴力剩下的
#include<bits/stdc++.h>
using namespace std;
#define rep(i,m,n) for(int i=m;i<=n;i++)
#define per(i,m,n) for(int i=m;i>=n;i--)
#define pair<int,int> PII
#define int long long
signed main()
{
int a,b,n;
cin>>a>>b>>n;
int ans=0,cnt=0;
int x=5*a+2*b;//一周刷题数
ans=n/x*7;
n=n%x;
while(1)
{
if(cnt>=n)
break;
ans++;
if(ans%7==0||ans%7==6)
cnt+=b;
else
cnt+=a;
}
cout<<ans;
return 0;
}
D 修剪灌木
先读题
然后结论就是直接取左右两边最大的二倍
#include<bits/stdc++.h>
using namespace std;
#define pair<int,int> PII
#define int long long
const int N=1e4+10;
int a[N];
signed main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
int l,r;
l=(i-1)*2;
r=(n-i)*2;
cout<<max(l,r)<<endl;
}
return 0;
}
E X进制减法
这个题读了半天才懂,注意他说的进制是指逢几进一,
答案就是每一位取能取的最小进制

这里面的321=((3*10+2)*2)+1=65
也可以这样算 1+2*2+3*10*2=65
#include<bits/stdc++.h>
using namespace std;
#define pair<int,int> PII
#define int long long
const int mod=1e9+7;
const int N=1e5+10;
int a[N],b[N],c[N],p[N];
signed main()
{
int k,ma,mb;
cin>>k>>ma;
for(int i=ma;i>=1;i--)
cin>>a[i];
cin>>mb;
for(int i=mb;i>=1;i--)
cin>>b[i];
int n=max(ma,mb);
for(int i=1;i<=n;i++)
c[i]=a[i]-b[i];
for(int i=n;i>=1;i--)
{
int pp=2;
pp=max(pp,max(a[i],b[i])+1);//最低p进制
p[i+1]=pp;
}
int ans=0;
for(int i=n;i>=2;i--)
{
c[i-1]+=c[i]*p[i];
}
cout<<c[1]<<endl;
return 0;
}
F统计子矩阵
直接暴力的话(n^6) 铁炸!
使用前缀和+暴力的话(n^4) 也会炸
最后一维用二分优化(n^3*log n) 可能会炸,但我想不到更好的了
#include<bits/stdc++.h>
using namespace std;
#define pair<int,int> PII
#define int long long
const int N=5e2+10;
int a[N][N],sum[N][N];
int n,m,K;
int S(int x2,int y2,int x1,int y1)
{
return sum[x1][y1]-sum[x1][y2-1]-sum[x2-1][y1]+sum[x2-1][y2-1];
}
signed main()
{
cin>>n>>m>>K;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
sum[i][j]=sum[i-1][j]+sum[i][j-1]-sum[i-1][j-1]+a[i][j];
int ans=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
if(a[i][j]>K)continue;
for(int k=i;k<=n;k++)
{
int l=j,r=m;
while(l<r)
{
int mid=l+r+1>>1;
if(S(i,j,k,mid)<=K)l=mid;
else r=mid-1;
}
if(S(i,j,k,l)>K)continue;
//printf("%lld %lld %lld %lld\n",i,j,k,l);
ans+=(l-j+1);
}
}
}
cout<<ans<<endl;
return 0;
}
G 积木画
状态压缩DP
f[i][j]表示已经摆完前i列,且突出来的状态为j
假如j=1:就是凸出来了上面那一块
#include<bits/stdc++.h>
using namespace std;
#define pair<int,int> PII
#define int long long
const int mod=1e9+7;
const int M=1<<2;
const int N=1e7+10;
int f[N][M];
signed main()
{
int n;
cin>>n;
f[0][0]=1;
for(int i=1;i<=n+1;i++)
{
f[i][0]=(f[i][0]+f[i-1][0]+f[i-1][3])%mod;//不突出
f[i][1]=(f[i][1]+f[i-1][2]+f[i-1][0])%mod;//上面突出
f[i][2]=(f[i][2]+f[i-1][1]+f[i-1][0])%mod;//下面突出
f[i][3]=(f[i][3]+f[i-1][0]+f[i-1][1]+f[i-1][2])%mod;//突出两个
}
cout<<f[n][0]<<endl;
return 0;
}
第一维可以用滚动数组优化
#include<bits/stdc++.h>
using namespace std;
#define pair<int,int> PII
#define int long long
const int mod=1e9+7;
const int M=1<<2;
int f[3][M];
signed main()
{
int n;
cin>>n;
f[0][0]=1;
for(int i=1;i<=n+1;i++)
{
f[i&1][0]=(f[i-1&1][0]+f[i-1&1][3])%mod;//不突出
f[i&1][1]=(f[i-1&1][2]+f[i-1&1][0])%mod;//上面突出
f[i&1][2]=(f[i-1&1][1]+f[i-1&1][0])%mod;//下面突出
f[i&1][3]=(f[i-1&1][0]+f[i-1&1][1]+f[i-1&1][2])%mod;//突出两个
}
cout<<f[n&1][0]<<endl;
return 0;
}
H扫雷
直接两重循环建边+dfs搜索的,会炸(因为建边是两重循环,过不叫第二个5e4的样例)
注意不能并查集,因为a引爆b,但b不一定能引爆a
正解应该是看那个r(r<=10),不会....
#include<bits/stdc++.h>
using namespace std;
#define pair<int,int> PII
#define int long long
const int N=1e3+10;
vector<int> q[N];
int x[N],y[N],r[N];
int n,m;
bool vis[N];
bool v[N];
int cnt;
bool check(int x1,int y1,int r1,int x2,int y2)
{
return (x2-x1)*(x2-x1)+(y2-x1)*(y2-y1)<=r1*r1;//1会引炸2
}
void dfs(int x)
{
cnt++;
for(int i=0;i<q[x].size();i++)
{
int j=q[x][i];
if(vis[j]||v[N])continue;
v[j]=1;
dfs(j);
}
}
signed main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>x[i]>>y[i]>>r[i];
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i==j)continue;
if(check(x[i],y[i],r[i],x[j],y[j]))
{
q[i].push_back(j);
}
}
}
while(m--)
{
int xx,yy,rr;
cin>>xx>>yy>>rr;
for(int i=1;i<=n;i++)
{
if(check(xx,yy,rr,x[i],y[i]))
{
vis[i]=1;
}
}
}
for(int i=1;i<=n;i++)
{
if(vis[i])
dfs(i);
}
cout<<cnt<<endl;
return 0;
}
I李白打酒加强版
dp,考虑遇到店或者花
f[i][j][k]表示已经走了i次,有j次经过了酒馆,还剩k斗酒
记录酒的时候只需要斗里有100以下的容量 ,因为最多走100次也就是最多喝100斗酒,太多了喝不完
#include<bits/stdc++.h>
using namespace std;
#define pair<int,int> PII
#define int long long
const int mod=1e9+7;
const int N=100+10;
int n,m;
int f[N+N][N+N][N];//f[i][j][k]表示已经走了i次,有j次经过了酒馆,还剩k斗酒
signed main()
{
cin>>n>>m;
f[0][0][2]=1;
for(int i=1;i<=n+m;i++)
{
for(int j=0;j<=i;j++)
{
for(int k=0;k<100;k++)
{
f[i][j][k]=(f[i][j][k]+f[i-1][j][k+1])%mod;
if(j>=1&&k%2==0)
f[i][j][k]=(f[i][j][k]+f[i-1][j-1][k/2])%mod;
}
}
}
cout<<f[n+m-1][n][1]<<endl;
return 0;
}
J砍竹子
这个没时间写了,随便写的
第十三届蓝桥杯省赛C/C++ B组的更多相关文章
- 2019年第十届蓝桥杯省赛总结(JavaA组)
//update3.28:省一rank4,莫名进了国赛好神奇.. 记yzm10第一次体验A组(纯粹瞎水). 早闻山东的JavaA组神仙打架,进国赛都成了奢望(往年只有五个名额),因此抱着做分母的心态来 ...
- 2019年第十届蓝桥杯国赛总结(JavaA组)
JavaA组国二,可以报销了~ JA死亡之组可不是盖的,rank12的排名还是拿不到国一啊(只有五个.. 出成绩的一刻波澜不惊,毕竟去年有国一了不慌哈哈哈 不过对我来说这个结果还算意料之外吧,毕竟大三 ...
- 2015年第六届蓝桥杯国赛试题(JavaA组)
1.结果填空 (满分15分)2.结果填空 (满分35分)3.代码填空 (满分31分)4.程序设计(满分41分)5.程序设计(满分75分)6.程序设计(满分103分) 1.标题:胡同门牌号 小明家住在一 ...
- 2018年第九届蓝桥杯国赛总结(JavaB组)
懒更,之前的删了补一个国赛总结 记yzm10的第一次国赛(赛点:首都经贸大学) 第一次就拿到了国一,运气不要太好~(同组lz学长豪取国特orz) 从省赛一路水过来,总算有了点成绩.其实最后一题有些遗憾 ...
- 2016年第七届蓝桥杯省赛试题(JavaA组)
1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分9分)4.代码填空 (满分11分)5.代码填空 (满分13分)6.结果填空 (满分15分)7.结果填空 (满分19分)8.程序设 ...
- 2015年第六届蓝桥杯省赛试题(JavaA组)
1.结果填空 (满分3分)2.结果填空 (满分5分)3.结果填空 (满分9分)4.代码填空 (满分11分)5.代码填空 (满分13分)6.结果填空 (满分17分)7.结果填空 (满分21分)8.程序设 ...
- 2018年第九届蓝桥杯国赛试题(JavaA组)
1.结果填空 (满分13分)2.结果填空 (满分39分)3.代码填空 (满分27分)4.程序设计(满分45分)5.程序设计(满分71分)6.程序设计(满分105分) 1.标题:三角形面积 已知三角形三 ...
- 2016年第七届蓝桥杯国赛试题(JavaA组)
1.结果填空 (满分19分)2.结果填空 (满分35分)3.代码填空 (满分21分)4.程序设计(满分47分)5.程序设计(满分79分)6.程序设计(满分99分) 1.阶乘位数 9的阶乘等于:3628 ...
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛
/* 2016年第七届蓝桥杯C/C++程序设计本科B组省赛 煤球数目(结果填空) 煤球数目 有一堆煤球,堆成三角棱锥形.具体: 第一层放1个, 第二层3个(排列成三角形), 第三层6个(排列成三角形) ...
随机推荐
- Redis 使用规范
Redis 使用规范围绕如下几个纬度展开: 键值对使用规范: 命令使用规范: 数据保存规范: 运维规范. 键值对使用规范 有两点需要注意: 好的 key 命名,才能提供可读性强.可维护性高的 key, ...
- 数据类型 Java day7
数据类型 数据类型包含:引用数据类型和基本数据类型 引用数据类型:出去基本数据类型,其他的类型,如String 基本数据类型:总共分四大类有八种 四大类:整数,浮点数.字符.布尔 一.整数包含以下 数 ...
- 老徐和阿珍的故事:ArrayList和LinkedList的效率到底哪个高?
人物背景: 老徐,男,本名徐福贵,从事Java相关研发工作多年,职场老油条,摸鱼小能手,虽然岁数不大但长的比较着急,人称老徐.据说之前炒某币败光了所有家产,甚至现在还有欠债. 阿珍,女,本名陈家珍,刚 ...
- Java9的模块化是什么
Java9新特性中的模块化到底是什么 Java9中的一个重大特性是增加了一种新型的程序设计组件 - 模块. 官方对模块的定义为:一个被命名的,代码和数据的自描述集合.( the module, whi ...
- 一个序列出现固定元素个数的方法(DFS)
#include <iostream.h> int a[100];int i; static int stat=0; void dfs(int n,int oneCount) { if(o ...
- javascript的比较运算符
JavaScript一共提供了8个比较运算符: > 大于运算符 < 小于运算符 <= 小于等于运算符 >= 大于等于运算符 == 相等运算符 === 严格相等运算符 != 不相 ...
- Ls 命令执行什么功能?可以带哪些参数,有什么区别?
ls 执行的功能:列出指定目录中的目录,以及文件 哪些参数以及区别:a 所有文件 l 详细信息,包括大小字节数,可读可写可执行的权限等
- 说说对 SQL 语句优化有哪些方法?(选择几条)
1.Where 子句中:where 表之间的连接必须写在其他 Where 条件之前,那些可 以过滤掉最大数量记录的条件必须写在 Where 子句的末尾.HAVING 最后. 2.用 EXISTS 替代 ...
- Spring Data Jpa使用QueryDsl接口出现的一些问题
1.QuerydslPredicateExecutor当实现此接口时,如果出现什么什么类没有找到的时候,请确认相关的querydsl依赖是否已经添加到maven依赖中 <dependency&g ...
- SpirngMVC源码分析
分析过程 通过 前端控制器源码 分析 SpringMVC 的执行过程 前端控制器在 web.xml 文件中的配置 <!-- springmvc 前端控制器 --> <servlet& ...