三向城

  1. /*
  2. 原图一定是一棵完全二叉树。
  3. 根节点是x,左节点是x*2,右节点是x*2+1
  4. 转化为二进制往左右走就很明显了。
  5. */
  6. #include<iostream>
  7. #include<cstdio>
  8. #include<cstring>
  9.  
  10. #define ll long long
  11.  
  12. using namespace std;
  13. int T,x,y,k,ans,pos;
  14.  
  15. inline int read()
  16. {
  17. int x=,f=;char c=getchar();
  18. while(c>''||c<''){if(c=='-')f=-;c=getchar();}
  19. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  20. return x*f;
  21. }
  22.  
  23. int main()
  24. {
  25. freopen("city.in","r",stdin);
  26. freopen("city.out","w",stdout);
  27. T=read();
  28. while(T--)
  29. {
  30. x=read();y=read();ans=;
  31. if(x==y){printf("1\n");continue;}
  32. while(x!=y)
  33. {
  34. if(x>y) x/=,ans++;
  35. if(y>x) y/=,ans++;
  36. }
  37. printf("%d\n",ans);
  38. }
  39. return ;
  40. }

灵魂画师

  1. /*
  2. dp[i][j][k]表示第i个元素经过j次染色变为k颜色的概率。
  3. 考虑一段区间,每个元素只有选和不选两个状态,所以概率都为1/2.
  4. 转移的时候枚举下一个染不染和染成什么颜色。染成下一种颜色的概率是1/c。
  5. 可以看出第一维是没有用的,因为被覆盖次数相同的格子概率是相同的。
  6. */
  7. #include<iostream>
  8. #include<cstdio>
  9. #include<cstring>
  10.  
  11. #define N 107
  12.  
  13. using namespace std;
  14. int n,m,tot,c,k,t,l,r,cnt[N];
  15. double dp[N][N],ans;
  16.  
  17. inline int read()
  18. {
  19. int x=,f=;char c=getchar();
  20. while(c>''||c<''){if(c=='-')f=-;c=getchar();}
  21. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  22. return x*f;
  23. }
  24.  
  25. void DP()
  26. {
  27. dp[][]=;
  28. for(int i=;i<tot;i++)
  29. {
  30. for(int j=;j<c;j++)
  31. {
  32. dp[i+][j]+=dp[i][j]/;
  33. for(int x=;x<c;x++) dp[i+][(j*x)%c]+=dp[i][j]/(*c);
  34. }
  35. }
  36.  
  37. for(int i=;i<=n;i++)
  38. for(int j=;j<c;j++)
  39. ans+=dp[cnt[i]][j]*j;
  40. printf("%.3lf\n",ans);
  41. }
  42.  
  43. int main()
  44. {
  45. freopen("paint.in","r",stdin);
  46. freopen("paint.out","w",stdout);
  47. n=read();c=read();k=read();
  48. for(int i=;i<=k;i++)
  49. {
  50. l=read();r=read();
  51. for(int j=l;j<=r;j++)
  52. cnt[j]++,tot=max(tot,cnt[j]);
  53. }DP();
  54. return ;
  55. }

香子兰

  1. #include <cstdio>
  2. #define inf 1000000007
  3. #define N 24
  4. int a[N][N],d[N][N],f[][N][],e[N],cnt[];
  5. int n,n1,n2,x,y,z,i,j,m,k,q,ans,sta;
  6.  
  7. int main()
  8. {
  9. freopen("vanilla.in", "r", stdin);
  10. freopen("vanilla.out", "w", stdout);
  11. e[] = ;
  12. //预处理2^i
  13. for (i=; i<=; ++i)
  14. e[i] = e[i-]<<;
  15. //预处理每个二进制数中有几个1
  16. for (i=; i<e[]; ++i)
  17. for (x=i; x!=; x>>=)
  18. cnt[i] += x&;
  19.  
  20. scanf("%d%d", &n, &m);
  21. for (i=; i<=n; ++i)
  22. for (j=; j<=n; ++j)
  23. d[i][j] = inf*(i!=j);
  24. for (i=; i<=m; ++i)
  25. {
  26. scanf("%d%d%d", &x, &y, &z);
  27. ++x;++y;
  28. if (z<d[x][y])
  29. d[x][y] = d[y][x] = z;
  30. }
  31.  
  32. // floyd求两两最短路
  33. for (k=; k<=n; ++k)
  34. for (i=; i<=n; ++i)
  35. for (j=; j<=n; ++j)
  36. if (d[i][k]+d[k][j] < d[i][j])
  37. d[i][j] = d[i][k]+d[k][j];
  38.  
  39. if (n == )
  40. {
  41. printf("%d\n", (d[][]+d[][])*);
  42. return ;
  43. }
  44.  
  45. n1 = (n-)/;
  46. n2 = n--n1;
  47. //求从家、花店开始,走到点i,经过的点为j的最短路
  48. //q=0:从家开始,q=1:从花店开始
  49. for (q=; q<=; ++q)
  50. {
  51. //初始化状态
  52. for (i=; i<=n; ++i)
  53. for (j=; j<e[n-]; ++j)
  54. f[q][i][j] = inf;
  55. if (q == )
  56. {
  57. for (i=; i<n; ++i)
  58. f[q][i][e[i-]] = d[][i];
  59. }
  60. else
  61. {
  62. for (i=; i<n; ++i)
  63. f[q][i][e[i-]] = d[n][i];
  64. }
  65.  
  66. //dp
  67. for (j=; j<e[n-]; ++j)
  68. if (cnt[j] < n2)
  69. for (i=; i<n; ++i)
  70. if (f[q][i][j] < inf)
  71. for (k=; k<n; ++k)
  72. if (f[q][i][j]+d[i][k] < f[q][k][j|e[k-]])
  73. f[q][k][j|e[k-]] = f[q][i][j]+d[i][k];
  74. }
  75.  
  76. ans = inf;
  77. //枚举先走到的一半为sta
  78. for (sta=; sta<e[n-]; ++sta)
  79. if (cnt[sta] == n1)
  80. {
  81. //前半段
  82. x = inf; //x记录前半段的最短距离
  83. //枚举前一半中最后一个收割的点是i
  84. for (i=; i<n; ++i)
  85. if (sta&e[i-])
  86. //枚举后一半中第一个收割的点是j
  87. for (j=; j<n; ++j)
  88. if (!(sta&e[j-]))
  89. if (f[][i][sta]+d[i][j]+f[][j][e[n-]--sta] < x)
  90. x = f[][i][sta]+d[i][j]+f[][j][e[n-]--sta];
  91.  
  92. //后半段
  93. //枚举前一半中最后一个播种的点是i
  94. for (i=; i<n; ++i)
  95. if (sta&e[i-])
  96. //枚举后一半中第一个播种的点是j
  97. for (j=; j<n; ++j)
  98. if (!(sta&e[j-]))
  99. if (x+f[][i][sta]+d[i][j]+f[][j][e[n-]--sta] < ans)
  100. ans = x+f[][i][sta]+d[i][j]+f[][j][e[n-]--sta];
  101. }
  102. printf("%d\n", ans);
  103. return ;
  104. }

清北考前刷题da7下午好的更多相关文章

  1. 清北考前刷题day1下午好

    水题(water) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每张牌长和宽 ...

  2. 清北考前刷题day3下午好

    /* 可以并查集维护 可以发现,某个联通快出现大于等于2个环,一定无法分配. 有解要么一个环,要么没有环. 一个环时答案等于点数乘2(顺时针或逆时针). 没有环是树,对于一个n个点的树,方案一定有n种 ...

  3. 清北考前刷题day6下午好

    /* 贪心 负数一定不取 枚举最高位是1 且答案取为0的 位置, 更新答案. */ #include<iostream> #include<cstdio> #include&l ...

  4. 清北考前刷题da5下午好

    /* (4,1)*(3,1)*(2,1)的话1变成2然后一直是2 2变成1然后变成3 3变成1然后变成4 4变成1 */ #include<iostream> #include<cs ...

  5. 清北考前刷题day4下午好

    /* 辗转相除,每次计算多出现了几个数. */ #include<iostream> #include<cstdio> #include<cstring> #inc ...

  6. 清北考前刷题day2下午好

    #include<iostream> #include<cstdio> #include<cstring> #include<stack> #defin ...

  7. 清北考前刷题day4早安

      LI /* 没有考虑次大值有大于一个的情况 */ #include<iostream> #include<cstdio> #include<cstring> # ...

  8. 清北考前刷题day7早安

  9. 清北考前刷题day6早安

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #d ...

随机推荐

  1. Leetcode 213.大家劫舍II

    打家劫舍II 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金.这个地方所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的.同时,相邻的房屋装有相互连通的防盗系统,如果两 ...

  2. 九度oj 题目1192:回文字符串

    题目1192:回文字符串 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:4391 解决:2082 题目描述: 给出一个长度不超过1000的字符串,判断它是不是回文(顺读,逆读均相同)的. ...

  3. TKmybatis的框架介绍和原理分析及Mybatis新特性

    tkmybatis是在mybatis框架的基础上提供了很多工具,让开发更加高效,下面来看看这个框架的基本使用,后面会对相关源码进行分析,感兴趣的同学可以看一下,挺不错的一个工具 实现对员工表的增删改查 ...

  4. [运维]ELK实现日志监控告警

    https://blog.csdn.net/yeweiouyang/article/details/54948846

  5. 常见Unix指令

    常用的UNIX指令: 1.文件和目录操作 ls –l  列出当前目录下的所有内容(文件\文件夹) pwd  显示出当前目录的名称 cd  改变当前操作的目录 who  显示当前用户名 clear    ...

  6. easyUi 学习笔记 (一) 使用easyui 和ztree 创建前端框架

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  7. IOS程序崩溃报告管理解决方案(Crashlytics 在2014-09-24)

    预研Crashlytics  在2014-09-241:实现原理在原理上,Crashlytics通过以下2步完成崩溃日志的上传和分析:(1)提供应用SDK,你需要在应用启动时调用其SDK来设置你的应用 ...

  8. SaltStack学习系列之state常用模块

    常用模块:cron,cmd,file,mount,ntp,pkg,service,user,group cmd模块 参数: name:要执行的命令 unless:用于检查的命令,只有unless指向的 ...

  9. vux 全局使用 loading / toast / alert

    1.入口文件 main.js import { LoadingPlugin, ToastPlugin, AlertPlugin } from 'vux' Vue.use(LoadingPlugin); ...

  10. Android源代码文件夹结构说明

    在学习Android的过程中,学习写应用还好.一開始不用管太多代码.直接调用函数就能够了,可是工作中却须要改动到framework之类的东东 所以感觉開始纠结了,又是初学,非常多不懂,所以就去找了关于 ...