AtCoder Beginner Contest 151
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相关推荐
- 数学--数论-- AtCoder Beginner Contest 151(组合数+数学推导)好题(๑•̀ㅂ•́)و✧
思路统计最大值出现的次数,和最小值出现的次数.虽然是每次都是MAX-MIN,我们先求MAX的和,然后再求MIN的和,做差. 这次代码写的真的很漂亮 题目地址: #include <bits/st ...
- AtCoder Beginner Contest 202 D - aab aba baa(组合计数,字典序)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Problem 有 AAA 和 aaa,BBB 个 bbb ,可以使用这 A+BA+BA+B 个字符任 ...
- AtCoder Beginner Contest 197 题解(A ~ F)
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A - Rotate B - Visibility C - ORXOR D - Opposite ...
- AtCoder Beginner Contest 198 (A ~ F)题解
目录 A. Div B. Palindrome with leading zeros C. Compass Walking D. Send More Money E. Unique Color F. ...
- AtCoder Beginner Contest 215 G - Colorful Candies 2
AtCoder Beginner Contest 215 G - Colorful Candies 2 有n个糖果,每个糖果有着一个颜色a[i],每次拿k个糖果期望拿到E(x)个不同颜色的糖果,求出k ...
- 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 ...
- AtCoder Beginner Contest 215 E - Chain Contestant
AtCoder Beginner Contest 215 E - Chain Contestant 给出一个只包括A~J的字符串,定义一种子序列为:在这个子序列中,相同的字符必定连续出现,求出这样的子 ...
- AtCoder Beginner Contest 204 F Hanjo 2
AtCoder Beginner Contest 204 F Hanjo 2 H宽,W长的二维平面上,用1 * 1或者2 * 1的地砖来铺,要求铺满,求出方案数. 数据范围H <= 6, W & ...
- Caddi Programming Contest 2021(AtCoder Beginner Contest 193) 题解
Caddi Programming Contest 2021(AtCoder Beginner Contest 193) A - Discount 打折浮点数除即可 B - Play Snuke 枚举 ...
最新文章
- 程序员毕业两年,三年工作经验是怎么来的? | 每日趣闻
- Windows8 解决VMware与Hyper-V不兼容共存方法
- 光盘刻录只允许读取不能拷贝_便携易用,读写强劲:ORICO外置刻录光驱体验
- php pdo操作数据库
- 游戏设计模式思考:“穿越火线”中的“策略模式”
- Centos升级Python 2.7并安装pip、ipython
- vs 下如何调试js
- 格力电器2018年年度权益分派方案出炉:共派发90亿元
- Python框架篇之Django(ORM对象关系映射)
- L2-026 小字辈-PAT团体程序设计天梯赛GPLT
- cin和cout比scanf和printf慢的原因及解决方案
- 《算法导论》:关于循环不变式
- idea代码格式美化快捷键
- 各大PT网站信息记录(不断更新中)
- java 用户拒绝对代码授予权限_java – @Secured函数获取授权用户的拒绝访问权限...
- 个位数字加百位数字等于千位数字加上十位数字,且该该数为奇数
- 知物由学 | 舆情数据清洗“动”“静”分离方案
- IntelliJ IDEA的这个接口调试工具真是太太太太太好用了!
- excel表格怎么输入001
- 完全解读:用最小二乘法求模型参数