1、给出$n,k$,求一个大于等于$n$且最小的数字$m$使得$m$的二进制表示中存在连续$k$个1 。

思路:如果$n$满足,答案就是$n$。否则,依次枚举连续1的位置判断即可。

#include <iostream>
#include <set>
#include <stdio.h>
#include <queue>
#include <algorithm>
#include <string.h>
using namespace std;class ConsecutiveOnes
{
public:long long get(long long n,int k) {const int N=50;int a[N+5];a[0]=0;for(int i=1;i<=N;++i){a[i]=(n>>(i-1))&1;a[i]+=a[i-1];}for(int i=k;i<=N;++i) if(a[i]-a[i-k]==k) return n;long long ans=((n>>k)<<k)|((1ll<<k)-1);long long tmp=ans;for(int i=k;i<N;++i){if((tmp>>(i-k))&1) tmp^=1ll<<(i-k);tmp|=1ll<<i;if(tmp>=n&&tmp<ans) ans=tmp;}return ans;}
};

  

2、给出一个整数$X=\prod_{i=0}^{n-1}p_{i}^{a_{i}}$,其中$p_{i}$表示第i个素数,比如$p_{0}=2,p_{1}=3$。问有多少有序数列使得数列中每个数字大于1且所有数字的乘积等于$X$。当$X=6$时有三个,分别是{2,3},{3,2},{6}。其中$1\leq n \leq 50,1\leq a_{i} \leq 50$。

思路:令$f_{i}$表示将$X$表示成$i$个数乘积的方案数。那么$f_{i}=\prod_{k=0}^{n-1}g(a_{k},i)-\sum_{k=1}^{i-1}C_{i}^{k}f_{k}$。其中$g(i,j)$表示将$i$个苹果放在$j$个篮子里的方案数,$C_{i}^{j}$表示组合数。

那么答案$ans=\sum f_{i}$

#include <iostream>
#include <map>
#include <string>
#include <stdio.h>
#include <vector>
#include <set>
#include <algorithm>
#include <string.h>
#include <queue>
using namespace std;const int N=3005;
const int mod=1000000007;int C[N][N];int add(int x,int y) {x+=y;if(x>=mod) x-=mod;return x;
}void init()
{C[0][0]=1;for(int i=1;i<N;++i) {C[i][0]=1;for(int j=1;j<N;++j) {C[i][j]=add(C[i-1][j],C[i-1][j-1]);}}
}int calC(int a,int b) {if(a<b) return 0;if(b+b>a) b=a-b;return C[a][b];
}int cal1(int a,int b) {return calC(a+b-1,b-1);
}int dp[N];struct OrderedProduct {int count(vector<int> a){init();int s=0;const int n=(int)a.size();for(int i=0;i<n;++i) s+=a[i];int ans=0;for(int i=1;i<=s;++i) {dp[i]=1;for(int j=0;j<n;++j) dp[i]=(long long)dp[i]*cal1(a[j],i)%mod;for(int j=1;j<i;++j) dp[i]=add(dp[i],mod-(long long)calC(i,j)*dp[j]%mod);ans=add(ans,dp[i]);}return ans;}
};

  

转载于:https://www.cnblogs.com/jianglangcaijin/p/6632050.html

topcoder srm 711 div1 -3相关推荐

  1. topcoder srm 714 div1

    problem1 link 倒着想.每次添加一个右括号再添加一个左括号,直到还原.那么每次的右括号的选择范围为当前左括号后面的右括号减去后面已经使用的右括号. problem2 link 令$h(x) ...

  2. topcoder srm 691 div1 -3

    1.给定一个$n$个顶点$n$个边的图,边是$(i,a_{i})$,顶点编号$[0,n-1]$.增加一个顶点$n$,现在选出一个顶点集$M$,对于任意的在$M$中 的顶点$x$,去掉边$(x,a_{x ...

  3. topcoder srm 706 div1

    1.给定一个迷宫,点号表示不可行,井号表示可行.现在可以改变其中的一些井号的位置.问最少改变多少个井号可以使得从左上角到右下角存在路径. 思路:设高为$n$,宽为$m$,若井号的个数$S$小于$n+m ...

  4. topcoder srm 694 div1 -3

    1.给出$n$个数字,将其分成三个非空的组,每组的权值为该组所有数字的抑或.选择一种分法使得三组的权值和最大? 思路:记录前两组的权值且三组有没有数字时第三组的值.(当前两组的值知道时第三组的权值是确 ...

  5. topcoder srm 330 div1

    problem1 link 直接模拟. import java.util.*; import java.math.*; import static java.lang.Math.*;public cl ...

  6. topcoder srm 360 div1

    problem1 link (1)$n \neq m$时,假设$n<m$,那么同一行中的$m$个数字必定都相等. (2)$n=m$时,要满足任意的$i_{1},i_{2},j_{1},j_{2} ...

  7. topcoder srm 635 div1

    problem1 link 首先枚举长度$L$.然后计算每一段长度$L$的差值最大公约数,然后差值除以最大公约数的结果可以作为当前段的关键字.然后不同段就可以比较他们的关键字,一样就是可以转化的. p ...

  8. topcoder srm 495 div1

    problem1 link 从前向后确定一下,然后再从后向前确定一下.一样的话就是可以确定的. problem2 link 首先将强连通分量缩点.理论上来说,只需要遍历所有入度为0的联通块中的一个即可 ...

  9. topcoder srm 325 div1

    problem1 link $g[i]$表示解决前$i$个的代价,那么$g[i]$是所有$g[j]+cost(j+1,i)$的最小值. import java.util.*; import java. ...

最新文章

  1. Java多线程闲聊(五):AQS
  2. WebRTC 系列之视频辅流
  3. spark SQL Running the Thrift JDBC/ODBC server
  4. react中webpack.config.js配置lessless-loader less
  5. Jetty入门(1-1)Jetty入门教程
  6. [C++] 栈 和 队列
  7. 使用dom4j来解析相关的xml字符串
  8. HALCON:模板匹配方法总结
  9. 数据分析与数据挖掘的区别
  10. Android 微信分享与QQ分享功能
  11. python3下载远程代码并执行
  12. r语言平均值显著性检验_R语言:常用统计检验方法(一)数据分析师
  13. 专用计算机的运行速度,WIN10专业版下电脑运行速度慢多个解决技巧
  14. Error: [vuex] do not mutate vuex store state outside mutation handlers.
  15. DexExpress的mapcontrol根据经纬度在地图上打点 C#地图画点 地图标点
  16. 高绩效团队的建设与管理
  17. 学习日记day17 ps
  18. Python-rot13-替换式密码
  19. 工作的未来是DAO,收入的未来是「X-to-earn」 |链捕手
  20. PHP项目快速接入微信功能

热门文章

  1. 后端程序员工作经验总结
  2. 基于python的移动物体检测_感兴趣区域的移动物体检测,框出移动物体的轮廓 (固定摄像头, opencv-python)...
  3. ROS知识【7】:ubuntu环境如何卸载ROS
  4. c 字符串数组_redis为什么不直接使用C字符串,而要自定义简单动态字符串?
  5. vue如何封装请求接口方法
  6. 2021-05-08 docker save与docker export的镜像区别
  7. 用electron-forge创建一个项目
  8. ubuntu vscode 配置opencv3.0_ubuntu下配置vscode的c++环境
  9. 斐波那契的数列的计算python-python斐波那契数列的计算方法
  10. 17原理图查找连接的管脚接口_第三节 主板原理图之标识的作用