A题 Aaronson
http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=718&pid=1001
感觉一开始写的这个不好,太冗余了。
#include <cstdio> int main() { int n,m; int t; while(~scanf("%d",&t)) { while(t--) { scanf("%d%d",&n,&m); ) { printf("%d\n",n); continue; } ) m=; ; ) { <<m))//不小心会写成if,wa。其实直接除就好了,这样反而冗余的一塌糊涂 { n = n-(<<m); sum++; } m--; } printf("%d\n",sum); } } ; }
写这个题解的时候,重新写了一遍
#include <cstdio> #include <algorithm> using namespace std; int main() { int n,m; int t; while(~scanf("%d",&t)) { while(t--) { scanf("%d%d",&n,&m); << ( min(m, ) ); ; while(n) { sum += n / d; n -= n / d * d; d >> ; } printf("%d\n",sum); } } ; }
B题
http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=718&pid=1002
LIS最基础的模板题,题意别读错了就行,它题目描述的第三行是用来解释什么叫做字典序小的序列,它第三行提到的a b序列和上面题干的a b序列无关 2333 我一开始没懂,还以为怎么矛盾了呢。
#include <cstdio> #include <algorithm> using namespace std; +]; const int INF = 0x3f3f3f3f; +]; void show(int n) { ;i<n;i++) printf("dp[%d]=%d\n",i,dp[i]); } int main() { int t; while(~scanf("%d",&t)) { while(t--) { int n; scanf("%d",&n); ;i<n;i++) scanf("%d",&a[i]); ;i<n;i++) dp[i] = INF; ; ;i<n;i++) { *lower_bound(dp,dp+n,a[i]) = a[i]; len = lower_bound(dp,dp+n,a[i]) - dp+; ) printf(" "); printf("%d",len); } printf("\n"); } } ; }