AtCoder Beginner Contest 173 A ~ F(已经补完)
时间:2022-07-24
本文章向大家介绍AtCoder Beginner Contest 173 A ~ F(已经补完),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
A 签到:
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int ans = 1000-n%1000;
if(ans % 1000 == 0) cout<<0<<endl;
else cout<<ans<<endl;
return 0;
}
B 签到
#include<iostream>
#include<map>
using namespace std;
int main(){
int t;
cin>>t;
int num1=0,num2=0,num3=0,num4 =0;
while(t--){
string s;
cin>>s;
if(s == "AC") num1++;
if(s == "WA") num2++;
if(s == "TLE") num3++;
if(s == "RE") num4++;
}
cout<<"AC x "<<num1<<endl;
cout<<"WA x "<<num2<<endl;
cout<<"TLE x "<<num3<<endl;
cout<<"RE x "<<num4<<endl;
return 0;
}
C 思路:二进制枚举 for(int i=0;i<(1<<h);i++) for(int j=0;j<(1<<w);j++) 二进制每次+1就可以暴力遍历每种情况出现的可能性
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl "n"
int main(){
ios_base::sync_with_stdio(0);cin.tie(0);
int n,m,k;
cin>>n>>m>>k;
int ans=0;
bool ar[n][m];
for(int i=0;i<n;i++)for(int j=0;j<m;j++){
char x;cin>>x;
ar[i][j]= x == '#';
}
for(int i=0;i<(1<<n);i++){
for(int j=0;j<(1<<m);j++){
int cnt=0;
for(int x=0;x<n;x++){
for(int y=0;y<m;y++){
if(ar[x][y]&&(i&(1<<x))&&(j&(1<<y)))cnt++;
}
}
if(cnt==k)ans++;
}
}
cout<<ans<<endl;
return 0;
}
D 既然要让权值最大,那必然要让大的值先插入,否则会被相邻的小的值影响,导致不能贡献权值。所以要先排序。又因为是一个圈,左右两边都能贡献权值,所以除了最大的数只能贡献一次,剩余的数都可以贡献两次。注意判断数量的奇偶。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
long long int m,t;
long long int a[200005];
int main()
{
cin >> t;
for (int i = 1; i <= t; i++)
{
cin >> a[i];
}
sort(a + 1, a + 1 + t);
m = a[t];
int j = t - 1;
for (int i = (t - 2) / 2; i > 0; i--)
{
m += 2 * a[j--];
}
if (t % 2 == 1)
{
m += a[j];
}
cout << m;
}
E 题意:求从n个数选出k个数的乘积最大值结果再取模1e9+7。
思路:对于多个数的乘积想要结果最大,在满足绝对值最大的情况下要满足包含偶数个负数。 对于所选的数是奇数时,首先就取一个最大正数,接下来就是俩个正数积和俩个负数积取最大。 当正数数量为0,且选择数量为奇数时结果一定为负,这时要想结果最大的话就要取k个绝对值最小的数。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
long long int mod = 1e9 + 7;
long long int n,m;
long long int a[200005];
bool cmp(int x, int y)
{
return abs(x) < abs(y);
}
int main()
{
int pn=0 ,nn = 0;
//pn正数,nn负数;
cin >> n >> m;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
if (a[i] >= 0)
pn++;
else
nn++;
}
int l=1, r=n;//左右逼近
long long ans = 1;
if (!pn && m % 2 == 1)//结果必定为负数
{
sort(a + 1, a + 1 + n, cmp);
for (int i = 1; i <= m; i++)
ans = a[i] * ans % mod;
}
else
{
sort(a + 1, a + 1 + n, greater< int >());
while (m)
{
if (m % 2 == 1)//为奇数就乘大的正数
{
ans = ans * a[l] % mod;
l++, m--;
}
else
{
if (a[l] * a[l + 1] >= a[r] * a[r - 1])
//两正数乘起来比负数大
{
ans = ans * a[l] % mod * a[l + 1] % mod;
l += 2,m -= 2;
}
else
{
ans = ans * a[r - 1] % mod * a[r] % mod;
r -= 2,m -= 2;
}
}
}
}
//防止出现负数,故再加mod再取余数
cout << (ans % mod + mod) % mod << endl;
}
F 题意:给你一棵树,节点为1到n,取若干连续编号的节点,求出其连通分量,问所有连续段的连通分量之和。
思路:直接算不好算所以先算一开始一条边都没有的时候答案是多少,然后每加入一个边,就把含他的s的数量去掉。
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>
using namespace std;
int main()
{
long long n, l, r,sum=0;
cin >> n;
for (int i = 1; i <= n; i++)
{
sum += i * (n - i + 1);
}
for (int i = 1; i < n; i++)
{
cin >> l >> r;
if (l > r)
swap(l, r);
sum -= l * (n - r + 1);
}
cout << sum << endl;
}
- 学 Python 就是为了当程序员?不止一种可能性
- 2018程序员必备碎片化学习工具
- 深入理解php底层:php生命周期
- 网站性能测试指标详解
- 在.NET Core类库中使用EF Core迁移数据库到SQL Server
- 人类的未来:儿童都能驾驶的汽车
- 论循证新闻的方法与意义——一种媒体融合背景下新闻生产方式创新
- 域名资讯:域名jiuhuang.com已搭建成“韭黄答题助手”网站
- Servlet开篇
- 浅谈中国域名的名与利
- 加密货币的火爆,tokens.com域名已50万美元成交
- 家具平台谷居完成2000万元融资,启用长尾双拼域名
- 如果未来的 AI 拥有意识,你舍得不理它吗?
- 微信这家人脸智慧时尚店可以“刷脸”试衣、付款
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python数据分析之Seaborn(热图绘制)
- Python数据分析之matplotlib(3D绘图)
- 一看就懂的Tensorflow实战(Tensorflow入门)
- 一看就懂的Tensorflow实战(线性回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型)
- 一看就懂的Tensorflow实战(Logistic回归模型Eager API)
- 聊聊dubbo-go的DubboProtocol
- 一看就懂的Tensorflow实战(最近邻)
- 一看就懂的Tensorflow实战(随机森林)
- 一看就懂的Tensorflow实战(多层感知机)
- 一看就懂的Tensorflow实战(卷积神经网络)
- 一看就懂的Tensorflow实战(多层感知机模型Eager API)
- 一看就懂的Tensorflow实战(K-Means模型)
- 一看就懂的Tensorflow实战(模型的保存与读取)
- 知识卡片 文本分词