• UVA10306


     1 /*题意 
     2 共有 T 组测试
     3 输入N ,S,表示有n种物品,
     4 接下来N行
     5 输入x,y  。每种物品有x, y两个价值,并且可以有无限多个。
     6 使得(x1+x2+....)^2 + (y1+y2+....)^2 = s ^ 2。
     7 输出最少要多少个物品,如果不可能则输出not possible
     8 例如:
     9 1
    10 3 5
    11 3 0
    12 0 4
    13 5 5 
    14 答案是2,(3 0 )和(4 0) 这2种。(3+0)^2+(4+0)^2=5^2
    15 
    16 解答:
    17 设  j = x1+ x2+... , k= y1+y2+... 
    18 dp[j][k] 表示当前状态需要多少个 。 
    19 辣么 dp[j][k]=min(dp[j][k],dp[j-Wi][k-W2i]+1);
    20 
    21 
    22 // 感谢学长们的帮助,愿我能做的越来越好~ 
    23 */
    24 
    25 #include<cstdio>
    26 #include<cstring>
    27 #include<algorithm>
    28 #define INF 1000005
    29 using namespace std;
    30 int w[50],w2[50];
    31 int dp[305][305];
    32 int main()
    33 {
    34     int t,n,s;
    35     scanf("%d",&t);
    36     while(t--)
    37     {
    38         scanf("%d%d",&n,&s);
    39         for(int i=0;i<n;i++)
    40             scanf("%d%d",&w[i],&w2[i]);
    41         for(int i=0;i<=s;i++)
    42             for(int j=0;j<=s;j++)
    43                 dp[i][j]=INF;        
    44         dp[0][0]=0;
    45         for(int i=0;i<n;i++)
    46         {
    47             for(int j=w[i];j<=s;j++)
    48             {
    49                 for(int k=w2[i];k<=s;k++)
    50                 {
    51                     if(dp[j-w[i]][k-w2[i]]!=INF)
    52                     dp[j][k]=min(dp[j][k],dp[j-w[i]][k-w2[i]]+1);
    53                 }
    54             }
    55         }
    56         int ans=INF;
    57         for(int i=0;i<=s;i++)
    58             for(int j=0;j<=s;j++)  // 每个状态都找一遍,找到满足条件且用的最少的 
    59                 if( (i*i+j*j==s*s) && dp[i][j]!=INF )
    60                     ans=(dp[i][j]<ans) ? dp[i][j]:ans;
    61         if(ans!=INF) printf("%d
    ",ans);
    62         else printf("not possible
    ");
    63     }
    64     return 0;
    65 }
    66 
    //希望自己能再找出另一种写法> <
  • 相关阅读:
    R语言 dbWriteTable 写入数据库 为空和乱码问题
    data.table进阶
    简述ODS,和数据仓库做简单的比较
    深入ff and ffbase
    R语言操作mysql上亿数据量(ff包ffbase包和ETLUtils包)
    基于mondrain 的原理纠正特殊指标值
    基于mondrian聚合表的R计算olap开发
    dplyr快速入门
    R中的data.table 快速上手入门
    删除pentaho用户和用户文件夹
  • 原文地址:https://www.cnblogs.com/ember/p/4883808.html
Copyright © 2020-2023  润新知