周六题目前四题详解
时间:2020-04-25
本文章向大家介绍周六题目前四题详解,主要包括周六题目前四题详解使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
B题题目是CodeForces - 1009C Annoying Present
是一开始给我们一个长度为n的全0的数组,然后给我们m次变化,每次变化中给我们一个xi和di,每次的操作是,数组上每个数字都加上xi然后再加上di乘以dist| i - j |,
因为每个数字都要处理,所以我们可以直接处理整个数组,不管d是什么值,我们首先每次sum都是要加上xi*n的,接着关于d,如果他是正数的话,相当于每个数都加上
一个正数,那我们要保证它最大,我们就从第一位开始加就是d乘以0+1+2+.....+(n-1)所以就是d乘以n*(n-1)/ 2;如果他是负数,那我们就选择放在中间,这样数字就会尽可能小,
然后判断一下奇数还是偶数就好了,如果是奇数,我们假设是5 就是2+1+0+1+2,相当于(n+1)/2*(n-1)/2,如果是偶数,假设是6,就是2+1+0+1+2+3,相当于n*n/4;
这就是我们本题的解法了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define maxn 110000 using namespace std; #define ll long long int gi() { int x = 0; char c = getchar(); while (c < '0' || c > '9') c = getchar(); while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } #define mod 998244353 //123****123 int main() { ll n, m; cin >> n >> m; ll sum = 0; while (m--) { ll x, d; cin >> x >> d; if (d > 0) { sum += x * n + (n - 1) * n / 2 * d; } else { if (n % 2 == 1) { sum += x * n + (n + 1) / 2 * (n - 1) / 2*d; } else { sum += x * n + n * n / 4*d; } } } printf("%.13f\n", (double)sum/n); }
C题题目是 CodeForces - 965C Greedy Arkady
题目意思是给我们n个糖果,k个人,让我们选择一个x,每次分配x个糖果给每个人,要使第一个拿糖果的人,能够拿到最多的糖果(对于他而言),x有上限M,同时
分配的次数也有限制不能多于D次。
思路:我的想法是每次分配x个糖果,那么相当于我们可以分配m圈,我们只要保证第一个人拿到的数量是m+1圈就可以找一个最大值,保证他的数量最大了,那我们就每次
遍历圈数,看看能不能满足条件,然后取最大值,然后本题有一个坑点,如果你是每次遍历的话,会wa18组,因为他给我们的测试样例为
1000000000000000000 1000000000000000000 1000 1000
然后我们就会出现后面n/(k*(m)+1)的结果为正,所以就会出现错误,这里我们加一个判断,如果结果为0了,后面就不用判断了就结束了。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define maxn 110000 using namespace std; #define ll long long int gi() { int x = 0; char c = getchar(); while (c < '0' || c > '9') c = getchar(); while (c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar(); return x; } #define mod 998244353 //123****123 int main() { ll n, k, m, d; cin >> n >> k >> m >> d; ll maxx = 0; //cout << n / (k * 19 + 1) << endl; for (ll i = 1; i <= d; i++) { ll x = (n) / ( (i - 1)*k + 1); if (x == 0)break; //cout << x << endl; if (x > m) { x = m; } //cout << maxx << endl; maxx = max(maxx, x * i); } cout << maxx << endl; }
原文地址:https://www.cnblogs.com/csxaxx/p/12772748.html
- 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 数组属性和方法
- 基于Docker部署GitLab环境搭建,以及项目管理
- C# 监控 Windows 文件夹
- Scrapy 爬虫模板--XMLFeedSpider
- Scrapy 爬虫模板--CSVFeedSpider
- Scrapy 爬虫模板--SitemapSpider
- 6搞懂线程池(二)
- var lady first
- 细说.NET 缓存
- Scrapy Pipeline
- 巧用 readonly与 const
- c# 枚举之间的转换
- React Hook 的底层实现原理
- Tensorflow Object Detection API 终于支持tensorflow1.x与tensorflow2.x了
- 细说枚举
- 多用as少用强制类型转换