题目:

1. 中位数

【问题描述】

给定C个不同物品,每个物品有一重量和体积,保证每个物品的重量不一样。从中选出N个物品,在体积不超过F的情况下,使得选出的物品的重量的中位数最大。所谓中位数,就是排序后处在最中间的重量,比如3,8,9,7,5的中位数是7。

【输入格式】

第一行:三个用空格分开的整数:N,C和F。1 ≤ N ≤ 19999,N ≤ C ≤ 105

,0 ≤ F ≤ 2 × 109

第二行到C + 1行:每行有两个用空格分开的整数。第一个数是这个物品的重量Wi,第二个数是这个物品的体积Qi。

【输出格式】

第一行:一个整数,表示可以得到的最大中位数,如果F装不下任何N个物品,则输出-1。

【输入样例】

3 5 70

30 25

50 21

20 20

5 18

35 30

【输出样例】

35

【样例解释】

选择重量为 5, 35, 50 的物品,中位数为 35,体积18 + 30 + 21 = 69,小于70。

【数据范围】

40%的数据,1 ≤ N≤ C ≤200

100%的数据,1 ≤ N ≤ 19999,N ≤ C ≤ 105,0 ≤ F ≤ 2 × 109,0 ≤ Qi≤ 105,0 ≤ Wi≤ 2 × 109。保证n为奇数。

2. 爆炸

【问题描述】

有N个城市,M条双向道路组成的地图,城市标号为1到N。“西瓜炸弹”放在1号城市,保证城市1至少连接着一个其他城市。“西瓜炸弹”有P/Q的概率会爆炸,每次进入其它城市时,爆炸的概率相同。如果它没有爆炸,它会随机的选择一条道路到另一个城市去,对于当前城市所连接的每一条道路都有相同的可能性被选中。对于给定的地图,求每个城市“西瓜炸弹”爆炸的概率。

例如,假设只有两个城市1和2,它们被一条道路连接起来。最开始“西瓜炸弹”放在城市1,每次进入城市它都有1/2的可能性爆炸:

1 — 2

我们就有以下可能的路径(其中最后一项是结束城市,即“西瓜炸弹”爆炸并污染该城市):

1: 1 
2: 1-2 
3: 1-2-1 
4: 1-2-1-2 
5: 1-2-1-2-1 
etc.

为了找出“西瓜炸弹”在城市1爆炸的可能性,我们可以把第1、3、5…种路径出现的概率加起来(在这个例子中即把所有奇数路径出现的可能性加起来)。 
对于第k种路径出现的可能性为(1/2)^k:在经过前k-1次时,炸弹绝对不会在城市1爆炸(每一次的概率为1 – 1/2 = 1/2),然后最后在城市1爆炸(概率为1/2)。

因此,在城市1爆炸的可能性就是 1/2 + (1/2)^3 + (1/2)^5 + … ,把这些数都加起来就等于2 / 3,约为0.666666667。 
所以在城市2爆炸的可能性就是1/3,约为0.333333333。

【输入格式】

第1行:四个被空格分隔整数:N,M,P和Q

第2..M+1行:第i行描述了两个空格分隔的整数:A_j 和 B_j(表示城市A_j与B_j相连)

【输出格式】

第1..N行:第i行为一个小数,表示第i个城市 “西瓜炸弹”爆炸的概率。至少要精确到10^-6才有效。

【输入样例1】

2 1 1 2 
1 2

【输出样例1】

0.666666667 
0.333333333

【输入样例2】

3 2 1 3

1 2

3 2

【输出样例2】

0.466666667

0.400000000

0.133333333

【数据范围】

20%  2<=N<=25 , 1<=M<=100

100% 2 <= N <= 300 ,1 <= M <= 44850 ,1 <= P <= 1,000,000,1 <= Q <= 1,000,000

3.序列划分

【题目描述】

给定一个序列{An},现在,需要把这个序列划分成K个子序列,使得每个子序列包含的数的个数不少于2,并且要么非升,要么非降。你的任务就是求出K的最小值。

【输入文件】

输入第一行一个正整数N,表示序列长度,接下来N行,第i行表示元素Ai-1

【输出文件】

如果不能划分这个序列,输出一个数0;否则输出K。

【样例输入1】

6

12

33

97

18

15

33

【样例输出1】

2

【样例输入2】

1

88

【样例输出2】

0

【样例输入3】

4

77

22

22

11

【样例输出3】

1

【数据规模】

对于30%的数据,1<=N<=10;

对于100%的数据,1<=N<=25,1<=Ai<=100;

题解:

一:按照体积排序

1.预处理前i小、大的体积的物品的重量拿n/2个的最小重量

然后一个个枚举过去,看看是否成立

至于预处理就用一个堆好了

二:高斯消元+概率dp

本来想要简单的dp+收敛,没有想到数据那么坑。。。

(其实按照随机的概率大概可以过p/q>0.02的情况吧)

正解:高斯校园+概率

列出n个方程,解n个数字,就是高斯消元

三:迭代深搜

枚举有多少个可以,然后按照类似与导弹拦截的贪心方法做贪心

代码:

  1. #include<cstdio>
  2. #include<cmath>
  3. #include<algorithm>
  4. #include<cstring>
  5. using namespace std;
  6. const int N=;
  7. int f[N],d[N],l,a[N],b[N],n,m,F;
  8. long long f1[N],f2[N];
  9. void up(int x)
  10. {
  11. if (x==)return;
  12. if (d[x]>d[x/])
  13. {
  14. swap(d[x],d[x/]);
  15. up(x/);
  16. }
  17. }
  18. void down(int x)
  19. {
  20. int i=x;
  21. if (x*<=l&&d[x]<d[x*])i=x*;
  22. if (x*<l&&d[i]<d[x*+])i=x*+;
  23. if (i!=x)
  24. {
  25. swap(d[x],d[i]);
  26. down(i);
  27. }
  28. }
  29. int cmp(int x,int y)
  30. {
  31. return a[x]<a[y];
  32. }
  33. int main()
  34. {
  35. freopen("finance.in","r",stdin);
  36. freopen("finance.out","w",stdout);
  37. scanf("%d%d%d",&n,&m,&F);
  38. for (int i=;i<=m;i++)scanf("%d%d",&a[i],&b[i]),f[i]=i;
  39. sort(f+,f+m+,cmp);
  40. for (int i=;i<=n/;i++)d[i]=b[f[i]],f1[i]=f1[i-]+b[f[i]];
  41. l=n/;
  42. for (int i=;i<=n/;i++)up(i);
  43. for (int i=n/+;i<=m;i++)
  44. {
  45. if (b[f[i]]>=d[])
  46. {
  47. f1[i]=f1[i-];
  48. continue;
  49. }
  50. f1[i]=f1[i-]+b[f[i]]-d[];
  51. d[]=b[f[i]];
  52. down();
  53. }
  54. memset(d,,sizeof d);
  55. for (int i=m;i>m-n/;i--)d[m-i+]=b[f[i]],f2[i]=f2[i+]+b[f[i]];
  56. for (int i=;i<=n/;i++)up(i);
  57. for (int i=m-n/;i;i--)
  58. {
  59. if (b[f[i]]>=d[])
  60. {
  61. f2[i]=f2[i+];
  62. continue;
  63. }
  64. f2[i]=f2[i+]+b[f[i]]-d[];
  65. d[]=b[f[i]];
  66. down();
  67. }
  68. for (int i=m-n/;i>n/;i--)
  69. if (F>=f1[i-]+f2[i+]+b[f[i]])
  70. {
  71. printf("%d",a[f[i]]);
  72. return ;
  73. }
  74. puts("-1");
  75. return ;
  76. }
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef double ld;
  4. const int N=;
  5. const ld eps=1e-;
  6. int n,m,mp[N][N],du[N];
  7. ld f[N][N],sum,P,Q;
  8. int main()
  9. {
  10. freopen("dotp.in","r",stdin);
  11. freopen("dotp.out","w",stdout);
  12. scanf("%d%d%lf%lf",&n,&m,&P,&Q);
  13. for(int i=,x,y;i<=m;i++)
  14. {
  15. scanf("%d%d",&x,&y);
  16. mp[x][y]++;mp[y][x]++;
  17. du[x]++;du[y]++;
  18. }
  19. f[][n+]=;
  20. for(int i=;i<=n;i++)
  21. {
  22. f[i][i]=;
  23. for(int j=;j<=n;j++)
  24. if(mp[i][j])f[i][j]+=((ld)P/Q-)/du[j]*mp[i][j];
  25. }
  26. for(int i=;i<=n;i++)
  27. {
  28. int t=i;
  29. for(int j=i;j<=n;j++)
  30. if(fabs(f[j][i])>eps)t=j;
  31. for(int j=;j<=n+;j++)swap(f[i][j],f[t][j]);
  32. for(int j=;j<=n;j++)
  33. if(j!=i&&fabs(f[j][i])>eps)
  34. {
  35. ld t=f[j][i]/f[i][i];
  36. for(int k=;k<=n+;k++)f[j][k]-=f[i][k]*t;
  37. }
  38. }
  39. for(int i=;i<=n;i++)sum+=(f[i][i]=f[i][n+]/f[i][i]);
  40. for(int i=;i<=n;i++)printf("%.9lf\n",(double)(f[i][i]/sum+eps));
  41. return ;
  42. }
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. const int N=;
  4. int a[N][N],b[N][N],A,B,ans[N],x[N],dep,n;
  5. void DFS(int u)
  6. {
  7. if (A+B>dep)return;
  8. if (u>n)
  9. {
  10. for (int i=;i<=A;i++)
  11. if (*a[i]<)return;
  12. for (int i=;i<=B;i++)
  13. if (*b[i]<)return;
  14. printf("%d\n",dep);
  15. exit();
  16. }
  17. int v=;
  18. for (int i=;i<=A;i++)
  19. if (a[i][*a[i]]<=x[u]&&(!v||a[v][*a[v]]<a[i][*a[i]]))v=i;
  20. if (!v)
  21. {
  22. ++A;
  23. a[A][++*a[A]]=x[u];
  24. ans[u]=A;
  25. DFS(u+);
  26. --*a[A--];
  27. }
  28. else
  29. {
  30. a[v][++*a[v]]=x[u];
  31. ans[u]=v;
  32. DFS(u+);
  33. --*a[v];
  34. }
  35. v=;
  36. for (int i=;i<=B;i++)
  37. if (b[i][*b[i]]>=x[u]&&(!v||b[v][*b[v]]>b[i][*b[i]]))v=i;
  38. if (!v)
  39. {
  40. ++B;
  41. b[B][++*b[B]]=x[u];
  42. ans[u]=dep+-B;
  43. DFS(u+);
  44. --*b[B--];
  45. }
  46. else
  47. {
  48. b[v][++*b[v]]=x[u];
  49. ans[u]=dep+-v;
  50. DFS(u+);
  51. --*b[v];
  52. }
  53. }
  54. int main()
  55. {
  56. freopen("sequence.in","r",stdin);
  57. freopen("sequence.out","w",stdout);
  58. scanf("%d",&n);
  59. for (int i=;i<=n;i++)scanf("%d",&x[i]);
  60. for (dep=;dep*<=n;dep++)
  61. {
  62. memset(a,,sizeof a);
  63. memset(b,,sizeof b);
  64. A=B=;
  65. DFS();
  66. }
  67. puts("");
  68. return ;
  69. }

第n+1次考试的更多相关文章

  1. 全网独家MongoDB Certified DBA Associate考试认证视频

    该视频意在让所有学员一次通过考试,避免重复考试而承担的巨额考试费用! 目前MongDB发展迅猛,有赶超mysql,和oracle看齐的苗头.在这个时候MongoDB也适时的推出了官方的认证考试&quo ...

  2. 记lrd的高二上学期第五次调研考试

    河北某某中学的调研考试其实是很好玩的经历呢.可惜没有太多机会了. 背景: NOIP2016回来之后没有好好学文化课-.自习能翘就翘了,衡中特产学案自助没有好好写(说来我好像从来没被老师查到过,上课写学 ...

  3. 1009: [HNOI2008]GT考试

    1009: [HNOI2008]GT考试 Time Limit: 1 Sec Memory Limit: 162 MB Description 阿申准备报名参加GT考试,准考证号为N位数\(X_1X_ ...

  4. mysql练习题-查询同时参加计算机和英语考试的学生的信息-遁地龙卷风

    (-1)写在前面 文章参考http://blog.sina.com.cn/willcaty. 针对其中的一道练习题想出两种其他的答案,希望网友给出更多回答. (0) 基础数据 student表 +-- ...

  5. js封装用户选项传递给Servlet之考试系统二

    <%@ page language="java" import="java.util.*" contentType="text/html; ch ...

  6. js动态生成选项之考试系统(一)

    <%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...

  7. 分享一个LiteDB做的简单考试系统辅助工具

    凌晨,被安排在公司值班,因为台风“灿鸿”即将登陆,风力太大,办公楼,车间等重要部分需要关注.所以无聊,那就分享一下,今天给朋友临时做的一个小的考试系统辅助工具吧.其实非常小,需求也很简单,但是可以根据 ...

  8. CCF考试

    第八次CCF考试记录 代码还不知道对不对,过两天出成绩. 成绩出来了,310分. 100+100+100+10+0: 考试13:27开始,17:30结束,提交第4题后不再答题,只是检查前四题的代码 第 ...

  9. PAT 1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...

  10. 硕士研究生入学考试复试试卷答案.tex

    %该模板用于数学答题 \documentclass[UTF8]{ctexart}%[中文编码 UTF8] \usepackage{fancyhdr}%{页眉页脚页码} \pagestyle{fancy ...

随机推荐

  1. 一种新的技术,C++/CLI

    一.来源 在一个项目中,拿到了一个demo,看起来像是C#,又像是C++,部分截图如下 1.界面[C#的winform] 2.mian入口,是cpp 3.解决方案 二.猜测 一开始以为是C#工程,因为 ...

  2. 分页器的js实现代码 bootstrap Paginator.js

    参考: http://www.jb51.net/article/76093.htm 如前所述, 不要什么都想到 jquery的 脚本js, 应该首先推荐的是 css 和 元素本身的事件 函数 如: o ...

  3. MacBook PRO蓝牙无法搜索设备

    背景 经常把MacBook合上盖子就塞进包里,用时打开盖子就继续操作,偶尔会出现刚刚还在用的罗技蓝牙鼠标,重新打开笔记本后就连接不上了,而且也无法搜索到周边的蓝牙设备. 解决方案 快捷键:Option ...

  4. 【Git安装】centos安装git

    1 yum install git 安装后的默认存放地点/usr/bin/git

  5. [pytorch]pytorch loss function 总结

    原文: http://www.voidcn.com/article/p-rtzqgqkz-bpg.html 最近看了下 PyTorch 的损失函数文档,整理了下自己的理解,重新格式化了公式如下,以便以 ...

  6. 在django restful framework中设置django model的property

    众所周知,在django的model中,可以某些字段设置@property和setter deleter getter,这样就可以在存入数据的时候进行一些操作,具体原理请参见廖雪峰大神的博客https ...

  7. Linux——GRUB简单学习笔记

    GRUB的配置文件默认为  :/boot/grub/grub.conf # ls -l /etc/grub.conf GRUB配置选项: default定义缺省启动系统 timeout定义缺省等待时间 ...

  8. go 接口

    1. package main import ( "fmt" ) type Phone interface { call() } type NokiaPhone struct { ...

  9. python 字符串输出转义{}

    >>> print ("{} 对应的位置是 {{0}}".format("runoob")) runoob 对应的位置是 {}

  10. MongoDB(课时15 数据排序)

    3.4.2.10 数据排序 在MongoDB里数据排序操作使用“sort()”函数,在进行排序的时候可以有两个顺序:升序(1),降序(-1). 范例:排序 db.students.find().sor ...