【hiho一下 第145周】智力竞赛
【题目链接】:http://hihocoder.com/contest/hiho145/problem/1
【题意】
【题解】
设f[i][j]表示做对i道题,做错j道题能够到达的最好状态是什么;
这里的状态不是单单是指到了第几关;
因为可能同样到达了第4关,但是你前面的到达第4关的状态更好(也就是说它在第4关的分数更多);
所以f[i][j]用一个pair< int,int>表示->(x,y)
x表示到达了第几关,y表示在这一关获得了多少分;
则f[i][j] = max(f[i-1][j]+s,f[i][j-1]+t);
(即枚举最末端的题最对还是做错)
这里的加s和加t,表示的是那个状态加了s分、t分之后能够到达的新的状态是什么;
(到了新的一关就x++,y=0,不足以到新的一关,就y+s,或+t);
这里的比较直接用二元的比较就好;
即x优先,y次之;
同等状态(i,j)显然二元组更大的更优。
最后在i+j<=m的状态里面找first>=n的元组,i顺序枚举,这样找到第一个输出就可以了;
【Number Of WA】
1T+5WA
【完整代码】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define ps push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%lld",&x)
#define ref(x) scanf("%lf",&x)
#define ms(x,y) memset(x,y,sizeof x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 1000+100;
pii f[N][N];
int n,m,s,t,a[N];
pii xin(pii A,int t)
{
int x = A.fi,y = A.se;
if (x>n) return A;
if (y+t>=a[x])
x++,y = 0;
else
y+=t;
return mp(x,y);
}
pii ma(pii x,pii y)//try x<=y
{
int x0 = x.fi,y0 = x.se,x1 = y.fi,y1 = y.se;
if (x0<x1)
return y;
if (x0>x1)
return x;
if (y0<y1)
return y;
return x;
}
int main()
{
//freopen("F:\\rush.txt","r",stdin);
int T;
rei(T);
while (T--)
{
rep1(i,0,1010)
rep1(j,0,1010)
f[i][j]={1,0};
rei(n),rei(m),rei(s),rei(t);
rep1(i,1,n) rei(a[i]);
rep1(i,0,m)
rep1(j,0,m)
{
//答对
if (i)
{
f[i][j] = ma(f[i][j],xin(f[i-1][j],s));
}
//答错
if (j)
{
f[i][j] = ma(f[i][j],xin(f[i][j-1],t));
}
}
int ans = -1;
rep1(i,0,m)
{
rep1(j,0,m)
if (i+j<=m)
{
if (f[i][j].fi>n)
{
ans = i;
break;
}
}
if (ans!=-1) break;
}
if (ans==-1)
puts("No");
else
printf("%d\n",ans);
}
//printf("\n%.2lf sec \n", (double)clock() / CLOCKS_PER_SEC);
return 0;
}
【hiho一下 第145周】智力竞赛的更多相关文章
- hiho一下 第145周
题目1 : 智力竞赛 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi.小Ho还有被小Hi强拉来的小Z,准备组队参加一个智力竞赛.竞赛采用过关制,共计N个关卡.在第i ...
- [Offer收割]编程练习赛3 - 题目3 : 智力竞赛
智力竞赛 Problem's Link ---------------------------------------------------------------------------- Mea ...
- hihocoder #1285 智力竞赛
传送门 总结: 1.仔细读题 2.仔细分析复杂度 3.不要想当然,乱下结论 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi.小Ho还有被小Hi强拉来的小Z,准备组队 ...
- 圆内,求离圆心最远的整数点 hiho一下第111周 Farthest Point
// 圆内,求离圆心最远的整数点 hiho一下第111周 Farthest Point // 思路:直接暴力绝对T // 先确定x范围,每个x范围内,离圆心最远的点一定是y轴两端的点.枚举x的范围,再 ...
- 【BZOJ5335】[TJOI2018]智力竞赛(二分图匹配)
[BZOJ5335][TJOI2018]智力竞赛(二分图匹配) 题面 BZOJ 洛谷 题解 假装图不是一个DAG想了半天,.发现并不会做. 于是假装图是一个DAG. 那么显然就是二分答案,然后求一个最 ...
- loj#2574. 「TJOI2018」智力竞赛 (路径覆盖)
目录 题目链接 题解 代码 题目链接 loj#2574. 「TJOI2018」智力竞赛 题解 就是求可重路径覆盖之后最大化剩余点的最小权值 二分答案后就是一个可重复路径覆盖 处理出可达点做二分图匹配就 ...
- BZOJ5335:[TJOI2018]智力竞赛——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=5335 小豆报名参加智力竞赛,他带上了n个好朋友作为亲友团一块来参加比赛. 比赛规则如下: 一共有m ...
- hiho一下 第115周:网络流一•Ford-Fulkerson算法 (Edmond-Karp,Dinic,SAP)
来看一道最大流模板水题,借这道题来学习一下最大流的几个算法. 分别用Edmond-Karp,Dinic ,SAP来实现最大流算法. 从运行结过来看明显SAP+当前弧优化+gap优化速度最快. hi ...
- hihocoder-1285 智力竞赛(区间dp)
智力竞赛 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi.小Ho还有被小Hi强拉来的小Z,准备组队参加一个智力竞赛.竞赛采用过关制,共计N个关卡.在第i个关卡中,小 ...
随机推荐
- [HNOI2011]XOR与路径
https://zybuluo.com/mdeditor#1094266 标签(空格分隔): 高斯消元 期望 题面 从 1 号节点开始,以相等的概率,随机选择与当前节点相关联的某条边,并沿这条边走到下 ...
- 云栖社区> > 正文 永久免费SSL安全证书Letsencrypt安装使用方法
./letsencrypt-auto certonly --standalone --email admin@thing.com -d thing.com -d www.thing.com
- IE下元素设置百分比的问题
场景:近两天在做一个控件,该控件是一个tab型的,并且该tab有可能是两个tab标签,也有可能是多个tab标签,为了能够适应这种动态需求, 在设置标签宽度的时候,直接用的最外层容器除以tab的个数,然 ...
- jQueryTools-Scrollable.js
转载一篇例子,学习使用: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
- 注解配置AOP切面编程
1.导入先关jar包 2.编写applicationContext.xml,配置开启注解扫描和切面注解扫描 <?xml version="1.0" encoding=&quo ...
- JS高级——Function原型链
基本概念 1.函数可以通过Function new出来,那么Function可以被称作构造函数,被new出来的函数可以被称为一个对象 2.Function既然是构造函数,那么肯定也有原型,它的原型是一 ...
- [Windows Server 2012] 安装PHP+MySQL方法
★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:PHP+MyS ...
- 顺序表查找及其优化(Java)
顺序表查找(线性查找): private static void Ordersearch(int[] arr,int num) { for (int i = 0; i < arr.length; ...
- CentOS7将firewall切换为iptables防火墙
- CAD类型转换
AcDbEntity *pEnt; AcDbCircle *pcir = AcDbCircle::cast(pEnt); static_cast<AcDbCircle*>(pEnt); p ...