Function

题目链接

Problem Description

wls 有 n 个二次函数 Fi(x) = aix2 + bix + ci (1 ≤ i ≤ n).

现在他想在∑ni=1xi = m 且 x 为正整数的条件下求∑ni=1Fi(xi)的最小值。

请求出这个最小值。

Input

第一行两个正整数 n, m。

下面 n 行,每行三个整数 a, b, c 分别代表二次函数的二次项,一次项,常数项系数。

1 ≤ n ≤ m ≤ 100, 000

1 ≤ a ≤ 1, 000

−1, 000 ≤ b, c ≤ 1, 000

Output

一行一个整数表示答案。

Sample Input

2 3

1 1 1

2 2 2

Sample Output

13

解题思路:

利用结构体维护每个函数f(x+1)-f(x)的差值,一开始将所有函数x置为1,贪心,优先取差值小的函数,x+1并更新差值重新放入优先队列中直至用完m-n个数为止

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef unsigned long long ull;
  5. typedef pair<int, int> PII;
  6. typedef pair<double, double> PDD;
  7. #define inf 0x3f3f3f3f
  8. const ll INF = 0x3f3f3f3f3f3f3f3f;
  9. const ll MAXN = 1e6 + 7;
  10. const ll MAXM = 1e3 + 7;
  11. const ll MOD = 1e9 + 7;
  12. const double eps = 1e-6;
  13. const double pi = acos(-1.0);
  14. struct node
  15. {
  16. ll a, b, c;
  17. ll mark;
  18. ll x;
  19. bool operator<(const node &t) const
  20. {
  21. return mark > t.mark;
  22. }
  23. };
  24. int main()
  25. {
  26. ll n, m;
  27. while (~scanf("%lld%lld", &n, &m))
  28. {
  29. priority_queue<node> pq;
  30. ll ans = 0;
  31. for (int i = 0; i < n; i++)
  32. {
  33. node t;
  34. scanf("%lld%lld%lld", &t.a, &t.b, &t.c);
  35. ans += t.a + t.b + t.c;
  36. t.x = 1;
  37. t.mark = t.a * (2 * t.x + 1) + t.b;
  38. pq.push(t);
  39. }
  40. for (int i = 0; i < m - n; i++)
  41. {
  42. node temp = pq.top();
  43. pq.pop();
  44. temp.x++;
  45. temp.mark = temp.a * (2 * temp.x + 1) + temp.b;
  46. pq.push(temp);
  47. ans += temp.a * (2 * temp.x - 1) + temp.b;
  48. }
  49. printf("%lld\n", ans);
  50. }
  51. return 0;
  52. }

Clock

题目链接

Problem Description

wls 有一个钟表,当前钟表指向了某一个时间。

又有一些很重要的时刻,wls 想要在钟表上复现这些时间(并不需要依次复现)。我们可以顺时针转动秒针,也可以逆时针转动秒针,分针和时针都会随着秒针按规则转动,wls 想知道秒针至少转动多少角度可以使每个时刻至少都会被访问一次。

注意,时钟上的一种时针分针秒针的组合,可以代表两个不同的时间。

Input

第一行一个整数 n 代表有多少个时刻要访问。

第二行三个整数 h,m,s 分别代表当前时刻的时分秒。

最后n行每一行三个整数 hi,mi,si 代表每个要访问的时刻的时分秒。

1 ≤ n ≤ 86, 400

0 ≤ h, hi < 24

0 ≤ m, mi, s, si < 60

Output

输出一行一个数代表秒钟转的角度,答案保留两位小数。

Sample Input

1

0 1 0

0 1 1

Sample Output

6.00

解题思路:

总共有一直顺时针转,一直逆时针转,先逆时针后顺时针,先顺时针后逆时针转四种情况,直接模拟

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4. typedef unsigned long long ull;
  5. typedef pair<int, int> PII;
  6. typedef pair<double, double> PDD;
  7. #define inf 0x3f3f3f3f
  8. const ll INF = 0x3f3f3f3f3f3f3f3f;
  9. const ll MAXN = 1e6 + 7;
  10. const ll MAXM = 1e3 + 7;
  11. const ll MOD = 1e9 + 7;
  12. const double eps = 1e-6;
  13. const double pi = acos(-1.0);
  14. int main()
  15. {
  16. int n, h, m, s;
  17. int h1, m1, s1;
  18. int ans = 0;
  19. int suma = 12 * 3600;
  20. while (~scanf("%d", &n))
  21. {
  22. scanf("%d%d%d", &h, &m, &s);
  23. h %= 12;
  24. int start = h * 3600 + m * 60 + s;
  25. ans = 0;
  26. int ed1 = start, ed2 = start; //倒回去最接近0,顺下去最接近12
  27. int st1 = 0, st2 = suma; //倒回去最接近起点,顺下去最接近起点
  28. for (int i = 0; i < n; i++)
  29. {
  30. scanf("%d%d%d", &h1, &m1, &s1);
  31. h1 %= 12;
  32. int sum = h1 * 3600 + 60 * m1 + s1;
  33. ed2 = max(ed2, sum);
  34. ed1 = min(ed1, sum);
  35. if (sum < start)
  36. st1 = max(st1, sum);
  37. else if (sum > start)
  38. st2 = min(sum, st2);
  39. }
  40. ans = min(min(suma - (start - st1), suma - (st2 - start)), min(start - ed1 + ed2 - ed1, ed2 - start + ed2 - ed1));
  41. ans *= 6;
  42. printf("%d.00\n", ans);
  43. }
  44. return 0;
  45. }

2019中国大学生程序设计竞赛-女生专场(重现赛)部分题解C-Function(贪心+优先队列) H-clock(模拟)的更多相关文章

  1. 【2019中国大学生程序设计竞赛-女生专场】C - Function

    原题 韦神提供的思路orz 首先一个显然的性质,所有的c可以提出来,方程变成ax^2+bx的形式 因为x的值是离散的,而m的值又不大 所以一开始让x都为1(注意!x是正整数),然后每次挑一个x让他加一 ...

  2. 2017中国大学生程序设计竞赛 - 女生专场 Deleting Edges(思维+最短路)

    Deleting Edges Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  3. 2017中国大学生程序设计竞赛 - 女生专场 Happy Necklace(递推+矩阵快速幂)

    Happy Necklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  4. 2017中国大学生程序设计竞赛 - 女生专场(Graph Theory)

    Graph Theory Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  5. 2017中国大学生程序设计竞赛 - 女生专场(dp)

    Building Shops Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...

  6. HDU 6024(中国大学生程序设计竞赛女生专场1002)

    这是CCPC女生专场的一道dp题.大佬们都说它简单,我并没有感到它有多简单. 先说一下题意:在一条直线上,有n个教室,现在我要在这些教室里从左到右地建设一些作为糖果屋,每个教室都有自己的坐标xi 和建 ...

  7. "巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场

    Combine String #include<cstdio> #include<cstring> #include<iostream> #include<a ...

  8. hdu_5705_Clock("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5705 题意:给你一个时间和一个角度,问你下一个时针和分针形成给出的角度是什么时候 题解:我们可以将这个 ...

  9. hdu_5707_Combine String("巴卡斯杯" 中国大学生程序设计竞赛 - 女生专场)

    题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=5707 题意:给你三个字符串 a,b,c,问你 c能否拆成a,b,a,b串的每一个字符在c中不能变 题解 ...

随机推荐

  1. Asp.NetCore3.1版本的CodeFirst与经典的三层架构与AutoFac批量注入

    Core3.1 CodeFirst与AutoFac批量注入(最下面附GitHub完整 Demo,由于上传网速较慢,这里就直接压缩打包上传了) ===Core3.1 CodeFirst 数据库为远程阿里 ...

  2. 用c++ 给易语言写支持库学习记录

    废话我就不对说 直接开始 易语言官方下载的易语言安装路径下 有一个SDK文件夹 我们点进入cpp文件夹里面提供是c++的SDK elib文件夹里就是sdk 我们新建一个win32项目 这里我用的是VS ...

  3. Java 解析Exception信息

    最近的项目需要捕获系统抛出的异常,并将异常信息保存,记录以下解析Exception的方法. 异常详细信息 这里说的“异常详细信息”指的是平时打印到控制台的那种信息,如下图 获取方法: package ...

  4. (三)Django模板语言

    一.字典,列表,类在template模板中的使用 在视图函数中,即views.py中进行传值操作,可通过render方法,进行传值 from django.shortcuts import rende ...

  5. PHP计算每月几周,每周的开始结束日期

    PHP计算每月几周,每周的开始结束日期 因为项目中需要一个每周工作计算的功能,具体日期的算法是,把每月拆分成几个周,最后一个星期这个月份的天数不够就补上下个月的. 列如今天8月27星期一,这个月有31 ...

  6. 【转】ArcGIS Server 10.1 动态图层

    ArcGISServer将GIS资源以服务的方式发布,能够让更多的人在Web上浏览.使用.不过,诸如气象.环保等方面的信息是实时变化的,按照之前常规的方法,我们先要将最新获得的信息组织成地图文档后再对 ...

  7. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

  8. 重拾c++第一天(3):数据处理

    1.short至少16位:int至少与short一样长:long至少32位,且至少与int一样长:long long至少64位,且至少与long一样长 2.sizeof 变量  返回变量长度  或者s ...

  9. cogs 1583. [POJ 3237] 树的维护 树链剖分套线段树

    1583. [POJ 3237] 树的维护 ★★★★   输入文件:maintaintree.in   输出文件:maintaintree.out   简单对比时间限制:5 s   内存限制:128 ...

  10. Python知识体系框架 思维导图

    技术文档已经独立整理! 请移步个人技术文档:https://anxiangchegu.github.io/technical-doc 如需更多Java.Python.大数据体系知识,请稳移步个人技术文 ...