要你们一直告知学姐第六总统什么时截止。时间范围。

动漫

2054 : 油田

(一个神奇的成效:点击上文字上相应页面)

日子限定:1 Sec 内存限制:32 MiB
付:49 答案是:6

提交 状态 讨论区

日限定:0 Sec 内存限制:0 MiB

问题叙述

交:38 答案是:15

以太平洋底平切开海域,发现了大气之油田!

问题叙述

为好开采这些能源,人们用这些油田从1及n进行编号,

秦时明月一系列动漫讲述了秦灭六皇家,建立中国首单帝国开始,到咸阳深受楚军攻陷了,时间跨度30年,讲述……好了,话不多说,动漫每过同样完美更新一会合,秦时明月洋洋洒洒一般同样管520会师,现在,秦时明月第五总统君临天下结束了,学姐坐等第六总理沧海横流开播,但是学姐不思再每周看一样聚,希望同潮看过瘾,所以,希望你们一直告知学姐第六总统什么时结束。

众人在采矿这些油田时,有三栽开采方式,分别吗方式A,方式B,方式C。

输入

于是不同之法子去开采这些油田所吃的本钱不同,为了防备共振导致的油井坍塌,相邻编号的油田不可知动用相同种植开采方式。

输入数据发生多组,以EOF为了却标志,每组输入一个日期,格式为:yyyy-mm-dd表示第六部开始的辰

我们想你请出开采就n个油田所欲吃的卓绝小基金,并出口开采每个油田所动的法门。

输出

输入

输出第六总统结束之切切实实日期,格式如下yyyy-mm-dd;

事先输入一个整数T(0 < T <= 100),代表有T组测试数据。对于每组数据,第一实施输入一个正整数n(n<1000)代表油田数目,

样例输入

搭下n行,每一样实行包含三独整数。第i(2 <= i <= n+1)行的立即三只数代表正开采编号吧i-1的油田分别采用A,B,C三栽方法开采所吃的财力。

2017-12-23

输出

样例输出

对于每一样组测试样本,先输出样本编号,接下输出一个整数,代表正在开采就n个油田所急需耗费的不过小成本,然后按号从小到特别之一一输出开采每个油田所用的措施。每一样组测试样本的输出占一行。

2027-12-04

样例输入

复制

1
2
4 8 3
2 1 4

题意:给您一个日子,你要输出519*7龙后底日子。

样例输出

复制

Case 1: 4 CB

公海赌船备用网址 1公海赌船备用网址 2

提示

圈在如是寻找题目,但是日子复杂度太特别了,最要命的景会重超时!如下:

公海赌船备用网址 3公海赌船备用网址 4

#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
using namespace std;
#define N 1009
const int inf=0x3f3f3f3f;
int ans,n,tem[N],road[N],cost[N][4]; //tem中 1A ,2B ,3C
void factroad()
{
    int i,j,k;
    for(i=1;i<=n;i++)
        road[i]=tem[i];
    return ;
}

void dfs(int sum,int step)  //step表示当前!
{
    if(step==n+1)
    {
        if(ans>sum)
        {
            ans=sum;factroad();
        }
        return ;
    }
    for(int i=1;i<=3;i++)  //当前step的三种选择
    {
        if(i!=tem[step-1])
        {
            tem[step]=i;
            dfs(sum+cost[step][i],step+1);
        }
    }
}

int main()
{
    int i,j,k,m,T,cas=0;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d",&n);
        //memset(vis,0,sizeof(vis));
        for(i=1;i<=n;i++)
            scanf("%d%d%d",&cost[i][1],&cost[i][2],&cost[i][3]);
        ans=inf;
        dfs(0,1);
        printf("Case %d: %d ",++cas,ans);
        for(i=1;i<=n;i++)
            printf("%c",'A'+road[i]-1);
        printf("\n");
    }

    return 0;
}

View Code

该题正解,如下:

公海赌船备用网址 5公海赌船备用网址 6

#include <iostream>
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<stdlib.h>
using namespace std;
#define N 1009
const int inf=0x3f3f3f3f;
int sum;  //保存最终最小和
int ans[N];  //ans数组记录最优答案路径
int n,c[N][4]; //  c数组中c[i][j]表示第i个油田的第j种开采方式的花费
int dp[N][4];  //dp数组用于动态规划查找最优解;
            //dp[i][j]表示第i个油田采用第j种开采方式时,整个1--i个油田需要的最小开销总和
int pre[N][4];  //pre前缀数组用于保存dp过程中的路径

void fact(int x,int y) //输出路径到ans数组里
{
    sum=dp[x][y];
    while(x>=1)
    {
        ans[x-1]=pre[x][y];
        y=pre[x][y];
        x--;
    }
}
void test(int n){  //简单的调试函数
   /* for(int i=1;i<=n;i++)
        printf("%3d",i);
    printf("\n");*/
    for(int i=1;i<=n;i++)
    {
        printf("i%d: ",i);
        for(int j=1;j<=n;j++)
            printf("%3d",dp[i][j]);
        printf("\n");
    }
}
int main()
{
    int i,j,k,m,T,cas=0;
    scanf("%d",&T);
    while(T--)
    {
        memset(c,0,sizeof(c));  //这里很重要,C++里数组不赋初值!在下面程序中会访问到c[n+1][]数组里的数
        scanf("%d",&n);
        //memset(vis,0,sizeof(vis));
        for(i=1;i<=n;i++)
            scanf("%d%d%d",&c[i][1],&c[i][2],&c[i][3]);
        memset(dp,0,sizeof(dp));  //dp[0][]数组里的数会用到

        for(i=1;i<=n+1;i++)
        {
            for(j=1;j<=3;j++)  //
            {
                if(j==1)
                {
                    dp[i][j]=c[i][j]+min(dp[i-1][2],dp[i-1][3]);
                    if(dp[i-1][2]>dp[i-1][3])  //记录路径,这个没法同上一步用min()
                        pre[i][j]=3;      //这里歪打正着了,存在相等时要选择编号小的记录入路径,不然会出错
                    else
                        pre[i][j]=2;

                }
                else if(j==2)
                {
                    dp[i][j]=c[i][j]+min(dp[i-1][1],dp[i-1][3]);
                    if(dp[i-1][1]>dp[i-1][3])
                        pre[i][j]=3;
                    else
                        pre[i][j]=1;
                }
                else
                {
                    dp[i][j]=c[i][j]+min(dp[i-1][1],dp[i-1][2]);
                    if(dp[i-1][1]>dp[i-1][2])
                        pre[i][j]=2;
                    else
                        pre[i][j]=1;
                }
            }
        }

        int minn=min(dp[n+1][1],min(dp[n+1][2],dp[n+1][3])); //找到最小值
        if(minn==dp[n+1][1])
            fact(n+1,1);
        else if(minn==dp[n+1][2])
            fact(n+1,2);
        else
            fact(n+1,3);
        printf("Case %d: %d ",++cas,sum);
        for(i=1;i<=n;i++)
            printf("%c",ans[i]+'A'-1);
        printf("\n");
      //  test(n);
    }

    return 0;
}

View Code

 

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 
 5 int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}};
 6 
 7 int Cheak(int year)///判断是否为闰年
 8 {
 9     if(((year%4==0)&&(year%100!=0))||year%400==0)
10     {
11         return 1;
12     }
13     else
14         return 0;
15 }
16 
17 int main()
18 {
19     int year,month,day,needday,t;
20     while(~scanf("%d-%d-%d",&year,&month,&day))
21     {
22         needday=519*7;
23         t=Cheak(year);
24         while(needday!=0)
25         {
26             day++;
27             needday--;
28             if(day>a[t][month])
29             {
30                 day=1;
31                 month++;
32             }
33             if(month>12)
34             {
35                 month=1;
36                 year++;
37                 t=Cheak(year);
38             }
39         }
40         printf("%04d-%02d-%02d\n",year,month,day);///按格式输出
41     }
42     return 0;
43 }

View Code

PS:基础不扎实,加上以前开这种日期类的修来心理阴影了,一开始写竟然错了区区次于。

函数

时光范围:0 Sec 内存限制:0 MiB

提交:578 答案是:171

问题叙述

为出x,求函数对应之y值。

x*x, x > 0

y = { 1,   x = 0   }

-x,  x < 0

输入

第一尽一个测试样例数T(
T<=100)接下去T行每行一个x

输出

出口每个输入x对应的y

样例输入

 1 2

样例输出

4

 

公海赌船备用网址 7公海赌船备用网址 8

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 
 5 int main()
 6 {
 7     int T,x;
 8     scanf("%d",&T);
 9     while(T--)
10     {
11         scanf("%d",&x);
12         if(x>0)
13             printf("%d\n",x*x);
14         else if(x<0)
15             printf("%d\n",-x);
16         else
17             printf("1\n");
18     }
19     return 0;
20 }

View Code

PS:细心就OK

次小次大值

Progress Bar

时间范围:0 Sec 内存限制:0 MiB

付出:292 答案是:40

问题叙述

小A:小B你见面歌唱小星星么;

小B:一扭一闪光晶晶,很简短的了;

小A:那您见面寻找一个数列的无比特别无比小值么?

小B:当然矣,很简短了。我还会招来赖稍值次大值呢?

小A:次小次大值?

小B:次小值是比最好小值大,除去最小价剩下的累排的极度小价。次大值同理。但是如果没有不好稍价,次小值则也极小价加相同,同理如果没有不好大值,次大值则极端深价值减一;

小A:…

输入

输入在第一执于来一个正整数n(0<n<100)。第二行被出n个整数(均属int)(迷茫的小A提醒你,这是个多实例哟)

输出

出口这个数列的次小值和浅大值(中间空格隔开,输出占一行)

样例输入

5 1 2 3 4 5

样例输出

2 4

公海赌船备用网址 9公海赌船备用网址 10

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 #define inf 0x3f3f3f3f
 5 int main()
 6 {
 7     int n,Fmax,Fmin,Smax,Smin,x;
 8     while(~scanf("%d",&n))
 9     {
10         Fmax=Smax=-inf;
11         Fmin=Smin=inf;
12         while(n--)
13         {
14             scanf("%d",&x);
15             if(x>Fmax)
16             {
17                 Smax=Fmax;
18                 Fmax=x;
19             }
20             else if(x>Smax&&x!=Fmax)
21             {
22                 Smax=x;
23             }
24             if(x<Fmin)
25             {
26                 Smin=Fmin;
27                 Fmin=x;
28             }
29             else if(x<Smin&&x!=Fmin)
30             {
31                 Smin=x;
32             }
33         }
34         printf("%d %d\n",Smin!=inf ? Smin : Fmin+1,Smax!=-inf ? Smax : Fmax-1);
35     }
36     return 0;
37 }

View Code

666

Progress Bar

日限制:1 Sec 内存限制:0 MiB

付出:303 答案是:243

题材叙述

今犹说666,那即便形容单跟6有关的书写吧!请输出六词”I’m
gonna WIN!”(输出不带引号,每句占一行)

输入

输出

I’m gonna WIN!

I’m gonna WIN!

I’m gonna WIN!

I’m gonna WIN!

I’m gonna WIN!

I’m gonna WIN!

公海赌船备用网址 11公海赌船备用网址 12

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 int main()
 5 {
 6     int n=6;
 7     while(n--)
 8     {
 9         printf("I'm gonna WIN!\n");
10     }
11     return 0;
12 }

View Code

圆锥

Progress Bar

日子限制:0 Sec 内存限制:0 MiB

交由:56 答案是:23

题材叙述

叫闹圆锥的外部积S,请而要来该圆锥最深之体积V是稍微。

乃也许会见就此到这些公式:

表面积S = π*R^2 +
π*R*L (π为圆周率,R为底面半径,L为母线长)

体积V = 1/3 * s * h
(s为底面积,h为高)

高H = sqrt(L^2 –
R^2)(L为母线长,R为底面半径)

圆周率π =
acos(-1) 

输入

输入数据发生差不多组并因EOF为最后,每组一个正要整数表示圆锥的标积S(1
<= S <= 10^9)。

输出

于每组输入,输出一个实数,表示该圆锥的绝老体积,输出保留6各类小数。

样例输入

2

样例输出

0.188063

公海赌船备用网址 13公海赌船备用网址 14

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 #define PI acos(-1)
 5 int main()
 6 {
 7    double s;
 8    while(~scanf("%lf",&s))
 9    {
10        printf("%lf\n",sqrt((s*s*s)/(8*PI))/3);
11    }
12     return 0;
13 }

View Code

 

自上而下

Progress Bar

时间限制:0 Sec 内存限制:0 MiB

交付:110 答案是:30

 

题材叙述

咱们写文字,是自从错误到右手横在形容。那么现在深受你从左到右竖在形容,你是不是能写出来为?

输入

输入在率先实践让闹一个正整数N(<100),是每一样排的字符数。第二尽给出一个长不超越1000的非空字符串,以回车结束(多实例测试)。

输出

按照问题要求,将字符数N行竖在输出。

样例输入

4

This is a test case

样例输出

T asa

hi ts

ist e

s ec

公海赌船备用网址 15公海赌船备用网址 16

 1 #include <stdio.h>
 2 #include <string.h>
 3 #include <math.h>
 4 
 5 char a[2000];
 6 
 7 int main()
 8 {
 9     int n,m,i,j,idex,len;
10     while(~scanf("%d",&n))
11     {
12         getchar();
13         memset(a,'\0',sizeof(a));
14         gets(a);
15         len=strlen(a);
16         for(i=0;i<n;i++)
17         {
18             for(j=i;j<len;j+=n)
19             {
20                 printf("%c",a[j]);
21             }
22             printf("\n");
23         }
24     }
25     return 0;
26 }

View Code

 

游戏

时间限制:0 Sec 内存限制:0 MiB

付给:186 答案是:40

题材叙述

产生一些良有意思之嬉戏,比如大富翁,现在咱们来简化这玩。

地图及出n个格子,编号1-n,一各大富翁从平号格子顺序为后运动,一直倒至n号格子。

大富翁公海赌船备用网址有同样笔画初始财富,每个每个格子对应一个整数A[i],如果A[i]
> 0,大富翁走及这格子能够获取A[i]美元,如果A[i] <
0,走及是格子需要花|A[i]|美元,

只要大富翁的剩余的钱小于0,就无法持续提高了。问大富翁最少需要出些许起财富,才能够好全套旅程。

譬如说:n =
5,{1,-2,-1,3,4}
最少要2美元起财富,才能够起1如泣如诉活动及5如泣如诉格子。途中的财物变化如下3 1 0 3
7。

输入

输入有多组数,每组数据先输入一个正整数n(1<=n<=50000),表示格子数量,接下去输入n个整数,表示每个格子的数值A[i](-1000000000
<= A[i] <= 1000000000)。

输出

出口1个数,对许于1移动至n最少用多少起财富。

样例输入

5 1 -2 -1 3 4

样例输出

2

公海赌船备用网址 17公海赌船备用网址 18

 1 #include <stdio.h>
 2 #define ll long long
 3 
 4 int main()
 5 {
 6     int n;
 7     ll x,ans,sum;
 8     while(~scanf("%d",&n))
 9     {
10         ans=0;
11         sum=0;
12         while(n--)
13         {
14             scanf("%lld",&x);
15             sum+=x;
16             ans=ans<sum ? ans :sum;
17         }
18         if(ans>=0)
19             printf("0\n");
20         else
21             printf("%lld\n",-ans);
22     }
23     return 0;
24 }

View Code

师院地图

时光限定:0 Sec 内存限制:0 MiB

授:35 答案是:8

题目叙述

师院是一个蓬勃发展欣欣向荣的校。我们明白,师院里生为数不少教学楼,也来部分修中之初打。比如ABCD区教学楼,

 

英语楼,特教楼,7号楼,智博楼等等等等。但是也,建筑有部分无极端好之地方,某些教学楼布局不了解名称或很绕等等一样多级缺点。于

是乎,总有有萌(chun)新迷路或者绕远路。实际上也,师院里的重重教学楼其实是内部联通的,比如你当C区教学楼,你得一直由楼内

过到达ABD任意一个区。注意,在地图上能够越过的教学楼只能是与当前教学楼上下左右季个趋势相邻一格之教学楼。那么问题来了,假如被

君同一契合学校的地图,来判定从即区域是否只通过教学楼抵达就目的区域吧。

输入

首先履行一个T,代表测试样例数。(T<=10)

每个测试第一实践一个n,代表师院地图的大小。(n<=7)

连下是n行字符串,每行字符串有n个字符,其中特别小写字母代表教学楼,‘.’代表空地。

最终一实践输入包含两只字符并因此空格隔开,分别吗s和t,代表初始所在教学楼和目的教学楼(保证地图中有教学楼名称不同)

输出

若会直接从教学楼内抵达(不经过空地),输出YES!,否则输出NO!,输出占一行

样例输入

2

2

AB

CD

C B

2

.B

C.

C B

样例输出

YES!

NO!

公海赌船备用网址 19公海赌船备用网址 20

 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 char Map[10][10],s[23],t[23];
 5 
 6 int ans,dis[4][2]={{1,0},{0,1},{-1,0},{0,-1}}, vis[10][10];
 7 
 8 void dfs(int x,int y,int n)
 9 {
10     int i;
11     vis[x][y]=1;
12     if(Map[x][y]==t[0])
13     {
14         ans=1;
15     }
16     for(i=0;i<4;i++)
17     {
18         int nx=x+dis[i][0];
19         int ny=y+dis[i][1];
20         if(nx>=0&&nx<n&&ny>=0&&ny<n&&!vis[nx][ny]&&Map[nx][ny]!='.')
21         {
22             dfs(nx,ny,n);
23         }
24     }
25 }
26 
27 int main()
28 {
29     int T,n,i,j;
30     scanf("%d",&T);
31     while(T--)
32     {
33         scanf("%d",&n);
34         memset(vis,0,sizeof(vis));
35         memset(Map,'\0',sizeof(Map));
36         ans=0;
37         for(i=0;i<n;i++)
38         {
39             scanf("%s",Map[i]);
40         }
41         getchar();
42         scanf("%s %s",s,t);
43         for(i=0;i<n;i++)
44         {
45             for(j=0;j<n;j++)
46             {
47                 if(Map[i][j]==s[0])
48                 {
49                     dfs(i,j,n);
50                 }
51             }
52         }
53         if(ans)
54             printf("YES!\n");
55         else
56             printf("NO!\n");
57     }
58     return 0;
59 }

View Code

哑铃

日子范围:0 Sec 内存限制:0 MiB

交给:215 答案是:79

问题叙述

高等学校,不要遗忘锻炼身体,健康之人不但被你学习游刃有余,也会叫你再产生魅力。

而今,打印一个哑铃吧,哑铃的两岸是边长为n(n为奇数)的正方形,中间是长为n的铁棒(铁棒在刚刚中间),具体格式看样例说明。

输入

输入有差不多组数据,已EOF为竣工标志,每组数据包含一个正整数n(n为奇数)(n<=20)

 

输出

比如要求,打印出哑铃

http://acm.hi-54.com/problem.php?pid=2084

公海赌船备用网址 21公海赌船备用网址 22

 1 #include <stdio.h>
 2 
 3 int main()
 4 {
 5     int i,j,m,n;
 6     while(scanf("%d",&n)!=EOF)
 7     {
 8         for(i=1; i<=n; i++)
 9         {
10             if(i==1||i==n)
11             {
12                 for(j=1; j<=n; j++)
13                     printf("*");
14                 for(j=1; j<=n; j++)
15                     printf(" ");
16                 for(j=1; j<=n; j++)
17                     printf("*");
18             }
19             else
20             {
21                 for(j=1; j<=n; j++)
22                 {
23                     if(j==1||j==n)
24                         printf("*");
25                     else
26                         printf(" ");
27                 }
28                 if(i==(n/2)+1)
29                 {
30                     for(j=1; j<=n; j++)
31                         printf("*");
32                 }
33                 else
34                 {
35                     for(j=1; j<=n; j++)
36                         printf(" ");
37                 }
38                 for(j=1; j<=n; j++)
39                 {
40                     if(j==1||j==n)
41                         printf("*");
42                     else
43                         printf(" ");
44                 }
45 
46             }
47             printf("\n");
48         }
49     }
50     return 0;
51 }

View Code

 

 

相关文章