H - Graphics(dfs)
Description
Ocean最近迷上了图形学,整天就在电脑上写程序画呀画......
这天Ocean想画一个二维平面下的圆,
但他的电脑出了一点莫名其妙的问题。
假设Ocean只能用程序实现$45$度圆弧、$90$度圆弧、$180$度圆弧,而且程序耗时分别是$a、b、c$。
如果Ocean连续画圆心角相同的圆弧,那么程序执行时间将会是上一次的$2$倍。
比如说:
第一次Ocean画圆心角为$45$度的圆弧耗时为$a$。
第二次Ocean还是画圆心角为$45$度的圆弧,耗时为$2 * a$。
第三次Ocean还是画圆心角为$45$度的圆弧,耗时为$4 * a$。
......
如果Ocean下次画圆心角不同的圆弧,那么程序执行将会额外增加一定的时间$d$。
比如说:
Ocean上一次画$45$度的圆弧,这一次画$90$度圆弧,程序执行时将会额外增加时间$d$。
Ocean上一次画$90$度的圆弧,这一次画$180$度圆弧,程序执行时将会额外增加时间$d$。
......

马上就要图形学课设了,Ocean需要用最短的程序执行时间来完成这个圆,请你帮帮他吧。
PS:任意两个圆弧不能重复覆盖,而且所有圆弧的弧长是相等的。
C++输入输出务必使用scanf 和 printf。
Input
每组数据依次输入四个整数$a,b,c,d,$分别代表上面提到的信息。
注:$1 <= T <= 200000, 1 <= a, b, c, d <= 1000000。$
Output
Sample Input
2
1 1 1 2
1 2 4 1
Sample Output
3
10
Hint
对第二组测试数据,最优方案如下:
先画一个$90$度圆弧,第二次画$180$度圆弧,最后一次画$90$度圆弧。
总耗时$2 + 1 + 4 + 1 + 2 = 10。$
这道题我使用暴力解的,原来还可以用深搜的方法来解
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int INF=0x3f3f3f3f;
int a,b,c,d,ans;
int angle[]={,,};
int cost[];
void dfs(int x,int y,int id,int cnt)
{
int sum,time;
for(int i=;i<;i++)
{
sum=x+angle[i];
if(sum==)
{
if(i==id)
time=y+cost[i]*cnt*;
else
time=y+cost[i]+d;
ans=min(ans,time);
}
else if(sum<)
{
if(i==id)
dfs(sum,y+cost[i]*cnt*,i,cnt*);
else
dfs(sum,y+cost[i]+d,i,);
}
}
}
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&a,&b,&c,&d);
cost[]=a; cost[]=b; cost[]=c;
ans=INF;
for(int i=;i<;i++)
dfs(angle[i],cost[i],i,);
printf("%d\n",ans);
}
return ;
}
H - Graphics(dfs)的更多相关文章
- 深搜(DFS)广搜(BFS)详解
图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...
- 【算法导论】图的深度优先搜索遍历(DFS)
关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ...
- 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现
1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...
- 图的 储存 深度优先(DFS)广度优先(BFS)遍历
图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...
- 搜索——深度优先搜索(DFS)
设想我们现在身处一个巨大的迷宫中,我们只能自己想办法走出去,下面是一种看上去很盲目但实际上会很有效的方法. 以当前所在位置为起点,沿着一条路向前走,当碰到岔道口时,选择其中一个岔路前进.如果选择的这个 ...
- 7.9模拟赛T1图的遍历(dfs)
图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...
- 7.6 T1 深度优先搜索(dfs)
深度优先搜索(dfs) [题目描述] sol:50pts随便写写,就是大众分了,直接n2dpOK,100分要找点规律,需要数学头脑 官方题解 //#include <bits/stdc++.h& ...
- 【转】android Graphics(四):canvas变换与操作
android Graphics(四):canvas变换与操作 分类: 5.andriod开发2014-09-05 15:05 5877人阅读 评论(18) 收藏 举报 目录(?)[+] 前言 ...
- LeetCode Subsets II (DFS)
题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...
随机推荐
- 32.使用来MethodFilterInterceptor灵活拦截
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 步骤一.建立MethodAction,代码如下: package com.a ...
- less gradient-vertical 方法的实现
// Vertical gradient using CSS where possible, and base64-encoded SVG for IE9 (enables use of this i ...
- C#泛型序列化困境
[C#泛型序列化困境] 问题的起因是这样,有一个需求,将JsonArray转化为List,JsonArray中的元素均是string,此string可被转化为int.float.或维持string.我 ...
- ADT下载地址整理(转)
转自: http://blog.csdn.net/xqf222/article/details/9821971 参考下面文章 http://developer.android.com/tools/sd ...
- 通过@Configuratin配置Bean
Spring的依赖注入可以基于xml配置,也可以基于注解配置,还可以基于java类配置. 普通的bean类,只要标注了@Configuration注解,就可以为Spring容器提供Bean定义的信息. ...
- 格式化程序尝试对消息反序列化时引发异常: 尝试对参数 http://tempuri.org/ 进行反序列化时出错: GetLzdtArticleResult。InnerException 消息是“反序列化对象 属于类型 lzdt.DTO.Dtolzdt[] 时出现错误。读取 XML 数据时,超出最大
当遇到这个错误的时候郁闷了好长时间报错是字符串长度过大可是修改了MaxStringContentLength”属性的值却不起作用最后才发现还是因为配置文件配置的问题在服务端 格式化程序尝试对消息反序列 ...
- cakephp执行原生sql语句
$sql = 'select sum(amount) as amount from option_capital where status = 2 and amount > 0 and user ...
- 拒绝枯燥,有意思的 Loading 页面动效设计
互联网时代,网络“提速”日益频繁,人们打开Web或软件的速度越来越快,一般页面缓冲和加载地过程也是几不可查.然而,在某些情况下,例如软件急需加载大量页面,首页急需加载大量内容,用户下载文件过大,甚至是 ...
- 修改RocketMQ的NameServer端口
---问题--- 有同事提出各个问题:如何修改RocketMQ的NameServer端口号?(默认:9876) ---结论--- 调查并验证之后,结论及过程如下: 验证版本:rocketmq-all- ...
- 一次清理Hbase的oldWALs的过程
HBase版本:1.3.1 Hadoop版本:2.7.1 Zookeeper版本:3.4.6 --------------------------------- 检查线上业务系统的磁盘空间, 发现HD ...