2020-01-12(Sun) 20:00

A Next Alphabet

A.Next Alphabet

语法题,输入一个不为z的字母,输出下一位

B Achieve the Goal

B.Achieve the Goal

语法题,求平均数

C Welcome to AtCoder

C.Welcome to AtCoder

语法题,模拟判决,每道题有id,统计AC的题目数量和每道AC的题目在AC前WA的数量,用map轻松搞定

D Maze Master

D.Maze Master

模板题,给定迷宫图,任意选择起点与终点,求起点到终点所有最短路径的最大值

题解:【搜索】注意到范围:1~20,暴力完全可行,最终时间560ms,暴力枚举起点终点,最常见的bfs

#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
#include <iostream>
#include <queue>
#include <vector>
#include <set>
#include <map>
using namespace std;
typedef long long ll;
typedef pair<int,int> PII;
const int N = 1007;int n,m,t,k;char mp[25][25];int dx[4] = {-1,0,1,0};
int dy[4] = {0,1,0,-1};int bfs(int x1,int y1,int x2,int y2){queue<PII> que;int st[25][25] = {0};que.push({x1,y1});st[x1][y1] = 1;while(que.size()){PII tmp = que.front();int a = tmp.first;int b = tmp.second;que.pop();for(int i = 0;i < 4;i++){int da = a+dx[i];int db = b+dy[i];if(da >= 1 && db >= 1 && da <= n && db <= m && !st[da][db] && mp[da][db] == '.'){que.push({da,db});st[da][db] = st[a][b]+1;
//                cout<<"### "<<st[da][db]<<endl;if(da == x2 && db == y2)return st[da][db]-1;}}}return -1;
}int main(void){cin>>n>>m;for(int i = 1;i <= n;i++){for(int j = 1;j <= m;j++){cin>>mp[i][j];}}int ans = 0;for(int x1 = 1;x1 <= n;x1++){for(int y1 = 1;y1 <= m;y1++){for(int x2 = 1;x2 <= n;x2++){for(int y2 = 1;y2 <= m;y2++){if(x1 == x2 && y1 == y2)continue;if(mp[x1][y1] == '#' || mp[x2][y2] == '#')continue;int num = bfs(x1,y1,x2,y2);if(num != -1){ans = max(ans,num);}}}}}cout<<ans;return 0;
}
E Max-Min Sums

E - Max-Min Sums

题意:给定n个数,每次从中选择k个数,定义k个数的权值是k个数中最大与最小值之差,求所有情况权值之和,对1e9+7取模

题解:【组合数学,贡献,对每个元素考虑】数学题,Atcoder的题中一般都会有数学题,题目数据量1e5,搜索显然不行,考虑到每个序列只有最大值和最小值对答案有贡献,思考对每个数字讨论,先排序,从小到大,每次选取k个数,肯定在k个数的最左右两端。

任何一个数有三种情况,假设是第m个数

左边右边选中,那么与答案无关

左边界,出现的可能是m+1->n之间有k-1个数

右边界,出现的可能是1->m-1之间有k-1个数

也就是任意一个数,作为max的方案是C(i-1,k-1),作为min的方案是

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <vector>
using namespace std;
typedef pair<int,int>PII;
typedef long long ll;
const int mod = 1e9+7;
int n,m,k,t;int q[100100];
int inv[100100];//逆元int q_mi(int a,int b){int ans = 1;while(b){if(b&1)ans = (ll)ans*a%mod;b>>=1;a = (ll)a*a%mod;}return ans;
}int main(void){cin>>n>>k;for(int i = 1;i <= n;i++){cin>>q[i];}sort(q+1,q+1+n);for(int i = 1;i <= n;i++){inv[i] = q_mi(i,mod-2);}ll tmp = 1;int ans = q[k];for(int i = k+1;i <= n;i++){tmp = tmp*(i-1)%mod;tmp = tmp*inv[i-k]%mod;ans = (ans + q[i]*tmp%mod)%mod;}ans -= q[n-k+1];tmp = 1;for(int i = k+1;i <= n;i++){tmp = tmp * (i-1)%mod;tmp = tmp * inv[i-k]%mod;ans = (ans-q[n-i+1]*tmp%mod)%mod;}if(ans < 0) ans+=mod;printf("%d",ans);return 0;
}

AtCoder Beginner Contest 151相关推荐

  1. 数学--数论-- AtCoder Beginner Contest 151(组合数+数学推导)好题(๑•̀ㅂ•́)و✧

    思路统计最大值出现的次数,和最小值出现的次数.虽然是每次都是MAX-MIN,我们先求MAX的和,然后再求MIN的和,做差. 这次代码写的真的很漂亮 题目地址: #include <bits/st ...

  2. AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...

  3. AtCoder Beginner Contest 197 题解(A ~ F)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...

  4. AtCoder Beginner Contest 198 (A ~ F)题解

    目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...

  5. AtCoder Beginner Contest 215 G - Colorful Candies 2

    AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...

  6. AtCoder Beginner Contest 215 F - Dist Max 2

    AtCoder Beginner Contest 215 F - Dist Max 2 平面上有一系列的点(xi,yi)(x_i,y_i)(xi​,yi​),定义两点(xi,yi),(xj,yj)(x ...

  7. AtCoder Beginner Contest 215 E - Chain Contestant

    AtCoder Beginner Contest 215 E - Chain Contestant 给出一个只包括A~J的字符串,定义一种子序列为:在这个子序列中,相同的字符必定连续出现,求出这样的子 ...

  8. AtCoder Beginner Contest 204 F Hanjo 2

    AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...

  9. Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解

    Caddi Programming Contest 2021(AtCoder Beginner Contest 193) A - Discount 打折浮点数除即可 B - Play Snuke 枚举 ...

最新文章

  1. 程序员毕业两年,三年工作经验是怎么来的? | 每日趣闻
  2. Windows8 解决VMware与Hyper-V不兼容共存方法
  3. 光盘刻录只允许读取不能拷贝_便携易用,读写强劲:ORICO外置刻录光驱体验
  4. php pdo操作数据库
  5. 游戏设计模式思考:“穿越火线”中的“策略模式”
  6. Centos升级Python 2.7并安装pip、ipython
  7. vs 下如何调试js
  8. 格力电器2018年年度权益分派方案出炉:共派发90亿元
  9. Python框架篇之Django(ORM对象关系映射)
  10. L2-026 小字辈-PAT团体程序设计天梯赛GPLT
  11. cin和cout比scanf和printf慢的原因及解决方案
  12. 《算法导论》:关于循环不变式
  13. idea代码格式美化快捷键
  14. 各大PT网站信息记录(不断更新中)
  15. java 用户拒绝对代码授予权限_java – @Secured函数获取授权用户的拒绝访问权限...
  16. 个位数字加百位数字等于千位数字加上十位数字,且该该数为奇数
  17. 知物由学 | 舆情数据清洗“动”“静”分离方案
  18. IntelliJ IDEA的这个接口调试工具真是太太太太太好用了!
  19. excel表格怎么输入001
  20. 完全解读:用最小二乘法求模型参数

热门文章

  1. 冒泡排序Matlab程序超详细注释
  2. 无名小站没买成的Google买下韩国网志平台Tatter,「搜寻引擎+部落格」夺回东亚宝座?...
  3. jsbarcode 条形码
  4. js封面图片上传插件
  5. 如何免费将OFD转成PDF
  6. 如何查询中标公告?工程中标公示在哪里查询?
  7. 数列极差问题(c语言实现)
  8. FastTunnel Win10内网穿透实现远程桌面
  9. VMware卸载辛酸历程
  10. 乌云漏洞库/知识库离线下载