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 ...
随机推荐
- maven安装和配置
一.下载maven maven下载页 里面有一些版本区别,binary比较小,适合直接在项目中使用,source带了源代码,windows系统下载zip后缀的 apache-maven-3.3.9-b ...
- POJ 2342 Anniversary party(树形dp)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7230 Accepted: 4162 ...
- 2次使用fork避免产生僵尸进程和不去处理SIGCHLD信号
1.如下代码所示 #include <unistd.h> #include <sys/types.h> #include <unistd.h> int main(i ...
- 09 Object
Object 在看 ES6 Object的时候,我发觉ES5 Object 的更新我并不是完全知道. 于是觉得还是看一下. 1. __proto__ 作为一个 半吊子前端开发人员. 居然不知道这个.. ...
- Android Studio中JNI程序的单步调试和日志打印
近日有个算法(检测碰撞)需要用C++实现,目的是IOS和ANDROID中共享同一段程序. 下面说说android调用这段程序过程中遇到的一些事情.(过程中网上搜索了一些相关文章,大部分说的是eclip ...
- 每秒执行一个shell脚本(转载)
上周迁移了一台服务器,发现其中一个项目的数据没有更新,查询原服务器的数据,数据有更新,并找到了rsync服务,从其他服务器传输数据,那么如何找到这台服务器?因为是从远程传输到本地,而且不是很频繁, ...
- 在Heroku部署时,无法加载 css,js,图片资源解决办法
解决方案: 首先查看Gemfile, 确保group :production do 里添加了 gem "rails_12factor", '0.0.2' 然后在本地执行 rails ...
- PHP中的魔术方法:__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep, __wakeup, __toString, __set_state, __clone and __autoload
1.__get.__set 这两个方法是为在类和他们的父类中没有声明的属性而设计的: __get( $property ) 当调用一个未定义的属性时访问此方法: __set( $property, $ ...
- Linux进程间通信(六):共享内存 shmget()、shmat()、shmdt()、shmctl()
下面将讲解进程间通信的另一种方式,使用共享内存. 一.什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存.共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式 ...
- MySQL字段自增长AUTO_INCREMENT的学习笔记
1.创建表时指定AUTO_INCREMENT自增值的初始值(即起始值): CREATE TABLE XXX (ID INT(5) PRIMARY KEY AUTO_INCREMENT) AUTO_IN ...