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个数为止

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define inf 0x3f3f3f3f
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll MAXN = 1e6 + 7;
const ll MAXM = 1e3 + 7;
const ll MOD = 1e9 + 7;
const double eps = 1e-6;
const double pi = acos(-1.0);
struct node
{
ll a, b, c;
ll mark;
ll x;
bool operator<(const node &t) const
{
return mark > t.mark;
}
};
int main()
{
ll n, m;
while (~scanf("%lld%lld", &n, &m))
{
priority_queue<node> pq;
ll ans = 0;
for (int i = 0; i < n; i++)
{
node t;
scanf("%lld%lld%lld", &t.a, &t.b, &t.c);
ans += t.a + t.b + t.c;
t.x = 1;
t.mark = t.a * (2 * t.x + 1) + t.b;
pq.push(t);
}
for (int i = 0; i < m - n; i++)
{
node temp = pq.top();
pq.pop();
temp.x++;
temp.mark = temp.a * (2 * temp.x + 1) + temp.b;
pq.push(temp);
ans += temp.a * (2 * temp.x - 1) + temp.b;
}
printf("%lld\n", ans);
}
return 0;
}

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

解题思路:

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

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<double, double> PDD;
#define inf 0x3f3f3f3f
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll MAXN = 1e6 + 7;
const ll MAXM = 1e3 + 7;
const ll MOD = 1e9 + 7;
const double eps = 1e-6;
const double pi = acos(-1.0);
int main()
{
int n, h, m, s;
int h1, m1, s1;
int ans = 0;
int suma = 12 * 3600;
while (~scanf("%d", &n))
{
scanf("%d%d%d", &h, &m, &s);
h %= 12;
int start = h * 3600 + m * 60 + s;
ans = 0;
int ed1 = start, ed2 = start; //倒回去最接近0,顺下去最接近12
int st1 = 0, st2 = suma; //倒回去最接近起点,顺下去最接近起点
for (int i = 0; i < n; i++)
{
scanf("%d%d%d", &h1, &m1, &s1);
h1 %= 12;
int sum = h1 * 3600 + 60 * m1 + s1;
ed2 = max(ed2, sum);
ed1 = min(ed1, sum);
if (sum < start)
st1 = max(st1, sum);
else if (sum > start)
st2 = min(sum, st2);
}
ans = min(min(suma - (start - st1), suma - (st2 - start)), min(start - ed1 + ed2 - ed1, ed2 - start + ed2 - ed1));
ans *= 6;
printf("%d.00\n", ans);
}
return 0;
}

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. 一些实战中总结的 javascript 开发经验

    Javascript 的很多扩展的特性是的它变得更加的犀利, 同时也给予程序员机会创建更漂亮并且更让用户喜欢的网站. 尽管很多的开发人员都乐于颂扬 javascript,但是仍旧有人看到它的阴暗面. ...

  2. WebGPU学习(十一):学习两个优化:“reuse render command buffer”和“dynamic uniform buffer offset”

    大家好,本文介绍了"reuse render command buffer"和"dynamic uniform buffer offset"这两个优化,以及Ch ...

  3. 超简单!pytorch入门教程(五):训练和测试CNN

    我们按照超简单!pytorch入门教程(四):准备图片数据集准备好了图片数据以后,就来训练一下识别这10类图片的cnn神经网络吧. 按照超简单!pytorch入门教程(三):构造一个小型CNN构建好一 ...

  4. 敏捷开发:代码Review

    热情高涨 代码走查作为一种流程形式,起初大家的参与热情非常高涨. 因为,自己可以学习到别人一些巧妙的思想,自己的代码和习惯都暴漏出来. 这个过程中不断地吸收和改正. 但是...... 我们一开始组织的 ...

  5. Appium Mac系统 自动测试环境搭建

    一.python 环境准备 Mac 自带 Python 环境,一般为 2.7 版本. 1.查看当前系统默认的Python路径 which python ==> /usr/bin/python 2 ...

  6. 1092 最好吃的月饼 (20分)C语言

    月饼是久负盛名的中国传统糕点之一,自唐朝以来,已经发展出几百品种. 若想评比出一种"最好吃"的月饼,那势必在吃货界引发一场腥风血雨-- 在这里我们用数字说话,给出全国各地各种月饼的 ...

  7. SpringBoot项目的代理机制【一】

    这是了解Spring代理机制的第一篇,尝试了解Spring如何实现Bean的注册和代理.这篇文章会抛出问题:Spring注册Bean,都会用Jdk代理或cglib创建代理对象吗? 1 项目准备 1.1 ...

  8. fastjson使用详解

    目录 二.fastjson使用 三.fastjson 常用 API 四.fastjson使用演示 测试类准备 1.java类转换为json字符串 2.json字符串转为java类 五.fastjson ...

  9. 快到极致的Android模拟器——Genymotion

    转载声明:Ryan的博客文章欢迎您的转载,但在转载的同时,请注明文章的来源出处,不胜感激! :-)http://my.oschina.net/ryanhoo/blog/141824 还在用Androi ...

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

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