1. #include<cstdio>
  2. #include<iostream>
  3. #include<cmath>
  4. #include<cstring>
  5. #include<algorithm>
  6. typedef long long ll;
  7. ll read(){
  8. ll t=,f=;char ch=getchar();
  9. while (ch<''||ch>''){if (ch=='-')f=-;ch=getchar();}
  10. while (''<=ch&&ch<=''){t=t*+ch-'';ch=getchar();}
  11. return t*f;
  12. }
  13.  
  14. int n,K,lim,ans=;
  15. int a[],tot=,cnt[],C[][];
  16. ll pw_[],*pw;
  17.  
  18. void dp(int id,bool f,bool f2) {
  19. if (id==) {
  20. ++ans;
  21. return;
  22. }
  23. if (f2) {
  24. for (int i=;i<=(f?:a[id]);i++)
  25. if (cnt[i]>) {
  26. --cnt[i];
  27. dp(id-,f|(i<a[id]),);
  28. ++cnt[i];
  29. }
  30. return;
  31. }
  32. if (f) {
  33. int tmp=;
  34. for (int j=;j<=;j++)
  35. tmp*=C[id][cnt[j]],
  36. id-=cnt[j];
  37. ans+=tmp;
  38. return;
  39. }
  40. for (int i=;i<=a[id];i++)
  41. if (cnt[i]>) {
  42. --cnt[i];
  43. dp(id-,f|(i<a[id]),);
  44. ++cnt[i];
  45. }
  46. }
  47. void dfs(int num,int tot2,int used){
  48. if (num==){
  49. cnt[]=tot2-used;
  50. int p=-,g=;
  51. for (int i=;i<=&&p==-;g+=cnt[i++]){
  52. if (g<(tot2+)/&&g+cnt[i]>=(tot2+)/)
  53. p=i;
  54. }
  55. ll val=;
  56. for (int i=;i<=;i++)
  57. val+=cnt[i]*pw[i-p];
  58. if (val<=lim) dp(tot2,tot2<tot,);
  59. return;
  60. }
  61. for (int i=;i<=tot2-used;i++){
  62. cnt[num]=i;
  63. dfs(num+,tot2,used+i);
  64. }
  65. }
  66. void init(){
  67. pw=pw_+;
  68. for (int i=-;i<=;i++){
  69. pw[i]=;
  70. for (int j=;j<=K;j++)
  71. pw[i]*=i;
  72. }
  73. C[][]=;
  74. for (int i=;i<=;i++){
  75. C[i][]=;
  76. for (int j=;j<=i;j++)
  77. C[i][j]=C[i-][j]+C[i-][j-];
  78. }
  79. }
  80. int main(){
  81. n=read();K=read();lim=read();init();
  82. while (n){
  83. a[++tot]=n%;
  84. n/=;
  85. }
  86. for (int i=;i<=tot;i++) dfs(,i,);
  87. printf("%d\n",ans);
  88. }

FJ省队集训DAY4 T3的更多相关文章

  1. FJ省队集训DAY4 T2

    XXX #include<cstdio> #include<iostream> #include<cmath> #include<cstring> #i ...

  2. FJ省队集训DAY4 T1

    直接上题解 #include<cstdio> #include<iostream> #include<cmath> #include<cstring> ...

  3. FJ省队集训最终测试 T3

    思路:状态压缩dp,f[i][j[[k]代表i行j列这个格子,连续的状态为k,这个连续的状态是什么?就是下图 X格子代表我当前走到的地方,而这里的状态就是红色部分,也就是连续的一段n的状态,我们是分每 ...

  4. FJ省队集训最终测试 T2

    思路:发现如果一个人一共选了x个点,那么选中某一个点对的概率都是一样的,一个人选x个点的总方案是C(n,x),一个人选中某个点对的总方案是C(n-2,x-2),这样,那么选中某个点对的概率就是 x*( ...

  5. FJ省队集训DAY5 T1

    思路:考试的时候打了LCT,自以为能过,没想到只能过80.. 考完一想:lct的做法点数是100W,就算是nlogn也会T. 讲一下lct的做法把:首先如果一条边连接的两个点都在同一个联通块内,那么这 ...

  6. FJ省队集训DAY3 T2

    思路:如果一个DAG要的路径上只要一条边去切掉,那么要怎么求?很容易就想到最小割,但是如果直接做最小割会走出重复的部分,那我们就这样:反向边设为inf,这样最小割的时候就不会割到了,判断无解我们直接用 ...

  7. FJ省队集训DAY3 T1

    思路:我们考虑如果取掉一个部分,那么能影响到最优解的只有离它最近的那两个部分. 因此我们考虑堆维护最小的部分,离散化离散掉区间,然后用线段树维护区间有没有雪,最后用平衡树在线段的左右端点上面维护最小的 ...

  8. FJ省队集训DAY2 T2

    思路:我们可以考虑三角剖分,这样问题就变成考虑三角形的选取概率和三角形内有多少个点了. 先用树状数组预处理出三角剖分的三角形中有多少个点,然后用线段树维护,先用原点极角排序,然后枚举i,再以i极角排序 ...

  9. FJ省队集训DAY2 T1

    思路:转换成n条三维空间的直线,求最大的集合使得两两有交点. 有两种情况:第一种是以某2条直线为平面,这时候只要统计这个平面上有几条斜率不同的直线就可以了 还有一种是全部交于同一点,这个也只要判断就可 ...

随机推荐

  1. DPDK2.1 linux上开发入门手册

    1引言 本文档主要包含INTEL DPDK安装和配置说明.目的是让用户快速的开发和运行程序.文档描述了如何在不深入细节的情况下在linux应用开发环境上编译和运行一个DPDK应用程序. 1.1文档总览 ...

  2. Spring MVC在接收复杂集合参数

    Spring MVC在接收集合请求参数时,需要在Controller方法的集合参数里前添加@RequestBody,而@RequestBody默认接收的enctype (MIME编码)是applica ...

  3. Binary Tree Zigzag Level Order Traversal (LeetCode) 层序遍历二叉树

    题目描述: Binary Tree Zigzag Level Order Traversal AC Rate: 399/1474 My Submissions Given a binary tree, ...

  4. 【Ruby on Rails学习二】在线学习资料的整理

    由于工作任务重,时间紧,没有太多学习的时间,大致找了些在线学习资料,这里做个整理,希望对同样准备学习的朋友有帮助 在线文档类: Ruby on Rails 实战圣经  使用 Rails 4.2 及 R ...

  5. MYSQL存储过程和函数学习笔记

    学至Tarena金牌讲师,金色晨曦科技公司技术总监沙利穆课程笔记的综合. 1. 什么是存储过程和函数 将SQL语句放入一个集合里,然后直接调用存储过程和函数来执行已经定义好的SQL语句,通过存储过程和 ...

  6. Java基础知识强化44:StringBuffer类之把数组拼接成指定格式的字符串的案例

    1. 先看案例代码如下: package cn.itcast_07; /* * 把数组拼接成一个字符串 */ public class StringBufferTest2 { public stati ...

  7. Tomcat架构以及理解sever.xml

    Tomcat架构图 当用户在地址栏输入访问地址后,首先识别访问协议(假设为http),那么通过针对于http协议传输的Connector连接器,连接到tomcat的服务中,连接后开始检测Engine下 ...

  8. [Python爬虫笔记][随意找个博客入门(一)]

    [Python爬虫笔记][随意找个博客入门(一)] 标签(空格分隔): Python 爬虫 2016年暑假 来源博客:挣脱不足与蒙昧 1.简单的爬取特定url的html代码 import urllib ...

  9. css margin重叠

    父子元素margin(垂直方向)重叠 解决办法: 给子元素添加浮动属性,相应父元素添加必要的清浮动属性: 给父元素添加边缘属性,如padding.border: 同级元素margin(垂直方向)反向重 ...

  10. NHibernate之映射文件配置说明(转载3)

    十二.组件(component), 动态组件(dynamic-component) <component>元素把子对象的一些元素与父类对应的表的一些字段映射起来. 然后组件可以定义它们自己 ...