H - Graphics

 

Time Limit:1000MS     Memory Limit:131072KB     64bit IO Format:%lld & %llu

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

第一行输入一个整数$T$,代表有$T$组测试数据。 
每组数据依次输入四个整数$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)的更多相关文章

  1. 深搜(DFS)广搜(BFS)详解

    图的深搜与广搜 一.介绍: p { margin-bottom: 0.25cm; direction: ltr; line-height: 120%; text-align: justify; orp ...

  2. 【算法导论】图的深度优先搜索遍历(DFS)

    关于图的存储在上一篇文章中已经讲述,在这里不在赘述.下面我们介绍图的深度优先搜索遍历(DFS). 深度优先搜索遍历实在访问了顶点vi后,访问vi的一个邻接点vj:访问vj之后,又访问vj的一个邻接点, ...

  3. 深度优先搜索(DFS)与广度优先搜索(BFS)的Java实现

    1.基础部分 在图中实现最基本的操作之一就是搜索从一个指定顶点可以到达哪些顶点,比如从武汉出发的高铁可以到达哪些城市,一些城市可以直达,一些城市不能直达.现在有一份全国高铁模拟图,要从某个城市(顶点) ...

  4. 图的 储存 深度优先(DFS)广度优先(BFS)遍历

    图遍历的概念: 从图中某顶点出发访遍图中每个顶点,且每个顶点仅访问一次,此过程称为图的遍历(Traversing Graph).图的遍历算法是求解图的连通性问题.拓扑排序和求关键路径等算法的基础.图的 ...

  5. 搜索——深度优先搜索(DFS)

    设想我们现在身处一个巨大的迷宫中,我们只能自己想办法走出去,下面是一种看上去很盲目但实际上会很有效的方法. 以当前所在位置为起点,沿着一条路向前走,当碰到岔道口时,选择其中一个岔路前进.如果选择的这个 ...

  6. 7.9模拟赛T1图的遍历(dfs)

    图的遍历(dfs) [题目描述] 对于一个有向图G来说,我们存在一个经典的遍历算法,就是DFS (深度优先搜索遍历).将G以1号点为起点进行DFS后,我们可以 得到G的一棵DFS遍历树T.就此,我们可 ...

  7. 7.6 T1 深度优先搜索(dfs)

    深度优先搜索(dfs) [题目描述] sol:50pts随便写写,就是大众分了,直接n2dpOK,100分要找点规律,需要数学头脑 官方题解 //#include <bits/stdc++.h& ...

  8. 【转】android Graphics(四):canvas变换与操作

    android Graphics(四):canvas变换与操作 分类: 5.andriod开发2014-09-05 15:05 5877人阅读 评论(18) 收藏 举报   目录(?)[+]   前言 ...

  9. LeetCode Subsets II (DFS)

    题意: 给一个集合,有n个可能相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: 看这个就差不多了.LEETCODE SUBSETS (DFS) class Solution { publ ...

随机推荐

  1. 更换windows xp序列号

    ON ERROR RESUME NEXT Dim VOL_PROD_KEY if Wscript.arguments.count<1 then VOL_PROD_KEY=InputBox(&qu ...

  2. 2013年最后的收成:avalon1.0正式发布

    大半年前我就说过,MVVM是前端究极的解决方案,因此之后我大多数时间都在折腾avalon,成立了专门的QQ群与感兴趣的一起讨论.感谢第一批吃螃蟹的人,avalon发展得很快,GITHUB上的贡献人数达 ...

  3. outlook更改邮件存储路径

    由于司邮箱容量磁盘配额很小,没收几封邮件就提示邮箱容量已满请删除不重要的邮件很是烦人,于是乎就想着怎么把邮件存到本地然后自动删除服务器上的邮件不做备份,这样就不会在提示邮箱容量已满了,就不用担心发不出 ...

  4. Python_03-数据类型

    1.1   数据类型 基本数据类型:字符串,整数,浮点数,布尔型 集合类型:列表(list), 元组(tuple), 字典(dictionary或hash) 列表(list)的定义: aList = ...

  5. 2018,学会python 在新公司扎根

    五月份跳槽了,来新公司,是个跟我之前业务完全不同的行业,偏硬件,可是对硬件没有什么概念.而且自己都不知道从哪里下手的感觉.终于明白自己在上家公司已经将人待的生了锈,我们庆幸,也许还是不晚的. 执行学习 ...

  6. PHP GD库

    <?php $file = '12.jpg'; //打开图片 $im = imagecreatefromjpeg($file); //设置水印字体颜色 $color = imagecoloral ...

  7. 除了DFS的空间恒定为宽度*深度之外,其余都是宽度^深度次方

  8. 21-py3 发邮件

    Python3 SMTP发送邮件 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式. p ...

  9. 关于java项目中的.project文件:

    .project是项目文件,项目的结构都在其中定义,比如lib的位置,src的位置,classes的位置

  10. Debian 如何使用测试版更新软件包到最新的版本

    #vim /etc/apt/sources.list 将版本代号替换成 testing 然后更新,应可以安装最新的软件包了.