2017年蓝桥杯省赛
Posted 辉小歌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2017年蓝桥杯省赛相关的知识,希望对你有一定的参考价值。
目录
- 承压计算【递推】
- 兴趣小组【文件操作】
- Excel地址【进制转换】
- 拉马车【模拟 双端队列】
- 纸牌三角形【全排列】
- 外星日历【取模】
- 青蛙跳杯子【BFS】
- 分巧克力【二分】
- 购物单【模拟】
- 日期问题【日期模拟问题】
- k倍区间【前缀和 / 取模】
- 迷宫【dfs】
- 方格分割【dfs 有意思】
- 油漆面积【扫描线】
- 9数算式【全排列】
承压计算【递推】
分析: 你会发现每次往下都是除以2来平分,但是无论如何也不能是题目给的那么大呀。
这说明有单位换算,但是我们并不知道单位换算是咋换算的。但是可以知道的是,最后一层的最小数和最大数的比值在那种单位下都是不变的。故可以求出最后一行的最大数和最小数的比值,以此来求出最大值。
#include<bits/stdc++.h>
using namespace std;
typedef long long int LL;
double a[105][105]=
7,
5,8,
7,8,8,
9,2,7,2,
8,1,4,9,1,
8,1,8,8,4,1,
7,9,6,1,4,5,4,
5,6,5,5,6,9,5,6,
5,5,4,7,9,3,5,5,1,
7,5,7,9,7,4,7,3,3,1,
4,6,4,5,5,8,8,3,2,4,3,
1,1,3,3,1,6,6,5,5,4,4,2,
9,9,9,2,1,9,1,9,2,9,5,7,9,
4,3,3,7,7,9,3,6,1,3,8,8,3,7,
3,6,8,1,5,3,9,5,8,3,8,1,8,3,3,
8,3,2,3,3,5,5,8,5,4,2,8,6,7,6,9,
8,1,8,1,8,4,6,2,2,1,7,9,4,2,3,3,4,
2,8,4,2,2,9,9,2,8,3,4,9,6,3,9,4,6,9,
7,9,7,4,9,7,6,6,2,8,9,4,1,8,1,7,2,1,6,
9,2,8,6,4,2,7,9,5,4,1,2,5,1,7,3,9,8,3,3,
5,2,1,6,7,9,3,2,8,9,5,5,6,6,6,2,1,8,7,9,9,
6,7,1,8,8,7,5,3,6,5,4,7,3,4,6,7,8,1,3,2,7,4,
2,2,6,3,5,3,4,9,2,4,5,7,6,6,3,2,7,2,4,8,5,5,4,
7,4,4,5,8,3,3,8,1,8,6,3,2,1,6,2,6,4,6,3,8,2,9,6,
1,2,4,1,3,3,5,3,4,9,6,3,8,6,5,9,1,5,3,2,6,8,8,5,3,
2,2,7,9,3,3,2,8,6,9,8,4,4,9,5,8,2,6,3,4,8,4,9,3,8,8,
7,7,7,9,7,5,2,7,9,2,5,1,9,2,6,5,3,9,3,5,7,3,5,4,2,8,9,
7,7,6,6,8,7,5,5,8,2,4,7,7,4,7,2,6,9,2,1,8,2,9,8,5,7,3,6,
5,9,4,5,5,7,5,5,6,3,5,3,9,5,8,9,5,4,1,2,6,1,4,3,5,3,2,4,1
;//29 共30
int main(void)
for(int i=0;i<29;i++)
for(int j=0;j<=i;j++)
a[i+1][j]+=a[i][j]/2;
a[i+1][j+1]+=a[i][j]/2;
double maxv=0,minv=1e9;
for(int i=0;i<=29;i++)
minv=min(minv,a[29][i]);
maxv=max(maxv,a[29][i]);
long long int ans=2086458231/minv*maxv;
printf("%lld\\n",ans);
return 0;
兴趣小组【文件操作】
#include<bits/stdc++.h>
using namespace std;
string s;
map<string,int>mp;
int main(void)
/*freopen("1.txt","r",stdin);
while(cin>>s)
mp[s]++;
fclose(stdin);
cin.clear();//当多个文件流读入的时候
freopen("2.txt","r",stdin);
while(cin>>s)
mp[s]++;
fclose(stdin);
cin.clear();
freopen("3.txt","r",stdin);
while(cin>>s) mp[s]--;
int cnt=0;
for(auto i=mp.begin();i!=mp.end();i++) if(i->second==2) cnt++;
cout<<cnt;
fclose(stdin);*/
cout<<20;
return 0;
Excel地址【进制转换】
#include<bits/stdc++.h>
using namespace std;
char get(int x)return 'A'+(x-1+26)%26;
int n;
int main(void)
while(cin>>n)
string s;
while(n)
int t=n%26;
s=get(t)+s;
n=(n-1)/26;
cout<<s<<endl;
return 0;
拉马车【模拟 双端队列】
#include<bits/stdc++.h>
using namespace std;
string a,b;
int main(void)
while(cin>>a>>b)
deque<char>q1,q2,q3;
for(int i=0;i<a.size();i++) q1.push_back(a[i]);
for(int i=0;i<b.size();i++) q2.push_back(b[i]);
int flag=0,cnt=0;
map<char,int>mp;
while(cnt<=1000000)
if(!q1.size()||!q2.size()) break;
if(!flag)
if(!q1.size()) break;
char c=q1.front(); q1.pop_front();
if(mp[c])
q1.push_back(c);
while(q3.back()!=c)
q1.push_back(q3.back());
mp[q3.back()]--;
q3.pop_back();
q1.push_back(q3.back());
mp[q3.back()]--;
q3.pop_back();
if(!q2.size()) break;
else mp[c]++,flag=1,q3.push_back(c);
else
if(!q2.size()) break;
char c=q2.front(); q2.pop_front();
if(mp[c])
q2.push_back(c);
while(q3.back()!=c)
q2.push_back(q3.back());
mp[q3.back()]--;
q3.pop_back();
q2.push_back(q3.back());
mp[q3.back()]--;
q3.pop_back();
if(!q1.size()) break;
else mp[c]++,flag=0,q3.push_back(c);
cnt++;
if(q1.size()&&q2.size()) cout<<-1;
else
while(q1.size()) cout<<q1.front(),q1.pop_front();
while(q2.size()) cout<<q2.front(),q2.pop_front();
cout<<'\\n';
return 0;
纸牌三角形【全排列】
2015年蓝桥杯省赛题解