h [1,16] hours

all_v=h*12 intervals

n [2,25] lakes

fi inital intervals

fi-di*v v [0,all_v)

题意,做每件事情的最小时间间隔是5分钟,走路是5分钟的整数倍,钓鱼时间必须是5分钟的整数倍。我们不妨把5分钟定义为一个时间单位,不如就临时定义“1慧”为5分钟吧。

有一条道,它旁边有n个湖,依次编号1-n,从湖i到i+1需要花费ti(慧)

john从湖1开始,只能朝编号大的湖走。可以停下选择钓鱼或者继续钓鱼。

一旦在湖i停下钓鱼,可以选择钓k(慧),k时整数。选择湖i的第一慧能钓的鱼是fi,然后每过1慧,钓的鱼少di

问题是怎样钓鱼钓鱼数最多?如果有多种方案,则选择第一个湖钓鱼数最长的;还有多组就第二个湖,第三个湖……

输入第一行是T,代表T组数据

每组数据

第一行是n,代表有n个湖

第二行是h,代表总共john总共有h个小时,也就是h*12(慧)

接下来n行,每行有两个数 fi,di

接下来是(n-1)数,代表ti

输出

输出在每个湖钓鱼的分钟数(注意不是“慧”,我们要换回题目说的了),都好分割

然后输出能钓多少鱼?

预先计算出在湖i钓h慧得鱼数 lake[i][h]

枚举加贪心

枚举在湖i终止所有的钓鱼活动,则走路的时间就已经明确不变了,不妨先剔除。假设剔除后有hui 慧时间

我们可以1慧1慧来钓鱼,选取所有当前所有湖中可获得鱼最多的湖。之后更新这个湖可以钓的鱼的数量。

注意:虽然看起来这样做是在各个湖之中切换来切换去,但是实际上不管我们1慧1慧选择的湖的顺序是怎么样的,我们都可以对应成在第i个湖钓鱼pi慧时间,是并没有违反题目的钓鱼规则。

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
#include<iostream>
using namespace std;
const int max_hui=400;
const int maxn=25;
int n,hui;
int t[maxn+2],f[maxn+2],d[maxn+2],ans_list[maxn+2],st[maxn+2],ans;
int tf[maxn+2],tans_list[maxn+2],tans; void work(int hui,int n)
{
int x;
ans=0;
memset(ans_list,0,sizeof(ans_list));
for (int h=1;h<=hui;++h) {
x=0;
for (int i=1;i<n;++i)
if (f[x]<f[i])
x=i;
ans_list[x]++;
ans+=f[x];
if (f[x]>d[x])
f[x]-=d[x];
else
f[x]=0;
}
} bool is_better(int n)
{
int i;
if (ans>tans) return true;
if (ans<tans) return false;
for (i=0;i<n-1;++i)
if (ans_list[i]!=tans_list[i])
break;
return ans_list[i]>tans_list[i];
} int main()
{
void init();
void backup();
bool first=true;
while (1) {
if (first)
first=false;
else
printf("\n");
init();
if (!n) break;
tans=-1;
memcpy(tf,f,sizeof(f));//backup
for (int end=0;end<n;++end) {
work(hui-st[end],end+1);
if (is_better(end+1)) {
tans=ans;
memcpy(tans_list,ans_list,sizeof(ans_list));
}
memcpy(f,tf,sizeof(f));//restore
}
for (int i=0;i<n-1;++i)
printf("%d, ",tans_list[i]*5);
printf("%d \n",tans_list[n-1]*5);
printf("Number of fish expected: %d \n",tans);
}
return 0;
} void init()
{
scanf("%d",&n);
if (n==0) return;
scanf("%d",&hui);hui*=12;
for (int i=0;i<n;++i)
scanf("%d",f+i);
for (int i=0;i<n;++i)
scanf("%d",d+i);
st[0]=0;
for (int i=0;i<n-1;++i) {
scanf("%d",t+i);
st[i+1]=st[i]+t[i];
}
}

poj1042题解的更多相关文章

  1. 2016 华南师大ACM校赛 SCNUCPC 非官方题解

    我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...

  2. noip2016十连测题解

    以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...

  3. BZOJ-2561-最小生成树 题解(最小割)

    2561: 最小生成树(题解) Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1628  Solved: 786 传送门:http://www.lyd ...

  4. Codeforces Round #353 (Div. 2) ABCDE 题解 python

    Problems     # Name     A Infinite Sequence standard input/output 1 s, 256 MB    x3509 B Restoring P ...

  5. 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解

    题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...

  6. 2016ACM青岛区域赛题解

    A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. poj1399 hoj1037 Direct Visibility 题解 (宽搜)

    http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...

  8. 网络流n题 题解

    学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...

  9. CF100965C题解..

    求方程 \[ \begin{array}\\ \sum_{i=1}^n x_i & \equiv & a_1 \pmod{p} \\ \sum_{i=1}^n x_i^2 & ...

随机推荐

  1. Centos7 使用Docker 部署mssql 2017

    mssql是.NET的标配,一般使用.NET的人基本都用mssql. 以前mssql只能支持windows平台,从微软打出 拥抱开源 的口号开始,mssql的2017 版本,开始支持linux系统. ...

  2. KVM-virsh 创建虚拟网络

    创建网络 创建配置文件 vim /etc/libvirt/qemu/networks/nfsnobody.xml #创建一个名为nfsnobody的虚拟网络 <network> <n ...

  3. 谷歌BBR拥塞算法内核更新

    为什么想到这个呢,算法什么的又不太懂,这是 因为搭建VPN + BBR 与之简直绝配 有的人搭建SSR ,配一个什么锐速,还需要降内核版本, 而且还容易出错,降了之后更加容易出现兼容性问题,所以偶尔看 ...

  4. mybatis配置---> mybatisConfig.xml 配置加接数据源

    mybatisConfig.xml 配置主要作用是连接数据源配置的前提是在完成mybatis的jar包基础之上进行的同时要确保数据用户名和密码是否正确 一:密码写在 mybatisConfig.xml ...

  5. Codeforces Round #340 (Div. 2) E XOR and Favorite Number 莫队板子

    #include<bits/stdc++.h> using namespace std; <<; struct node{ int l,r; int id; }q[N]; in ...

  6. ArcGIS Runtime SDK for Android 加载shp数据,中文乱码问题

    针对ArcGIS10.2版本的解决办法(默认中文编码为OEM): 现有一个图层名称为“图层.shp”,以此为例: 1.拷贝一个cpg文件,修改名称为“图层.cpg”,并用文本打开cpg文件修改编码为“ ...

  7. bootstrap-table.js扩展分页工具栏,增加跳转到xx页

    新项目,准备引用bootstrap-table这个控件来展示页面上的表格,无奈这款控件的分页工具栏没有跳转到xx页的功能,为了适应公司美工(只会出图的美工,却跟我要求这要求那)的蛋疼需求,硬着头皮改了 ...

  8. java使用原生MySQL实现数据的增删改查以及数据库连接池技术

    一.工具类及配置文件准备工作 1.1 引入jar包 使用原生MySQL,只需要用到MySQL连接的jar包,maven引用方式如下: <dependency> <groupId> ...

  9. thinkPHP5.1模型User设计

    创建一个User类,再引入think\Model,让User类继承Model 例: <?php namespace app\index\model; use think\Model; class ...

  10. 如何利用 WPS Office 进行 IIS Log 分析

    找到 IIS Log 打开 Internet Information Service (IIS) Manager 点击左侧 Connections > Sites,在右侧 Sites 列表中定位 ...