P4744 A’s problem(a)

时间: 1000ms / 空间: 655360KiB / Java类名: Main

背景

冬令营入学测试题,每三天结算一次成绩。参与享优惠

描述

这是一道有背景的题目,小A也是一个有故事的人。但可惜的是这里纸张太小,小A无法把故事详细地说给大家听。可能小A自己也讲不清楚自己的故事,因为如果讲清了,也就没有这道题目了……

小A的问题是这个样子,它找到了n份不同的工作,第i份工作每个月有ai的工资,每份工作需要小A每天工作8小时,一周工作7天。小A想知道性价比最高(一个月的工资除以总时长)的工作的编号是多少。如果有多份,输出编号最小的就可以了。

输入格式

第一行一个数n,表示有n份工作。

接下来n个数表示ai。

输出格式

输出一个数表示答案。

备注

输入样例

5

3 3 4 5 5

输出样例

4

数据范围

对于100%的数据n<=100,1<=ai<=1000。

【水题不多说系列】

#include<iostream>
using namespace std;
int n,a[];
int main()
{
cin>>n;
for(int i=;i<=n;i++)
cin>>a[i];
int j=;
for(int i=;i<=n;i++)
if(a[i]>a[j])j=i;
cout<<j;
return ;
}

P4745 B’s problem(b)

时间: 1000ms / 空间: 655360KiB / Java类名: Main

背景

冬令营入学测试

描述

题目描述

小B生活在一个很奇怪的国家里,这个国家的钱的面值只有可能是25,50,100的。小B最近在做社会实践,这次它选择在一个餐厅里干这件事情。但今天发生了一件有趣的事,这件事情是这个样子的,餐厅里大家都在排队买饭,粗心的打饭阿姨忘记要带零钱,并且所有排队打饭的人只带了一张钱。

具体地,第i个人带了一张面额为ai的钱,为了方便起见,我们规定每个人都想买价值25元的饭盒。阿姨显得不知所措。聪明的小B想到了一个方法,让带了25元的先买饭!这样阿姨就有了更多的零钱去找开一些面值较大的钱。

但这样对于一些人来说仍有可能找不开零钱,小B想知道是否存在一种排队方案,能够对所有人找开零钱。如果可行输出“YES”,否则输出“NO”。

输入格式

第一行一个数n,表示有n个想买饭的人。

接下来一行n个数ai,表示第i个人带着的钱的面额。

输出格式

输出“YES”或者“NO”。

备注

输入样例

3

25 50 100

输出样例

NO

数据范围

对于100%的数据n<=100,ai=25或者50或者100。

思路

把所有的人拿的钱从小到大排个序,另外可以发现

如果这个人拿的是25元,那么不需要找钱,我的钱包里就多了25元

如果这个人拿的是50元,那么只有一种解决办法,用一张25元的和他换,如果此时我没有25元的那么“NO”(因为我已经把人们从大到小排过序了,所以后面的人不可能有25的钱)

如果这个人拿的是100元,有两种办法

  用一张50和一张25与他换,要求b25>=1,b50>=1

  用三张25与他换,要求b25>=3

不满足要求则NO

#include<iostream>
#include<algorithm>
using namespace std;
int n,a[],b25,b50,b100;
bool flag;
int main()
{
cin>>n;
for(int i=;i<=n;i++)cin>>a[i];
sort(a+,a+n+);
for(int i=;i<=n;i++)
{
if(a[i]==)b25++;
if(a[i]==)
{
if(b25==)flag=;
else b25--,b50++;
}
if(a[i]==)
{
if(b25==)flag=;
else{
if(b25>=&&b50>=){
b25--;b50--;
continue;
}
else if(b25>=){
b25-=;
continue;
}
else flag=;
}
}
}
if(flag==)cout<<"YES";
else cout<<"NO";
return ;
}

P4747 D’s problem(d)

时间: 1000ms / 空间: 655360KiB / Java类名: Main

背景

冬令营入学测试题

描述

题目描述

小D是一名魔法师,它最喜欢干的事就是对批判记者了。

这次记者招待会上,记者对于小D的数学很好奇。于是小D找了个方法把记者批判了一番。

它对记者抛出了这么一个问题:我有n点能量,写下数字i(1<=i<=9)需要花费a{i}点能量,我用这n点能量最多能写出什么数来?(当然可以不用光n点能量,具体看样例)

记者们一脸懵逼,于是来求助于你。

输入格式

一行10个数,表示n,a1,a2,a3,…,a9。

输出格式

一个数表示答案。

备注

输入样例1

10 2 2 1 2 2 2 2 2 2

输出样例1

3333333333

输入样例2

10 4 11 11 11 11 11 11 11 10

输出样例2

11

数据范围

对于30%的数据n,ai<=10。

对于60%的数据n,ai<=100。

对于100% 的数据1<=n,ai<=1000000,n>=min{ai}。

思路

输出的数最大,首先要保证输出的位数最大,其次要尽量使高位上的数值最大

找到数列中的最小值,即可找到输出的最大位数=总能量/最小值

可能在输出一串最小值代表的位置后发现还有能量剩余,那么这些能量不用白不用,但是我们输出的数字已经是用能量最小的数字了,没有更小的供我单独利用剩余能量了,于是我只能试图去最初确定的数列中改变一些数,当然,为了不越改越小,我们要从9倒着循环,到最小值就结束。

关于实现,我们只需要一次一次的加进余数,然后在计算中获得新的余数,我在代码中说的比较清楚

#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
int n,t;
int a[];
int min1=;
int flag=;
int main()
{
cin>>n;
for(int i=;i<=;i++)cin>>a[i];
for(int i=;i>=;i--)
{
if(a[i]<min1)
{
min1=a[i];//找到最小数的大小min1和序号t
t=i;
}
}
int s=n/a[t];//最多可以输出s个t
int q=n%a[t];//输出s个t后,还剩q个能量
int p=;
for(int j=;j<=s;j++)
{
q+=min1;//剩下的能量加上输出这个位置上的t所需要的能量,可能得到更优的解,933总比333优吧,那就把输出333剩下的能量分配出一点来供给输出9,还得保证输出数字的位数不变
for(int i=;i>=t;i--)//从9到t中寻找更划算
if(a[i]<=q)
{
q=q-a[i];//我又计算出一个新的剩余能量
cout<<i;
p++;//p代表了被我修改(用剩余能量补偿至>t)的数的个数
}
}
for(int i=;i<=s-p;i++)cout<<t;//把未经修改的位置上填满t
return ;
}

P4749 F’s problem(f)

时间: 1000ms / 空间: 655360KiB / Java类名: Main

背景

冬令营入学测试

描述

这个故事是关于小F的,它有一个怎么样的故事呢。

小F是一个田径爱好者,这天它们城市里正在举办马拉松比赛,这个城市可以被看作是n个点m条带权有向边组成的图。马拉松比赛的终点只有一个:点S。

有k个人参加了这场马拉松,小F所在的城市的马拉松与正常的马拉松不一样,每个人的起点都是不相同的,具体地,第i个人从第{ai}个城市出发,并且第i个人的速度是{vi}。每个人当然是会沿着最短路跑到S点,如果一个人跑步的距离是s,速度是v,那么他所花费的时间为s/v。

现在小F想知道,谁是最快到达终点的。若有多个同时到达终点的,就求跑的路最长的,如果有多个同时到达终点且跑的路最长的,就求编号最大的。

小F想知道那个人的编号是多少。

输入格式

第一行3个数字,n,k,m,表示点的个数,跑步的人数,以及路径的条数。

接下来一行m行,每行3个数ai,bi,ci表示有一条从ai到bi长为ci的有向路径。

接下来一行一个数S。

接下来一行k个数,表示每个人的起点xi。

接下来一行k个数,表示每个人的速度vi。

输出格式

输出一个数表示答案。

测试样例1

输入

5 2 10 
5 1 9 
1 2 81 
2 3 30 
2 1 46 
1 4 45 
2 4 48 
5 1 93 
2 5 61 
2 5 21 
3 5 45 
1 
3 5 
18 29

输出

2

备注

输入样例

3 2 3

1 2 2

1 3 3

2 3 1

3

2 1

1 3

输出样例

2

数据范围

对于30%的数据n<=5,m<=10。

对于100%的数据n<=300,m<=5000。0<=ci<=100,1<=xi,S<=n,1<=vi<=100,1<=k<=n。

思路

数据范围好xiao,本少大放心头之快,写了一篇弗洛伊德

弗洛伊德求出最短路。then balabala……(都在代码中了)

#include<iostream>
using namespace std;
int a[][];
int n,k,m,s;
int x,y,z;
int xi[],vi[];
double minx=;
int jl,jlk;
int main()
{
cin>>n>>k>>m;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
if(a[i][j]==&&i!=j) a[i][j]=;
for(int i=;i<=m;i++)
{
cin>>x>>y>>z;
a[x][y]=z;
}
for(int kk=;kk<=n;kk++)
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
if(i!=j&&i!=kk&&j!=kk)
{
a[i][j]=min(a[i][j],a[i][kk]+a[kk][j]);
}
}
cin>>s;
for(int i=;i<=k;i++)
cin>>xi[i];
for(int i=;i<=k;i++)
cin>>vi[i];
for(int i=;i<=k;i++)
{
if(a[xi[i]][s]*1.0/vi[i]<=minx)
{
if(a[xi[i]][s]*1.0/vi[i]==minx)
{
if(a[xi[i]][s]>=a[jlk][s])
{
minx=a[xi[i]][s]*1.0/vi[i];
jl=i;
jlk=xi[i];
}
}
else{
minx=a[xi[i]][s]*1.0/vi[i];
jl=i;
jlk=xi[i];
}
}
}
cout<<jl;
}

Tyvj2017清北冬令营入学测试的更多相关文章

  1. 清北冬令营入学测试[ABCDEF]

    http://tyvj.cn/Contest/861 [1.2.2017] 像我这种蒟蒻只做了前6道还有道不会只拿了暴力分 A 描述 这是一道有背景的题目,小A也是一个有故事的人.但可惜的是这里纸张太 ...

  2. 清北学堂入学测试P4751 H’s problem(h)

    P4751 H’s problem(h)  时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 小H是一个喜欢逛街的女孩子,但是由于上了大学 ...

  3. 清北学堂2017NOIP冬令营入学测试P4745 B’s problem(b)

    清北学堂2017NOIP冬令营入学测试 P4745 B's problem(b) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描 ...

  4. 清北学堂2017NOIP冬令营入学测试 P4744 A’s problem(a)

    清北学堂2017NOIP冬令营入学测试 P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算 ...

  5. 清北学堂2017NOIP冬令营入学测试

    P4744 A's problem(a) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题,每三天结算一次成绩.参与享优惠 描述 这是一道有背 ...

  6. AC日记——C’s problem(c) TYVJ P4746 (清北学堂2017冬令营入学测试第三题)

    P4746 C’s problem(c)   时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描述 小C是一名数学家,由于它自制力比 ...

  7. 清北学堂2017NOIP冬令营入学测试P4749 C’s problem(c)

    P4746 C's problem(c) 时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 题目描述 小C是一名数学家,由于它自制力比较差 ...

  8. 清北学堂2017NOIP冬令营入学测试P4749 F’s problem(f)

    时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试 描述 这个故事是关于小F的,它有一个怎么样的故事呢. 小F是一个田径爱好者,这天它们城市里正在 ...

  9. 清北学堂2017NOIP冬令营入学测试P4747 D’s problem(d)

    时间: 1000ms / 空间: 655360KiB / Java类名: Main 背景 冬令营入学测试题 描述 题目描述 小D是一名魔法师,它最喜欢干的事就是对批判记者了. 这次记者招待会上,记者对 ...

随机推荐

  1. ubuntu在vim里搜索关键字

    在命令模式下敲斜杆( / )这时在状态栏(也就是屏幕左下脚)就出现了 “/” 然后输入你要查找的关键字敲回车就可以了. 如果你要继续查找此关键字,敲字符 n 就可以继续查找了.

  2. mysql 创建用户与授权

    权限管理 我们都知道,最高权限管理者是 root 用户 , 它拥有着最高的权限操作,包括 : select(查询) ,update(修改) , delete(删除,有事没事都不要用这个,反正也不能给这 ...

  3. cetons 怎么强制卸载 PHP

    查看php版本命令: #php -v 这个命令是删除不干净的 #yum remove php 因为使用这个命令以后再用 #php -v 还是会看到有版本信息的..... 必须强制删除 #rpm -qa ...

  4. Machine Learning No.10: Anomaly detection

    1. Algorithm 2. evaluating an anomaly detection system 3. anomaly detection vs supervised learning 4 ...

  5. (KEILv5)使用matlab绘制从KEIL memory导出的内存数据

    使用matlab绘制从KEIL memory导出的内存数据 如标题,某些时候我们需要分析keil调试过程中的数据,比如从I2S.SPI.I2C或者UART获取到的波形数据,这些数据时数字流,通过逻辑分 ...

  6. C++ 结构体多元素sort排序调用时的写法

    //总结一下,结构体数据排序的快速写法 //以后在遇到需要写的时候,不要迟疑快速写完 struct node { int u, v, w; }a[10000]; //假设该结构体有3个元素 //现在仅 ...

  7. ActiveMQ之发布、订阅使用

    maven依赖 <dependencies> <dependency> <groupId>org.apache.activemq</groupId> & ...

  8. POJ 3071 Football:概率dp

    题目链接:http://poj.org/problem?id=3071 题意: 给定n,有2^n支队伍参加足球赛. 给你所有的p[i][j],表示队伍i打败队伍j的概率. 淘汰赛制.第一轮(1,2)两 ...

  9. MySQL条件判断处理函数_20160925

    MySQL条件判断处理 一.假如我想把salesperson 分成 5组,计算每个销售分组的业绩 首先先将销售分组 SELECT *, CASE WHEN salesperson IN (" ...

  10. unbuntu下安装qq

    由于Wine QQ一直没更新版本导致目前版本报版本过低无法使用,暂时先上UK官网的国际版Wine QQ,虽然功能没那么新,但稳定能用: 下载: 下载地址:http://www.ubuntukylin. ...