C. Neko does Maths

题意

给 \(a,b\) ,求一个最小的 \(k\) 使得 \(\text{lcm}(a+k,b+k)\) 最小。

\(a,b\le 10^9\)

题解

\(\gcd (a+k,b+k) = \gcd(b-a,a+k)\) 。

只需枚举 \(b-a\) 的因数作为 \(\gcd\) ,容易算出最小的 \(k\) ,然后更新答案即可。

code

#include<cstdio>
long long mn=1ll<<60;
int a,b,k;
inline int gcd(int x, int y) {
return y?gcd(y,x%y):x;
}
void solve(int x)
{
int y=((a-1)/x+1)*x-a;
long long tmp=1ll*(a+y)*(b+y)/gcd(a+y,b+y);
if(tmp<mn) mn=tmp,k=y;
}
int main()
{
scanf("%d%d",&a,&b);
if(a>b) a^=b^=a^=b;
const int c=b-a;
for(int i=1;i*i<=c;++i)
if(c%i==0)
{
solve(i);
if(i*i!=c) solve(c/i);
}
printf("%d",k);
}

D. Neko and Aki's Prank

题意

给 \(n\) ,将长度为 \(2n\) 的合法括号序列放到 \(\text{trie}\) 里,求 \(\text{trie}\) 树的最大匹配,对 \(10^9+7\) 取模。

\(n\le 1000\)

题解

可以考虑直接 dp 最大匹配,但这样会涉及取 \(\max\) 操作,显然是不行的。

我们考虑贪心匹配,每次把第 \(2n-1\) 层的点全部向第 \(2n\) 点匹配,然后第 \(2n-3\) 层的点全部向第 \(2n-2\) 层的点匹配。以此类推。这样答案就为深度为奇数的点的个数。

设 \(f[i][j]\) 为深度为 \(i\) ,有 \(j\) 个左括号的点的个数。注意右括号个数始终不能超过左括号个数,左括号个数不能 \(>n\) 。转移显然。

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=2005,Mod=1e9+7;
int f[N][N];
int main()
{
int n,ans=0;
scanf("%d",&n),n<<=1;
f[0][0]=1;
for(int i=1;i<=n;++i)
for(int j=0;j<=i;++j) // ( : j
{
if(j>n/2) continue;
int k=i-j; // ) : k
if(j>=1&&j-1>=k) f[i][j]=(f[i][j]+f[i-1][j-1])%Mod;
if(k>=1&&j>k-1) f[i][j]=(f[i][j]+f[i-1][j])%Mod;
ans=(ans+(i%2==1)*f[i][j])%Mod;
}
printf("%d",ans);
}

最新文章

  1. jQuery源码解读 - 数据缓存系统:jQuery.data
  2. js库写法
  3. 16位的MD5加密和32位MD5加密的区别
  4. FlushMode属性与transaction(spring注入的事务)
  5. SIAlertView
  6. Mongodb FAQ 存储(storage)篇
  7. Oracle 修改密码 解锁
  8. 微信oauth获取用户的信息页面授权
  9. 错误提示 Unsupported compiler &#39;com.apple.compilers.llvmgcc42&#39; selected for architecture &#39;i386&#39;
  10. vs生成解决方案错误无法将文件“xx.*”复制到xx.*”。对路径“bin\xx.*”的访问被拒绝
  11. placeholder的字体样式改变,滚动条的颜色改变,ios日期兼容
  12. 从网络获取json数据,使用imageloader获取网络图片资源并显示在ListView上
  13. log4j 日志脱敏处理 + java properties文件加载
  14. Android实时直播,一千行java搞定不依赖jni,延迟0.8至3秒,强悍移动端来袭
  15. JAR、WAR、EAR的使用和区别
  16. .NET跨平台开发之Xamarin.Android介绍与生命周期【2】
  17. 第二个web网页
  18. MySQL InnoDB特性:两次写(Double Write)
  19. mo系统常用语句
  20. Java使用 SFTP实现文件上传下载

热门文章

  1. input、raw_input区别,运算符,运算优先级,多变赋值方式
  2. 区分 for...in 和 for...of
  3. 解决苹果手机(IOS)input失焦后,页面不恢复的问题
  4. 敏捷团队协作:Confluence简易教程
  5. SICP题解
  6. dp - 活动选择问题
  7. error C4430: missing type specifier - int assumed. Note: C++ does not support default-int 解决方法
  8. A way to find out how activity for mssql and oracle
  9. 使用C语言实现文件的操作
  10. 第1节 storm编程:3、storm的架构模型的介绍