链接

这题卡了挺久了 昨天试着用类似dfs的方法直接TLE在第二组 看了下题解,,发现s1,s2的范围是个幌子。。100位最大的s1900 s28100 觉得s1s2太大不敢开二维。。

这样就简单了 类似背包 dp[s1][s2]表示组成s2s2最少的位数 其实就是装进去多少个数字 正好把s1s2装满

把DP部分预处理之后放在外面  不然会超时

  1. #include <iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<stdlib.h>
  5. #include<algorithm>
  6. using namespace std;
  7. #define INF 0xfffffff
  8. int s1,s2;
  9. int dp[][];
  10. int path[],flag;
  11. void dfs(int ss1,int ss2,int u,int v)
  12. {
  13. path[u] = v;
  14. if(flag) return ;
  15. int i;
  16. if(u==&&ss1==&&ss2==)
  17. {
  18. flag = ;
  19. for(i = dp[s1][s2] ; i>=; i--)
  20. printf("%d",path[i]);
  21. puts("");
  22. return ;
  23. }
  24. if(ss1<=||ss2<=)
  25. return ;
  26. u--;
  27. for(i = ; i <= ; i++)
  28. {
  29. if(ss1-i<||ss2-i*i<)
  30. continue;
  31. if(dp[ss1-i][ss2-i*i]+==dp[ss1][ss2])
  32. dfs(ss1-i,ss2-i*i,u,i);
  33. if(flag) break;
  34. }
  35. }
  36. int main()
  37. {
  38. int i,j,g,t;
  39. scanf("%d",&t);
  40. for(i = ; i <= ; i++)
  41. for(j = ; j <= ; j++)
  42. dp[i][j] = INF;
  43. dp[][] = ;
  44. for(i = ; i <= ; i++)
  45. for(j = i ; j <= ; j++)
  46. for(g = i*i ; g <= ; g++)
  47. dp[j][g] = min(dp[j][g],dp[j-i][g-i*i]+);
  48. while(t--)
  49. {
  50. scanf("%d%d",&s1,&s2);
  51. if(s1>||s2>)
  52. {
  53. printf("No solution\n");
  54. continue;
  55. }
  56. flag = ;
  57. if(dp[s1][s2]==INF||dp[s1][s2]>)
  58. {
  59. printf("No solution\n");
  60. }
  61. else
  62. {
  63. for(i =; i <= ; i++)
  64. {
  65. if(s1-i<||s2-i*i<)
  66. continue;
  67. if(dp[s1-i][s2-i*i]+==dp[s1][s2])
  68. dfs(s1-i,s2-i*i,dp[s1][s2],i);
  69. if(flag) break;
  70. }
  71. }
  72. }
  73. return ;
  74. }

URAL1658. Sum of Digits(DP)的更多相关文章

  1. URAL 1658. Sum of Digits(DP)

    题目链接 隔了一年零三个月,重新刷URAL,这题挺麻烦的输出路径.输出路径挺扯的,乱写了写乱改改就A了...我本来想用很靠谱,记录每一条路径的,然后输出最小的,结果Tle,然后我使劲水水又过了一组,发 ...

  2. Hdu3022 Sum of Digits

    Sum of Digits Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  3. HDU 1024 Max Sum Plus Plus --- dp+滚动数组

    HDU 1024 题目大意:给定m和n以及n个数,求n个数的m个连续子系列的最大值,要求子序列不想交. 解题思路:<1>动态规划,定义状态dp[i][j]表示序列前j个数的i段子序列的值, ...

  4. CodeForces 489C Given Length and Sum of Digits... (贪心)

    Given Length and Sum of Digits... 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/F Descr ...

  5. Sum of Digits / Digital Root

    Sum of Digits / Digital Root In this kata, you must create a digital root function. A digital root i ...

  6. ACdreamOJ 1154 Lowbit Sum (数字dp)

    ACdreamOJ 1154 Lowbit Sum (数位dp) ACM 题目地址:pid=1154" target="_blank" style="color ...

  7. Maximum Sum of Digits(CodeForces 1060B)

    Description You are given a positive integer nn. Let S(x) be sum of digits in base 10 representation ...

  8. Codeforces Round #277.5 (Div. 2)C——Given Length and Sum of Digits...

    C. Given Length and Sum of Digits... time limit per test 1 second memory limit per test 256 megabyte ...

  9. CodeForces 1060 B Maximum Sum of Digits

    Maximum Sum of Digits You are given a positive integer n. Let S(x)S(x) be sum of digits in base 10 r ...

随机推荐

  1. java新手笔记26 Frame

    0.Calculater package com.yfs.javase; import java.awt.BorderLayout; import java.awt.Button; import ja ...

  2. XML, XPath, Xslt及解析/Parse

    XML及解析/Parse "Programming with libxml2 is like the thrilling embrace of an exotic stranger.&quo ...

  3. 暑假集训(3)第二弹 -----Jungle Roads(Hdu1301)

    问题梗概:自从上次某个acmer来设计了拉格瑞圣岛的交通路线后,岛上的酋长就相当苦恼,他发现,虽然这些修好的公路便利了岛上的 交通,并且让拉格瑞圣岛的旅游业更加兴旺,甚至他们还收到了一笔不小的国际资金 ...

  4. Poj 1054 The Troublesome Frog / OpenJudge 2812 恼人的青蛙

    1.链接地址: http://poj.org/problem?id=1054 http://bailian.openjudge.cn/practice/2812 2.题目: 总时间限制: 10000m ...

  5. 快速排序算法 Quick sort

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4046189.html 首先随机选择一个轴,并调整数组内各个数字,使得比轴值大的数在轴的右边, ...

  6. Qt-获取主机网络信息之QNetworkAddressEntry

    QNetworkAddressEntry类存储了一个网络接口所支持的一个IP地址,同时还有与之相关的子网掩码和广播地址. 每个网络接口可以包含0个或多个IP地址,这些IP地址可以分别关联一个子网掩码和 ...

  7. apache 工作模式

    apache三种工作模式: prefork(2.4前默认)/worker/event(2.4默认)内容整理来自以下网站http://m.blog.csdn.net/article/details?id ...

  8. JAVA 修改 JSESSIONID

    @Action("sidTest") public void sidTest() { HttpSession session = request.getSession(); Str ...

  9. css文本换行你所不知道的技巧

    前言:这是最近翻译的一篇文章 我在header标签开头忘里边加入一个span标签的时候,有一点小问题.我总是想确保在span标签之前能够换行.明确地讲,在标签前边加入<br> 并没有什么错 ...

  10. php练习1——计算器

    目标:输入两个数,计算两个数的和/差/积/商 程序如下:两个文件jiSuanQi.html和jiSuanQi.php    结果如下: