杭电BC12.12
来源:互联网 发布:mac版flashplayer 编辑:程序博客网 时间:2024/04/30 05:40
题解链接:http://bestcoder.hdu.edu.cn/
1、GTW likes math
问题描述
某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学《从自主招生到竞赛》。然而书里的题目太多了,GTW还
问题描述
某一天,GTW听了数学特级教师金龙鱼的课之后,开始做数学《从自主招生到竞赛》。然而书里的题目太多了,GTW还
有很多事情要忙(比如把妹),于是他把那些题目交给了你。每一道题目会给你一个函数f(x)=ax2+bx+cf
求这个函数在整数区间[l,r]之间的最值。
求这个函数在整数区间[l,r]之间的最值。
输入描述
第一行一个整数T,表示数据组数。(T≤1000)
对于每一组数据,有一行,共五个整数a,b,c,l,r。(∣a∣≤100,∣b∣≤100,∣c∣≤100,∣l∣≤100,∣r∣≤100,l
第一行一个整数T,表示数据组数。(T≤1000)
对于每一组数据,有一行,共五个整数a,b,c,l,r。(∣a∣≤100,∣b∣≤100,∣c∣≤100,∣l∣≤100,∣r∣≤100,l
≤r)
输出描述
对于每一组数据,共一行两个整数max,min,表示函数在整数区间[l,r][l,r][l,r]中的最大值和最小值。
对于每一组数据,共一行两个整数max,min,表示函数在整数区间[l,r][l,r][l,r]中的最大值和最小值。
输入样例
1
1 1 1 1 2
输出样例
7 3
代码如下:
#include <cstdio>
#include <algorithm>
using namespace std;
int main() {
int T;
scanf("%d",&T);
while (T --) {
int a,b,c,l,f;
scanf("%d%d%d%d%d",&a,&b,&c,&l,&f);
int minm = 2147483647,maxm = -2147483647;
for (int i=l;i<=r;i++) {
maxm = max(maxm,a*i*i+b*i+c);
minm = min(minm,a*i*i+b*i+c);
}
printf("%d %d\n",maxm,minm);
}
}
int T;
scanf("%d",&T);
while (T --) {
int a,b,c,l,f;
scanf("%d%d%d%d%d",&a,&b,&c,&l,&f);
int minm = 2147483647,maxm = -2147483647;
for (int i=l;i<=r;i++) {
maxm = max(maxm,a*i*i+b*i+c);
minm = min(minm,a*i*i+b*i+c);
}
printf("%d %d\n",maxm,minm);
}
}
表示后面的题再次没做出来,观看了几个大神的代码,默默地重新打了一遍
2、GTW likes gt
2、GTW likes gt
问题描述
从前,有n只萌萌的GT,他们分成了两组在一起玩游戏。他们会排列成一排,第i只GT会随机得到一个能力值bi。在第i
从前,有n只萌萌的GT,他们分成了两组在一起玩游戏。他们会排列成一排,第i只GT会随机得到一个能力值bi。在第i
秒的时候,第i只GT可以消灭掉所有排在他前面的和他不是同一组的且能力值小于他的GT。
为了使游戏更加有趣,GT的首领GTW会发功m次,第iii次发功的时间为ci,则在第ci
秒结束后,b1,b2,...,bci都会增加1。
现在,GTW想知道在第n秒之后,会有几只GT存活下来。
为了使游戏更加有趣,GT的首领GTW会发功m次,第iii次发功的时间为ci,则在第ci
秒结束后,b1,b2,...,bci都会增加1。
现在,GTW想知道在第n秒之后,会有几只GT存活下来。
输入描述
第一行只有一个整数T(T≤5),表示测试数据组数。
第二行有两个整数n,m。表示GT的个数和GTW发功的次数。(1≤n≤50000,1≤m≤500001)
第三到n+2行,每行有两个整数ai,bi,表示第iii只GT在哪个组和他的能力值 (0≤a[i]≤1,1≤b[i]≤106)
第n+3行到第n+m+2行,每行有一个整数ci
,表示GTW第iii次发功的时间。1≤c[i]≤n
第一行只有一个整数T(T≤5),表示测试数据组数。
第二行有两个整数n,m。表示GT的个数和GTW发功的次数。(1≤n≤50000,1≤m≤500001)
第三到n+2行,每行有两个整数ai,bi,表示第iii只GT在哪个组和他的能力值 (0≤a[i]≤1,1≤b[i]≤106)
第n+3行到第n+m+2行,每行有一个整数ci
,表示GTW第iii次发功的时间。1≤c[i]≤n
输出描述
总共TTT行,第iii行表示第iii组数据中,GT存活的个数。
总共TTT行,第iii行表示第iii组数据中,GT存活的个数。
输入样例
1
4 3
0 3
1 2
0 3
1 1
1
3
4
输出样例
3
3
大神代码:
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
struct pp
{
int num;
int v;
}s[50010];
{
int num;
int v;
}s[50010];
int p[50010];
int h[50010];
int h[50010];
int main()
{
int t;
cin >> t;
while (t--)
{
int n, m;
scanf("%d%d", &n, &m);
h[0] = 0;
h[n + 1] = 0;
for (int i = 1; i <= n; ++i)
{
scanf("%d%d", &s[i].num, &s[i].v);
h[i] = 0;
}
for (int i = 0; i < m; ++i)
{
scanf("%d", &p[i]);
h[p[i]]++;
}
for (int i = n; i >= 1; --i)
{
h[i] += h[i + 1];
s[i].v += h[i];
}
int ans = 0;
int max1 = -1;
int max2 = -1;
for (int i = n; i >= 1; --i)
{
if (s[i].num == 0)
{
if (max2 <= s[i].v)
{
ans++;
//printf("%d %d\n", max2, s[i].v);
}
max1 = max(max1, s[i].v);
}
else
{
if (max1 <= s[i].v)
{
ans++;
//printf("%d %d\n", max1, s[i].v);
}
max2 = max(max2, s[i].v);
}
//printf("%d %d\n", max1, max2);
}
printf("%d\n", ans);
{
int t;
cin >> t;
while (t--)
{
int n, m;
scanf("%d%d", &n, &m);
h[0] = 0;
h[n + 1] = 0;
for (int i = 1; i <= n; ++i)
{
scanf("%d%d", &s[i].num, &s[i].v);
h[i] = 0;
}
for (int i = 0; i < m; ++i)
{
scanf("%d", &p[i]);
h[p[i]]++;
}
for (int i = n; i >= 1; --i)
{
h[i] += h[i + 1];
s[i].v += h[i];
}
int ans = 0;
int max1 = -1;
int max2 = -1;
for (int i = n; i >= 1; --i)
{
if (s[i].num == 0)
{
if (max2 <= s[i].v)
{
ans++;
//printf("%d %d\n", max2, s[i].v);
}
max1 = max(max1, s[i].v);
}
else
{
if (max1 <= s[i].v)
{
ans++;
//printf("%d %d\n", max1, s[i].v);
}
max2 = max(max2, s[i].v);
}
//printf("%d %d\n", max1, max2);
}
printf("%d\n", ans);
}
return 0;
}
}
3、GTW likes function
原题链接:
http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=658&pid=1003
代码如下:
#include <cstdio>
#include <algorithm>
#include <cstdio>
#include <algorithm>
using namespace std;
long long phi(long long x) {
long long ans = x;
long long pre = x;
for (long long i=2;i*i<=pre && x > 1;i++) {
if (x % i == 0) {
ans /= i;
ans *= (i-1);
while (x % i == 0) x /= i;
}
}
if (x > 1) ans /= x,ans *= (x-1);
return ans;
}
int main() {
long long n,x;
while (~scanf("%I64d%I64d",&n,&x)) printf("%I64d\n",phi(n+x+1));
}
long long ans = x;
long long pre = x;
for (long long i=2;i*i<=pre && x > 1;i++) {
if (x % i == 0) {
ans /= i;
ans *= (i-1);
while (x % i == 0) x /= i;
}
}
if (x > 1) ans /= x,ans *= (x-1);
return ans;
}
int main() {
long long n,x;
while (~scanf("%I64d%I64d",&n,&x)) printf("%I64d\n",phi(n+x+1));
}
0 0
- 杭电BC12.12
- 杭电
- 杭电
- 杭电
- 杭电 1234 和 杭电 2115
- 杭电2056之Rectangles 杭电
- 杭电ACM1061Rightmost Digit
- 杭电2099 7.11
- 杭电ACM 1003
- 杭电 ACM 2016
- 杭电ACM1466
- 杭电ACM1003
- 杭电ACM1225
- 杭电ACM2023
- 杭电ACM2602
- 杭电ACM2955
- 杭电ACM3198
- 杭电ACM2028 求教
- 如何获取媒体库中所有音频文件信息,并在文件增删后及时更新媒体库
- nineoldandroids的使用
- Styling the Action Bar
- P03 (*) 获取列表的第K个元素
- Overlaying the Action Bar
- 杭电BC12.12
- Android SharedPreferences使用
- Starting an Activity(Activity生命周期金字塔模型)
- HTTP状态码
- c++中的参数传递问题
- XListView实现原理讲解及分析
- WM_MEASUREITEM/WM_DRAWITEM/WM_COMPAREITEM/WM_DELETEITEM
- ZListView,一个最强大的刷新、加载、滑动删除的ListView控件(一)
- 数据加载与传输