2015年9月13日NOIP模拟赛

by hzwer    (这是小奇=>


小奇挖矿(explo)

【题目背景】

小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞过喵星系的n个星球。

【问题描述】

星球分为2类:资源型和维修型。

1.资源型:含矿物质量a[i],若选择开采,则得到a[i]*p的金钱,之后钻头损耗k%,即p=p*(1-0.01k)

2.维修型:维护费用b[i],若选择维修,则支付b[i]*p的金钱,之后钻头修复c%,即p=p*(1+0.01c)

(p为钻头当前能力值)

注:维修后钻头的能力值可以超过初始值

请你帮它决策最大化这个收入

【输入格式】

第一行4个整数n,k,c,w。

以下n行,每行2个整数type,x。

type为1则代表其为资源型星球,x为其矿物质含量a[i];

type为2则代表其为维修型星球,x为其维护费用b[i];

【输出格式】

输出一行一个实数(保留两位小数),表示要求的结果。

【样例输入】

5 50 50 10

1 10

1 20

2 10

2 20

1 30

【样例输出】

375.00

【数据范围】

对于30%的数据 n<=100

对于50%的数据 n<=1000,k=100

对于100%的数据 n<=100000,0<=k,c,w,a[i],b[i]<=100

保证答案不超过10^9


贪心

对于飞船 当前决策只对后续有影响 ->倒着贪心就没有后效性了

而剩余耐久度与之后的开采收益成正比

①如果是资源型 就选挖或者不挖

②如果是维修型 就选修或者不修

//更新ans ans是 是倒着得到的钱数表示以前至少弄到多少

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100005
using namespace std;
float n,k,c,m;
int a[maxn],b[maxn];
double ans=;
int main()
{
cin>>n>>k>>c>>m;
k=-0.01*k;c=+0.01*c;
for(int i=;i<=n;++i)
{
scanf("%d%d",&a[i],&b[i]);
}
for(int i=n;i;--i)
{
if(a[i]==)ans=max(ans,ans*k+b[i]);
else ans=max(ans,ans*c-b[i]);
}
printf("%.2lf",ans*w);
return ;
}

小奇的数列(seq)

【题目背景】

小奇总是在数学课上思考奇怪的问题。

【问题描述】

给定一个长度为n的数列,以及m次询问,每次给出三个数l,r和P,询问 (a[l'] + a[l'+1] + ... + a[r']) mod P的最小值。

其中l <= l' <= r' <= r。

即模意义下的区间子串和最小值。

【输入格式】

第一行包含两个正整数n和m,表示数列的长度和询问的个数。
第二行为n个整数,为a[1]..a[n]。
接下来m行,每行三个数l,r和P,代表一次询问。

【输出格式】

对于每次询问,输出一行一个整数表示要求的结果

【样例输入】

4 2

8 15 9 9

1 3 10

1 4 17

【样例输出】

2

1

【数据范围】

对于20%的数据 n<=100,m<=100,p<=200

对于40%的数据 n<=200,m<=1000,p<=500

对于70%的数据 n<=100000,m<=10000,p<=200

对于100%的数据 n<=500000,m<=10000,p<=500,1<=a[i]<=10^9


AC需使用平衡树来寻找最小差值,复杂度为m*p*logp,需要手写treap,splay或替罪羊树等

//set由于常数较大也不资磁

//大于NOIP难度

//详情访问http://hzwer.com/7613.html

对于20%的数据:暴力在区间内枚举子串求和取模,最后得出最小值

优化:

①根据抽屉原理(现在把r-l+1个数字塞入p个箱子,如果r-l+1>p那肯定有个箱子里面的数超过两个,那相同箱子里面的数字相同) 特判输出0

②根据生日悖论(生日悖论:指如果一个房间里有23个或23个以上的人,那么至少有两个人的生日相同的概率要大于50%。这就意味着在一个典型的标准小学班级(30人)中,存在两人生日相同的可能性更高。对于60或者更多的人,这种概率要大于99%),考虑数据随机生成,如果找到两个前缀和相等的直接返回0

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100005
using namespace std;
int n,m;
int a[maxn];
long long sum[maxn];
long long ans;
void query(int l,int r,int p)
{
if(l-r>=p)
{
puts("");
return;
}
else ans=p;
for(int i=l-;i<=r;++i)
{
for(int j=i+;j<=r;++j)
{
if(sum[i]==sum[j])
{
ans=;
break;
}
ans=min(ans,(sum[j]-sum[i])%p);
}
}
printf("%lld",ans);
puts("");
}
int main()
{
cin>>n>>m;
for(int i=;i<=n;++i)
{
scanf("%d",&a[i]);
sum[i]=sum[i-]+a[i];
}
int l,r,p;
for(int i=;i<=m;++i)
{
scanf("%d%d%d",&l,&r,&p);
query(l,r,p);
}
return ;
}

70分暴力代码


小奇回地球(earth)

【题目背景】

开学了,小奇在回地球的路上,遇到了一个棘手的问题。

【问题描述】

简单来说,它要从标号为1的星球到标号为n的星球,某一些星球之间有航线。由于超时空隧道的存在,从一个星球到另一个星球时间可能会倒流,而且,从星球a到b耗费的时间和星球b到a耗费的时间不一定相同。

宇宙法规定:“禁止在出发时间前到达目的地。”

每艘飞船上都有速度调节装置,可以调节飞行的时间。其功能可以使得整次航程中所有两星球间的飞行时间增加或减少相同的整数值。你的任务是帮助它调整速度调节器,找出一条最短时间到达目的地的路径。

【输入格式】

输入文件包含多组数据,第1个数为T,表示数据组数。

对于每组数据,输入第1行为两个正整数n,m,为星球的个数和星球间的路线数。接下来m行,每行三个整数i,j和t,表示由星球i到星球j飞行的时间为t。由i到j最多只会有一条飞行线路。

【输出格式】

输出文件共T行,每组数据输出一行。

如果可以通过调节速度调节器完成任务,则输出一个非负整数,表示由星球1到星球n的最短时间。(注意最短时间要大于或者等于0)。

如果不能由星球1到达星球n,则输出-1。

【样例输入】

1

4 5

1 2 1

1 3 1

2 3 -3

3 1 1

3 4 1

【样例输出】

2

【样例解释】

把速度控制器的值设为1,相当于每个时间值加1,得到的最短路径为1→2→3→4,所需时间为2+(-2)+2=2。

【数据范围】

1,2号测试点,保证所有星球出度不超过1

3,4号测试点,n<=10

5,6号测试点,-100<=t<=100

对于100%的数据T<=10,n<=100,m<=n*(n-1),-100000<=t<=100000

数据随机和构造结合生成


小奇模拟赛9.13 by hzwer的更多相关文章

  1. 2015-9-13 NOIP模拟赛解题报告(by hzwer)

    小奇挖矿 「题目背景」 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值w)的飞船,按既定路线依次飞过喵星系的n个星球. 「问题描述」 星球分为2类:资源型和维修型. 1.资源型:含矿物质量a[i ...

  2. 2015.9.11模拟赛 codevs 4159【hzwer的迷の数列】

    题目描述 Description hzwer找了一个人畜无害的迷の数列…… 现在hzwer希望对这个数列进行一些操作,请你来回答hzwer的问题. 操作一:查询第i个数的大小 操作二:把第i个数的大小 ...

  3. NOIP2016 “西湖边超萌小松鼠” 模拟赛

    总的来说,这套题的难度比较接近近些年来Day1的真实难度,认为非常值得一打 GotoAndPlay 题目大意 询问这个图上是否存在一种跳法,能跳到这个图上的每一个点 题目解析 犯了个低级错误,双向边忘 ...

  4. NOI模拟赛(3.13)Hike (远行)

    Description Mirada生活的城市中有N个小镇,一开始小镇之间没有任何道路连接.随着经济发展,小镇之间陆续建起了一些双向的道路,但是由于经济不太发达,在建设过程中,会保证对于任意两个小镇, ...

  5. NOIP模拟赛(by hzwer) T2 小奇的序列

    [题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个长度为 n 的数列,以及 m 次询问,每次给出三个数 l,r 和 P, 询问 (a[l'] + a[l'+1] + ... + ...

  6. NOIP模拟赛(by hzwer) T3 小奇回地球

    [题目背景] 开学了,小奇在回地球的路上,遇到了一个棘手的问题. [问题描述] 简单来说,它要从标号为 1 的星球到标号为 n 的星球,某一些星球之间有航线. 由于超时空隧道的存在,从一个星球到另一个 ...

  7. NOIP模拟赛(by hzwer) T1 小奇挖矿

    [题目背景] 小奇要开采一些矿物,它驾驶着一台带有钻头(初始能力值 w)的飞船,按既定 路线依次飞过喵星系的 n 个星球. [问题描述] 星球分为 2 类:资源型和维修型. 1. 资源型:含矿物质量 ...

  8. 2.17NOIP模拟赛(by hzwer) T3 小奇回地球

    [题目背景] 开学了,小奇在回地球的路上,遇到了一个棘手的问题. [问题描述] 简单来说,它要从标号为 1 的星球到标号为 n 的星球,某一些星球之间有航线. 由于超时空隧道的存在,从一个星球到另一个 ...

  9. 2.17NOIP模拟赛(by hzwer) T2 小奇的序列

    [题目背景] 小奇总是在数学课上思考奇怪的问题. [问题描述] 给定一个长度为 n 的数列,以及 m 次询问,每次给出三个数 l,r 和 P, 询问 (a[l'] + a[l'+1] + ... + ...

随机推荐

  1. CString string char* char 之间的字符转换(多种方法)

    在写程序的时候,我们经常遇到各种各样的类型转换,比如 char* CString string 之间的互相转换.首先解释下三者的含义. CString 是一种很有用的数据类型.它们很大程度上简化了MF ...

  2. C#制作高仿360安全卫士窗体(四)- 水晶按钮

    项目越来越紧,我也乐此不疲.自从上次C#制作高仿360安全卫士窗体(三)出来之后,就开始有一些人在说为什么还在坚持写这么落后的东西.我想说的是,我是从事企业信息化工作的,所有程序都只对内部使用.所以只 ...

  3. MySQL 主从数据库设置

    1.复制的介绍 MySQL 支持单向.异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器.主服务器将更新写入二进制日志文件,并维护文件的一个索引 以跟踪日志循环.这些日志可 ...

  4. pm2 开机自动运行

    pm2 start app.js -i max -name 可以运行的用户 env PATH=$PATH:/usr/bin pm2 startup -u 可以运行的用户 ubuntu/centos

  5. UVALive - 6952 Cent Savings dp

    题目链接: http://acm.hust.edu.cn/vjudge/problem/116998 Cent Savings Time Limit: 3000MS 问题描述 To host a re ...

  6. Matlab实现movieLens转矩阵

    for mm=1:num_m %电影编号是mm的训练集行号 ff= find(train_vec(:,2)==mm); %train_vec(ff,1) 行号对应的用户编号 count(train_v ...

  7. vsm 的理解

    vsm相对于最原始的sm多了这样一个部分 if(depthcampare <=zInSM) fPercentLit  = 1;//noshadow; else { variance = zzIn ...

  8. 2011斯坦福大学iOS应用开发教程学习笔记(第一课)MVC.and.Introduction.to.Objective-C

    blog.csdn.net/totogo2010/article/details/8205810  目录(?)[-] 第一课名称 MVC and Introduction to Objective-C ...

  9. HDU1070Milk

     Milk Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u   Description ...

  10. 【前端】js转码

    js转码 function urlencode (str) { str = (str + '').toString(); return encodeURIComponent(str).replace( ...