2015ACM/ICPC亚洲区上海站
题意:给你一个二叉树,根节点为1,子节点为父节点的2倍和2倍+1,从根节点开始依次向下走k层,问如何走使得将路径上的数进行加减最终结果得到n。
联想到二进制。
思路和这个差不多吧:http://blog.csdn.net/u013068502/article/details/50094561
#include <set> #include <queue> #include <cstdio> #include <vector> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; #define mem(x,y) memset(x, y, sizeof(x)) #define lson l,m,rt << 1 #define rson m+1,r,rt << 1 | 1 ? a : gcd(b, a % b);} int lcm(int a, int b){return a / gcd(a, b) * b;} int main() { int T; scanf("%d", &T); ; cas <= T; cas++) { ; scanf("%d%d", &n, &k); == ) { n--; flag = ; } LL all = ( << (k + )) - ; LL res = (all - n) >> ; printf("Case #%d:\n", cas); ; i < k; i++) { LL temp = << i; )) printf( : temp); ) printf("%I64d -\n", temp); else printf("%I64d +\n", temp); res >>= ; } } ; }
题意:给你一个字符串,找最近的相同字符
#include <set> #include <cmath> #include <queue> #include <cstdio> #include <vector> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; #define mem(x,y) memset(x, y, sizeof(x)) #define lson l,m,rt << 1 #define rson m+1,r,rt << 1 | 1 ? a : gcd(b, a % b);} int lcm(int a, int b){return a / gcd(a, b) * b;} const int INF = 0x3f3f3f3f; ]; int main() { int T; scanf("%d", &T); getchar(); ; cas <= T; cas++) { scanf("%s", s); int len = strlen(s); int ans = INF; ; i < len; i++) { ; j < len; j++) { if(s[i] == s[j]) { ans = min(ans, abs(i - j)); } } } printf( : ans); } ; }
5583 Kingdom of Black and White
题意:给你一个01字符串,要求最多改变一个字符(即0->1或1->0),使相邻相同字符的平方和最大
漏了考虑,改变中间一个区间之后,两个到三个区间变成相同字符的情况。WA了。
#include <set> #include <cmath> #include <queue> #include <cstdio> #include <vector> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; #define mem(x,y) memset(x, y, sizeof(x)) #define lson l,m,rt << 1 #define rson m+1,r,rt << 1 | 1 ? a : gcd(b, a % b);} int lcm(int a, int b){return a / gcd(a, b) * b;} ; int s[maxn]; LL len[maxn]; int main() { int T; scanf("%d", &T); getchar(); ; cas <= T; cas++) { mem(s, -); char ch; ; while(~scanf("%c", &ch)) { if(ch == '\n') break; s[slen++] = ch - '; } , cur = , cnt = ; while(cur <= slen) { ]) { len[cnt++] = cur - temp; temp = cur; } cur++; } LL ans = ; ; i < cnt; i++) { ans += len[i] * len[i]; } LL rec = ans; ; i < cnt; i++) { ) break; ] == && i != ) { ans = max(ans, rec - len[i - ] * len[i - ] - len[i - ] * len[i - ] - len[i] * len[i] + (len[i - ] + len[i - ] + len[i]) * (len[i - ] + len[i - ] + len[i])); } ]) { ans = max(ans, rec + * (len[i - ] - len[i] + )); } ]) { ans = max(ans, rec + * (len[i] - len[i - ] + )); } } printf("Case #%d: %I64d\n", cas, ans); } ; }
题意:有一只青蛙,它从起点(x,y)出发,每次它会走 LCM(x,y) 步到达点 (x+LCM(x,y),y) 或点 (x,y+LCM(x,y)) ,最终,它会到达点(ex,ey),现给你终点(ex,ey),要你求出它的起点有多少种可能。
#include <set> #include <cmath> #include <queue> #include <cstdio> #include <vector> #include <cstring> #include <algorithm> using namespace std; typedef long long LL; #define mem(x,y) memset(x, y, sizeof(x)) #define lson l,m,rt << 1 #define rson m+1,r,rt << 1 | 1 ? a : gcd(b, a % b);} int lcm(int a, int b){return a / gcd(a, b) * b;} ; int main() { int T, fx, fy; scanf("%d", &T); ; cas <= T; cas++) { scanf("%d%d", &fx, &fy); LL ans = ; ) { int g = gcd(fx, fy); if(fy > fx) swap(fx, fy); ) break; int m1 = fx / (fy + g); int m2 = fy / g; fx = m1 * g; fy = m2 * g; ans++; } printf(); } ; }
2015ACM/ICPC亚洲区上海站的更多相关文章
- HDU-5583-Kingdom of Black and White(2015ACM/ICPC亚洲区上海站-重现赛)
Kingdom of Black and White ...
- (HDU 5558) 2015ACM/ICPC亚洲区合肥站---Alice's Classified Message(后缀数组)
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=5558 Problem Description Alice wants to send a classi ...
- 2015ACM/ICPC亚洲区长春站 L hdu 5538 House Building
House Building Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) ...
- 2015ACM/ICPC亚洲区长春站 J hdu 5536 Chip Factory
Chip Factory Time Limit: 18000/9000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)T ...
- 2015ACM/ICPC亚洲区长春站 H hdu 5534 Partial Tree
Partial Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- 2015ACM/ICPC亚洲区长春站 G hdu 5533 Dancing Stars on Me
Dancing Stars on Me Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 2015ACM/ICPC亚洲区长春站 F hdu 5533 Almost Sorted Array
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- 2015ACM/ICPC亚洲区长春站 E hdu 5531 Rebuild
Rebuild Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total S ...
- 2015ACM/ICPC亚洲区长春站 B hdu 5528 Count a * b
Count a * b Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Tot ...
随机推荐
- Java的发展历程
Java的发展历程充满了传奇色彩. 最初,Java是由Sun公司的一个研究小组开发出来的, 该小组起先的目标是想用软件实现对家用电器进行集成控制的小型控制装置. 开始,准备采用C++,但C++太复杂, ...
- CSS3中的变形处理
在css3中,可以利用transform功能来实现文字或者图像的旋转.缩放.倾斜.移动这四种类型的变形处理. 旋转 旋转功能使用rotate方法参数中加入角度值,方向为顺时针旋转.示例清单如下: &l ...
- C:Wordpress自定义文章类型(图视频)
自定义文章类型,包括: 1:单独的"文章内容模板" 2:单独的"文章列表模板" 3:单独的"控制后台"(文章分类.添加文章) 创建自定义文章 ...
- OC初步 (一)
OC完全兼容C, 代码后缀名一般习惯用 *.m 或 *.mm,按惯例从 "Hello,World!" 开始,我们编写一个 test.mm 文件如下: #import <Fou ...
- Pandas-数据聚合与分组运算
目录 图解"split-apply-combine" 数据的分类split: groupby() 以column进行分组 以index进行分组 分组遍历 数据的应用apply: a ...
- [Math & Algorithm] 拉格朗日乘数法
拉格朗日乘数法(Lagrange Multiplier Method)之前听数学老师授课的时候就是一知半解,现在越发感觉拉格朗日乘数法应用的广泛性,所以特意抽时间学习了麻省理工学院的在线数学课程.新学 ...
- 常用的Firefox浏览器插件、Chrome浏览器插件收藏
[血的教训] 不要去下载“Firefox中国版(谋智网络)”,默认情况下会给你安装好多的莫名其妙的插件,推荐去Firefox官方下载原版. Firefox 原版官方网址: https://www.mo ...
- Linux如何查看文件系统(磁盘使用情况)
查看磁盘剩余空间: df -Th 用法:df [选项]… [文件]… 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统. 长选项必须用的参数在使用短选项时也是必须的. -a, ...
- ReflectionToStringBuilder类
ReflectionToStringBuilder类是用来实现类中的toString()方法的类,它采用Java反射机制(Reflection),通过reflection包中的AccessibleOb ...
- MySQL 视图
一.视图是一种虚拟存在的表,并不在数据库中实际存在.数据来自于视频中查询使用的表,在使用视图时动态生成的. 二.视图的优势: (A) 简单:已经是过滤好的复合条件的结果集 (B) 安全:表的权限不能限 ...