Codeforces Round #516 (Div. 2) (A~F)
Posted sovietpower
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #516 (Div. 2) (A~F)相关的知识,希望对你有一定的参考价值。
目录
- A.Make a triangle!
- B.Equations of Mathematical Magic
- C.Oh Those Palindromes
- D.Labyrinth(BFS)
- E.Dwarves,Hats and Extrasensory Abilities(交互 二分)
- D.Labyrinth
- E.Dwarves,Hats and Extrasensory Abilities
A.Make a triangle!
不放了。
B.Equations of Mathematical Magic
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
const int N=1e6+7;
inline int read()
{
int now=0,f=1;register char c=gc();
for(;!isdigit(c);c=='-'&&(f=-1),c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now*f;
}
int main()
{
int T=read();
while(T--)
{
long long a=read(), ans=1;
for(int i=31; i>=0; --i)
if(a>>i&1) ans<<=1ll;
printf("%I64d
",ans);
}
return 0;
}
C.Oh Those Palindromes
sb了很长时间。。
为什么要把很多字符拼起来呢,同种字符放在一起就行了。
Why so? 注意到一个回文串首尾至少是两个相同字符,所以一个出现x次的字符最多可以(以它为首尾)形成x(x-1)/2个回文串,这和单个放一起的上界是一样的。
#include <cstdio>
#include <cctype>
#include <cstring>
#include <algorithm>
#define gc() getchar()
typedef long long LL;
const int N=1e5+5;
inline int read()
{
int now=0;register char c=gc();
for(;!isdigit(c);c=gc());
for(;isdigit(c);now=now*10+c-'0',c=gc());
return now;
}
int tm[N];
char s[N],Ans[N];
int main()
{
int n=read();
scanf("%s",s+1);
std::sort(s+1,s+1+n);
s[n+1]='