周赛C题 LightOJ 1047 (DP)

C - C

Time Limit:500MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu

Description

The people of Mohammadpur have decided to paint each of their houses red, green, or blue. They‘ve also decided that no two neighboring houses will be painted the same color. The neighbors of house i are houses i-1 and i+1. The first and last houses are not neighbors.

You will be given the information of houses. Each house will contain three integers "R G B" (quotes for clarity only), where R, G and Bare the costs of painting the corresponding house red, green, and blue, respectively. Return the minimal total cost required to perform the work.

Input

Input starts with an integer T (≤ 100), denoting the number of test cases.

Each case begins with a blank line and an integer n (1 ≤ n ≤ 20) denoting the number of houses. Each of the next n lines will contain 3 integers "R G B". These integers will lie in the range [1, 1000].

Output

For each case of input you have to print the case number and the minimal cost.

Sample Input

2

4

13 23 12

77 36 64

44 89 76

31 78 45

3

26 40 83

49 60 57

13 89 99

Sample Output

Case 1: 137

Case 2: 96

Hint

Use simple DP

题解:   有n家人,要把他们的房子涂上颜色,有红、绿、蓝三种颜色,每家涂不同的颜色要花不同的费用,而且相邻两户人家之间的颜色要不同,求最小的总花费费用。

看案例可以从第一行往下模拟,然后就知道了怎么去实现,还是动态规划,求最小的值,有限制条件,每次走到点和上次走的点不在同一列。

代码:

#include<iostream>
#include<cstdio>
using namespace std;
int dp[1005][1005];
int a[1005][1005];
int main()
{
    int T,n,k=1;
    cin>>T;
    while(T--)
    {
        cin>>n;
        for(int i=1; i<=n; i++)
            for(int j=1; j<=3; j++)
                cin>>a[i][j];
        for(int i=1; i<=n; i++)
            for(int j=1; j<=3; j++)
            {
                dp[i][j%3+1]=min(dp[i-1][(j-1)%3+1],dp[i-1][(j+1)%3+1])+a[i][j%3+1];           // 相当于滚筒数组,优化
            }
        int total=min(dp[n][1],min(dp[n][2],dp[n][3]));
        cout<<"Case "<<k++<<": "<<total<<endl;
    }
}
时间: 2024-10-09 17:40:28

周赛C题 LightOJ 1047 (DP)的相关文章

lightOJ 1047 Neighbor House (DP)

题目链接:lightOJ 1047 Neighbor House 题意:有N做房子,每个房子涂3种颜色各有一个花费,相邻的房子颜色不能一样,给N个房子涂颜色,问完成这个任务的最小花费. dp[i][j] 表示涂到第i个房子涂j颜色的最小花费. 状态转移方程:dp[i][k]=min(dp[i][k],dp[i-1][j]+p[i].c[k]); AC代码: #include <stdio.h> #include <string.h> #include <algorithm&g

CSDN 轻松周赛赛题:能否被8整除

轻松周赛赛题:能否被8整除 题目详情 给定一个非负整数,问能否重排它的全部数字,使得重排后的数能被8整除. 输入格式: 多组数据,每组数据是一个非负整数.非负整数的位数不超过10000位. 输出格式 每组数据输出一行,YES或者NO,表示能否重排它的全部数字得到能被8整除的数.注意: 重排可以让0开头. 答题说明 输入样例   610 122 输出样例   YES NO 解释   第一个数可以变为016 , 160 解题:很水的一道题...思路很简单,1000是能被8整除的,所以一千的倍数都能被

2014 HDU多校弟九场I题 不会DP也能水出来的简单DP题

听了ZWK大大的思路,就立马1A了 思路是这样的: 算最小GPA的时候,首先每个科目分配到69分(不足的话直接输出GPA 2),然后FOR循环下来使REMAIN POINT减少,每个科目的上限加到100即可 算最大GPA的时候,首先每个科目分配到60分,然后FOR循环下来使REMAIN POINT减少,每个科目的上限加到85即可,如果还有REMAIN POINT,就FOR循环下来加到100上限即可 不会DP 阿 QAQ 过段时间得好好看DP了  =  = 于是默默的把这题标记为<水题集> //

西安邀请赛J题 状态压缩DP

Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具.Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构.host以及任何一张图,还可以与LDAP结合进行用户验证,同时也能自己增加模板,功能非常强大完善.界面友好.软件 Cacti 的发展是基于让 RRDTool 使用者更方便使用该软件,除了基本的 Snmp 流量

Neighbor House LightOJ - 1047

Neighbor House LightOJ - 1047 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int T,TT,n; 6 int a[22][22],ans[22][22]; 7 int main() 8 { 9 int i,j,k; 10 scanf("%d",&T); 11 for(TT=1;TT<

LightOJ 1047 Neighbor House (DP 数字三角形变形)

1047 - Neighbor House PDF (English) Statistics Forum Time Limit: 0.5 second(s) Memory Limit: 32 MB The people of Mohammadpur have decided to paint each oftheir houses red, green, or blue. They've also decided that no two neighboringhouses will be pai

LightOJ 1047 - Neighbor House 【DP】

题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1047 题意:求(p[i][j])上下相邻的 j 不能相同的数塔的最小和. 解法:看代码! 代码: #include <stdio.h> #include <iostream> #include <string.h> #include <algorithm> #include <bitset> #include <math

XDOJ 1020 ACMer去刷题吧(基础dp)

题目描述 刷题是每个ACMer必由之路,已知某oj上有n个题目,第i个题目小X能做对的概率为Pi(0<=Pi<=1,1<=i<=n) 求小X至少做对k道题的概率 输入 第一行输入一个正整数t,(t<=20),表示有t组测试样例. 第二行输入正整数n,k,(1<=n,k<=1000) 第三行输入n个小数,分别为Pi(1<=i<=n,0<=Pi<=1),表示小X做对第i个题目的概率. 输出 输出小X至少做对k道题的概率,并换行(保留4位小数)

周赛F题 POJ 1458(最长公共子序列)

F - F Time Limit:1000MS     Memory Limit:10000KB     64bit IO Format:%I64d & %I64u Description A subsequence of a given sequence is the given sequence with some elements (possible none) left out. Given a sequence X = < x1, x2, ..., xm > another