2017百度之星 复赛
作为一只菜鸡,这可能是我OI生涯中最后一次打百度之星了,希望明年这个时候能不退役(虽然不大可能)
开始贴题解吧。会持续更新。
1001 Arithmetic of Bomb
煞笔模拟题,1A
#include<cstdio>
#include<algorithm>
#include<cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=1e5+5;
const int mo=1e9+7;
int n,m;
char s[N],s1[N],ch[N],s2[N];
int main()
{int cas;scanf("%d",&cas);while (cas--){scanf("%s",s);int len=strlen(s),m=0,i=0;while (i<=len-1){if (s[i]=='('){int cnt=0;i++;while (s[i]!=')'){ch[++cnt]=s[i];i++;}i+=3;int cnt1=0;while (s[i]!=')'){s2[++cnt1]=s[i];i++;}int tim=0,c=1;fd(j,cnt1,1)tim=(tim+1ll*(s2[j]-'0')*c%mo)%mo,c=1ll*c*10%mo;while (tim--){fo(j,1,cnt)s1[++m]=ch[j];}i++;}else{s1[++m]=s[i];i++;}}int ans=0,c=1;fd(i,m,1){ans=(ans+1ll*(s1[i]-'0')*c%mo)%mo;c=1ll*c*10%mo;}printf("%d\n",ans);}
}
1002
此题目前为止也只有6个人,一开始没注意到原来展开也可以是个int以内的数,直接像1001展开1e9就炸了= =要用快速幂合并,其实快速幂挺容易想到,但是整个题就是这个合并,是个码农题。口头ACqwq。
1003
蓝桥杯原题,统计原理,打个表一切就出来了,要注意的是从边角出发和从中间出发步数不一样,不能随便不经思考下结论。
http://blog.csdn.net/yanghui07216/article/details/50490089
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define ll long long
#define M 1000000007
using namespace std;
ll a[200010];
ll b[20010];
int main()
{ int n,i; int cas;scanf("%d",&cas);while (cas--){ scanf("%d",&n);b[1]=1; for(i=2;i<=n;i++) b[i]=(b[i-1]*2%M); a[1]=1;a[2]=6; for(i=3;i<=n;i++) a[i]=(b[i]+2*a[i-1]+4*a[i-2])%M; ll sum=4*a[n]; for(i=2;i<n;i++) { sum+=(((8*a[n-i]*b[i-1])%M+8*b[n-i]*a[i-1])%M)%M; sum%=M; } if(n==1) sum=2; printf("%lld\n",sum); } return 0;
}
1004 留坑,不会做
1005数位dp,很久没打各种被坑,爽的一匹。
记录dp[i][j][k]表示做到第i位,前一个数为j,k表示前面是递增还是不递增,0/1状态。
记忆化搜索,由于很久没做过数位dp很多细节都忘记了,现在重新回顾一下,dalao可以跳过。
假如现在是递增状态,那么当前位的数必须是pre到当前位能取的最高数,设为end,那么明显,假如前一位未取满,那么这一位end随便搞,否则就不能超过原字符串中的数字。
假如不是,那么枚举他是否转移到递增状态,转移到很简单。
如果不转移,还是不递增,那么正常转移,当然,有一种特殊情况,就是前一位是0,这一位还是0,这种情况要打标记特殊处理,相当于直接全部为0。
最后我们对于不限制的情况用dp数组存一下,受限制的情况用dfs算就好了
#include<cstdio>
#include<algorithm>
#include<cstring>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fd(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
const int N=205;
const int mo=1e9+7;
typedef long long ll;
ll dp[N][15][5];
ll p[N];
int num[N];
inline ll dfs(int pos,int status,int pre,int limit)
{if (pos<1)return 1;if (!limit&&dp[pos][pre][status]!=-1)return dp[pos][pre][status];int end=limit?num[pos]:9;ll ans=0;if(status){fo(i,pre,end){ans+=dfs(pos-1,status,i,limit&&i==end);ans%=mo;}}else{fo(i,0,end){if (i>pre)ans=(ans+dfs(pos-1,1,i,limit&&i==end))%mo;else{if (!i&&pre==10)ans+=dfs(pos-1,0,10,limit&&i==end);else ans+=dfs(pos-1,0,i,limit&&i==end);ans%=mo;}}}if (!limit)dp[pos][pre][status]=ans;return ans;
}
inline ll solve(char s[])
{int len=strlen(s);fo(i,0,len-1){num[len-i]=s[i]-'0';}return dfs(len,0,10,1);
}
int main()
{char s[N];memset(dp,-1,sizeof(dp));int cas;scanf("%d",&cas);while (cas--){scanf("%s",s);printf("%lld\n",solve(s)-1);}
}
1006 题解tag是折半状压网络流
不存在的,不会。留坑也填不了。
2017百度之星 复赛相关推荐
- 2017百度之星复赛:1003. Pokémon GO(递推)
Pokémon GO Accepts: 738 Submissions: 1725 Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 3 ...
- 2017百度之星复赛:1006. Valley Numer(数位DP)
Valley Numer Accepts: 548 Submissions: 1125 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: ...
- 2017 百度之星 复赛 Valley Numer(数位dp)
Valley Numer 数位dp,state标志前面若干位是否存在递增序列. 代码: #include <bits/stdc++.h> using namespace std;typed ...
- 2017百度之星程序设计大赛 - 复赛 01,03,05
Arithmetic of Bomb Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Other ...
- 2017百度之星总结
2017百度之星总结 从陕西省赛回来之后就退役了,刚开始的时候很迷茫也很颓废,期末考也没有考好.因为我的某一些个人原因只能选择退队,很对不起johsnows和UMR,让他们两个独自去面对下半年的CCP ...
- HDU 6114 Chess 【组合数】(2017百度之星程序设计大赛 - 初赛(B))
Chess Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- 2016百度之星复赛 1003 拍照 优先队列
2016"百度之星" - 复赛(Astar Round3) Ended 2016-05-29 14:00:00 - 2016-05-29 17:00:00 Current Tim ...
- HDU 6112 今夕何夕【2017百度之星】【日期模拟计算】【基姆拉尔森计算公式】【蔡勒公式】
今夕何夕 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 2016百度之星复赛 1003 拍照 扫描线
原题见1003 有n条船平行于x轴,已知初始时刻的位置,向平行于x轴正向或反向走.所有船速度大小一致.现在海哥站在x轴上,要给船拍照,角度为朝向+y方向的固定90度,可以在任意时刻.任意位置拍,问何时 ...
最新文章
- Go 知识点(06)— for range 切片并对切片进行 append 不会造成死循环
- 利用 OpenCV+ConvNets 检测几何图形
- ddl mysql_mysql 5.6 在线 DDL
- 机器学习经典算法之线性回归sklearn实现
- CSS3+JS切割轮播图
- 初识Mysql(part16)--我需要知道的2条Mysql语句之子查询
- 研发协同平台持续集成Jenkins作业设计演进
- 帝国网站管理系统(ECMS)电影模块在IE下不能使用的解决办法
- 正态分布的概率密度函数python_如何实现高斯分布的概率密度函数
- Git基础学习(黑马程序员笔记)
- 设计模式之禅——模板方法模式钩子方法
- RFC791:INTERNET PROTOCOL网络协议
- mod mpm event php7.1,CentOS 7 安裝 PHP-FPM 及使用 mod_mpm_event
- win10开始菜单卡住没反应,其他都没问题 看视频也没问题。
- map的基本使用-go篇
- dp hdu5653 xiaoxin and his watermelon candy
- WordPress快速增加百度收录,加快网站内容抓取
- 黑色沙漠首发五职业PVP强度排行
- linux下usb充电问题,如何解决在Ubuntu上iPad不能充电的问题
- 结构方程模型(SEM)在生态学领域中的实践