[topcoder]SRM 633 DIV 2
第一题,http://community.topcoder.com/stat?c=problem_statement&pm=13462&rd=16076
模拟就可以了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | #include <vector> #include <algorithm> using namespace std; class Target { public : vector <string> draw( int n) { vector<string> result(n, string(n, ' ' )); int x = 0; int y = 0; while (n >= 1) { for ( int i = 0; i < n; i++) { result[x + i][y] = '#' ; result[x][y + i] = '#' ; result[x + n - 1][y + i] = '#' ; result[x + i][y + n - 1] = '#' ; } x += 2; y += 2; n -= 4; } return result; } }; |
第二题,想了很久。最后发现用三角形的A+B>=C,一个一个推,可以推出N条边所组成的多边形(开口)的距离范围。http://apps.topcoder.com/wiki/display/tc/SRM+633#Jumping
有详细的图示。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <vector> #include <algorithm> #include <string> #include <algorithm> using namespace std; class Jumping { public : string ableToGet( int x, int y, vector < int > jumpLengths) { double d = sqrt (1.0 * x * x + 1.0 * y * y); sort(jumpLengths.begin(), jumpLengths.end()); double low = jumpLengths[0]; double high = jumpLengths[0]; for ( int i = 1; i < jumpLengths.size(); i++) { low = max(0.0, jumpLengths[i] - high); high = high + jumpLengths[i]; } if (d >= low && d <= high) { return "Able" ; } else { return "not able" ; } } }; |
第三题,没做。后来看题解,就是用LCD和GCD的限制,得到x*y,然后穷举搜索。用DFS。
标签:
topcoder
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 个人数据保全计划:从印象笔记迁移到joplin
· Vue3.5常用特性整理
· 重拾 SSH:从基础到安全加固
· 为什么UNIX使用init进程启动其他进程?