1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4.  
  5. #define N 1001
  6.  
  7. using namespace std;
  8. string s[N];
  9. int ans[N];
  10.  
  11. inline int read()
  12. {
  13. int x=,f=;char c=getchar();
  14. while(c>''||c<''){if(c=='-')f=-;c=getchar();}
  15. while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
  16. return x*f;
  17. }
  18.  
  19. int main()
  20. {
  21. freopen("curse.in","r",stdin);
  22. freopen("curse.out","w",stdout);
  23. int x,y,n,l;
  24. n=read();
  25. for(int i=;i<=n;i++)
  26. {
  27. cin>>s[i];
  28. l=s[i].length();
  29. }
  30. for(int i=;i<l;i++)
  31. {
  32. x=,y=;
  33. for(int j=;j<=n;j++)
  34. {
  35. if(s[j][i]=='') x++;
  36. else y++;
  37. }
  38. if(x>y) ans[i]=;
  39. else ans[i]=;
  40. }
  41. for(int i=;i<l;i++) printf("%d",ans[i]);
  42. fclose(stdin);fclose(stdout);
  43. return ;
  44. }

  1. /*
  2. 当R 和 G 的大小超过了 N 时,L 的最小值就是 1,R,G 的规模就降到了 2000 以内。
  3. 显然要采用二分答案的方法。法坛的位置按照从小到大进行排序。令 dp[i][j]表示,在用了 i次红光,j 次绿光的情况下,最多从第一座法坛开始,一直摧毁到第几座法坛。
  4. dp[i][j] = max ( P[dp[i-1][j] + 1], Q[dp[i][j-1] + 1] )。其中 P[k]表示使用一次红光,
  5. 能从第 k 座法坛向右(正向为右)连续摧毁到第几座,Q[k]表示使用一次绿光,能从第 k 座
  6. 法坛向右连续摧毁到第几座。 P 和 Q 数组可以通过预处理得到。判断 dp[R][G]的值是否为 N 即可。
  7. */
  8. #include <cstdio>
  9. #include <cstring>
  10. #include <algorithm>
  11.  
  12. #define N 2007
  13.  
  14. using namespace std;
  15.  
  16. int n,p,q,a[N],l=,r,ans;
  17. int dp[N][N],P[N],Q[N];
  18.  
  19. bool check(int L)
  20. {
  21. memset(dp,,sizeof(dp));
  22. memset(P,,sizeof(P));
  23. memset(Q,,sizeof(Q));
  24. for (int i=;i<=n;i++)
  25. for (int j=i;j<=n;j++)
  26. {
  27. if (a[j]-a[i]+<=L) P[i]=j;
  28. if (a[j]-a[i]+<=*L) Q[i]=j;
  29. }
  30. P[n+]=Q[n+]=n;
  31. for (int i=;i<=p;i++)
  32. for (int j=;j<=q;j++)
  33. {
  34. if (i>) dp[i][j]=max(dp[i][j],P[dp[i-][j]+]);
  35. if (j>) dp[i][j]=max(dp[i][j],Q[dp[i][j-]+]);
  36. }
  37. return dp[p][q]==n;
  38. }
  39.  
  40. int main()
  41. {
  42. freopen("light.in", "r", stdin);
  43. freopen("light.out", "w", stdout);
  44. scanf("%d%d%d", &n,&p,&q);
  45. for (int i=;i<=n;i++)
  46. scanf("%d",&a[i]);
  47. sort(a+,a++n);
  48. a[]=;
  49. r=a[n]-a[]+;
  50. if (p+q>=n) {printf("1\n"); return ;}
  51. while (l<=r)
  52. {
  53. int mid=(l+r)/;
  54. if (check(mid)) ans=mid,r=mid-; else l=mid+;
  55. }
  56. printf("%d\n",ans);
  57. return ;
  58. }

  1. /*
  2. 1到n的次短路长度必然产生于:从1走到x的最短路 + edge[x][y] + y到n的最短路
  3. 首先预处理好1到每一个节点的最短路,和n到每一个节点的最短路
  4. 然后枚举每一条边作为中间边(x,y)或者(y,x),如果加起来长度等于最短路长度则跳过,否则更新。
  5. 到x的最短路 + edge[x][y] + y到n的最短路 给dist[n] 比较 找大于dist[n] 且是最小的那一个
  6. */
  7. #include <cstdio>
  8. #include <cstring>
  9. #include <queue>
  10. #include <algorithm>
  11.  
  12. #define R 100007
  13. #define INF 0x3f3f3f3f
  14.  
  15. using namespace std;
  16. int num,n,m;
  17. int dist1[R],dist2[R],head[R];
  18. bool vis[R];
  19. struct Node
  20. {
  21. int v;int w;int next;
  22. } edge[R*];
  23.  
  24. void init()
  25. {
  26. num=;
  27. memset(head,-,sizeof(head));
  28. memset(dist1,0x3f,sizeof(dist1));
  29. memset(dist2,0x3f,sizeof(dist2));
  30. }
  31.  
  32. void add(int u,int v,int w)
  33. {
  34. edge[num].v=v;edge[num].w=w;
  35. edge[num].next=head[u];head[u]=num++;
  36. }
  37.  
  38. void SPFA(int u,int *dist)
  39. {
  40. int i,v,w;
  41. queue<int> Q;
  42. memset(vis,false,sizeof(vis));
  43. dist[u]=;vis[u]=true;Q.push(u);
  44. while(!Q.empty())
  45. {
  46. u=Q.front();Q.pop();
  47. vis[u]=false;
  48. for(i=head[u]; i!=-; i=edge[i].next)
  49. {
  50. v=edge[i].v;
  51. w=edge[i].w;
  52. if(dist[v]>dist[u]+w)
  53. {
  54. dist[v]=dist[u]+w;
  55. if(!vis[v])
  56. {
  57. vis[v]=true;
  58. Q.push(v);
  59. }
  60. }
  61. }
  62. }
  63. }
  64.  
  65. int main()
  66. {
  67. freopen("maze.in","r",stdin);
  68. freopen("maze.out","w",stdout);
  69. scanf("%d%d",&n,&m);
  70. int u,v,w;;
  71. init();
  72. for(int i=;i<=m;i++)
  73. {
  74. scanf("%d%d%d",&u,&v,&w);
  75. add(u,v,w);add(v,u,w);
  76. }
  77. SPFA(,dist1);
  78. SPFA(n,dist2);
  79. int ans=INF;
  80. for(int i=;i<=n;i++)
  81. {
  82. for(int j=head[i]; j!=-; j=edge[j].next)
  83. {
  84. v=edge[j].v;w=edge[j].w;
  85. int tem=dist1[i]+dist2[v]+w;
  86. if(tem>dist1[n] && tem<ans) ans=tem;
  87. }
  88. }
  89. printf("%d\n",ans);
  90. return ;
  91. }
  1. NOIP2018 模拟试题(二) 提高组
  2. 更多咨询:北京信息学窦老师QQ3377089232
  3. NOIP2018提高组模拟题(二)
  4. (请选手务必仔细阅读本页内容)
  5. 一.题目概况
  6. 中文题目名称 咒语 神光 迷宫
  7. 英文题目与子目录名
  8. curse light maze
  9. 可执行文件名
  10. curse light maze
  11. 输入文件名
  12. curse.in light.in maze.in
  13. 输出文件名
  14. curse.out light.out maze.out
  15. 每个测试点时限
  16. 测试点数目
  17.  
  18. 每个测试点分值
  19.  
  20. 结果比较方式 全文比较(过滤行末空格及文末回车)
  21. 题目类型 传统 传统 传统
  22. 二.提交源程序文件名
  23. 对于 pascal 语言
  24. curse.pas light.pas maze.pas
  25. 对于 C 语言
  26. curse.c light.c maze.c
  27. 对于 C++语言
  28. curse.cpp light.cpp maze.cpp
  29. 三.运行内存限制
  30. 内存上限
  31. 512M 512M 512M
  32. NOIP2018 模拟试题(二) 提高组
  33. 更多咨询:北京信息学窦老师QQ3377089232
  34. 、咒语
  35. (curse.pas/c/cpp)
  36. 【题目描述】
  37. 亮亮梦到自己来到了魔法城堡, 但一扇巨大的石门阻拦了他通向城堡内的路。
  38. 正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条。
  39. 亮亮拿起纸条的一端,只见上面写着打开机关的方法: “打开机关需要念动
  40. 符咒,咒语是一串长为 L 的由 组成的字符串。在这张长纸条上列了 n
  41. 长为 L 的字符串,正确的咒语即是在纷繁的 ^L 种字符串中,与这些纸条上的
  42. 字符串相异度之和最小,并且在满足这一条件下, 的个数最多的字符串。两个
  43. 字符串的相异度定义为对应位置不相等的字符对的个数。如‘’和‘’的
  44. 相异度为 ,因为它们有且只有第二个位置上的字符不相等。”
  45. 亮亮拉起纸条,只觉得纸条似乎永远也拉不完。这上面有着数以万计的字符
  46. 串,而每一个字符串的长度也或百或千,以人力看来是无法得到正确的咒语。你
  47. 能帮帮他,让他得以进入魔法城堡,一窥其中的奥秘吗?
  48. 【输入格式】
  49. 第一行为一个数字 N
  50. 接下来的 N 行, 每行为一个长为 L 字符串。 数据保证 N 个字符串等长。
  51. 【输出格式】
  52. 只有一行,是一个长为 L 的字符串 S,即为正确的咒语。
  53. 【样例输入】
  54.  
  55. 【样例输出】
  56.  
  57. 【数据规模】
  58. 对于 %的数据,N<=;
  59. 对于 %的数据,N<=;
  60. 对于 %的数据,<=N<=,<=L<=。
  61. NOIP2018 模拟试题(二) 提高组
  62. 更多咨询:北京信息学窦老师QQ3377089232
  63. 、神光
  64. (light.pas/c/cpp)
  65. 【题目描述】
  66. 亮亮成功地念出了咒语,石门缓缓地自动移开,一道道绚丽的神光从城堡内
  67. 激射而出。亮亮好奇而又兴奋地走入了城堡中,迎面有一座极长的魔法阵。
  68. 魔法阵可以看作一条直线,它被均匀地分成了 个位置,一个位
  69. 置可以看成是一个格子。有些位置上筑有法坛,一共 N座。亮亮只有破了眼前
  70. 的魔法阵,才能继续前进,而欲破法阵,必须毁掉所有的法坛。
  71. 亮亮身前有两根法杖:一根颜色血红,能发红色神光,光芒可以笼罩连续 L
  72. 个位置,并摧毁这 L 个位置上所有的法坛,最多使用 R 次;另一根颜色碧绿,
  73. 能发绿色神光,光芒可以笼罩连续 2L 个位置,并摧毁这 2L 个位置上所有的法
  74. 坛,最多使用 G 次。
  75. 法杖的神奇之处在于,L 的值必须由亮亮事先设定好,并且一经设定,便无
  76. 法更改。亮亮需要在规定的次数下摧毁所有法坛,并且使得 L 最小。
  77. 【输入格式】
  78. 第一行三个整数 N, R, G
  79. i (<=i<=n+) 行一个整数
  80. i
  81. A ,表示第 i 座法坛的位置。
  82. 【输出格式】
  83. 只有一个整数,表示L 的最小值。
  84. 【样例输入】
  85.  
  86. 【样例输出】
  87.  
  88. 【样例解释】
  89. 亮亮将 L 设为 ,并用红色神光笼罩 - 位置,用绿色神光笼罩 - 位置。
  90. 【数据规模】
  91. 对于50%的数据,N <=
  92. 对于100%的数据, <= N <= <= R, G,
  93. i
  94. A <= ,,,。
  95. NOIP2018 模拟试题(二) 提高组
  96. 更多咨询:北京信息学窦老师QQ3377089232
  97. 、迷宫
  98. (maze.pas/c/cpp)
  99. 【题目描述】
  100. 破了魔法阵后,亮亮进入了一座迷宫。这座迷宫叫做“梦境迷宫” ,亮亮只
  101. 有走出这座迷宫,才能从睡梦中醒来。
  102. 梦境迷宫可以用无向图来表示。它共有 n 个点和 m 条双向道路,每条道路
  103. 都有边权,表示通过这条道路所需的时间,且每条道路可以多次经过。亮亮位于
  104. 一号点,而出口则是 n 号点。原本,亮亮该找到一条最短路,快速冲出迷宫,然
  105. 而,梦境迷宫的特殊之处在于,如果沿着最短路到达出口,亮亮就会永远陷入梦
  106. 境。因此,亮亮必须寻找一条次短路。次短路的长度须严格大于最短路(可以有
  107. 多条)的长度,同时又不大于所有除最短路外的道路的长度。
  108. 你的任务,就是编写一个程序,帮助亮亮找到通向出口的次短路。
  109. 【输入格式】
  110. 第一行有两个整数 nm,表示迷宫内共有 n 个点,m 条边。
  111. 接下来 m 行,每行三个整数 xyz,表示结点 x y 之间连有一条边权为
  112. z 的无向边。
  113. 【输出格式】
  114. 一个整数,表示次短路的长度。
  115. 【样例输入】
  116.  
  117. 【样例输出】
  118.  
  119. 【样例解释】
  120. 最短路: -> -> (长度为 +=)
  121. 次短路: -> -> -> (长度为 ++=)
  122. 【数据规模】
  123. 对于 %的数据, <= n <= <= m <= ,。
  124. 对于 %的数据, <= z <= z 表示无向边的边长。

题面

10.17NOIP模拟赛的更多相关文章

  1. 2018.10.17NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...

  2. [10.18模拟赛] 序列 (DP)

    [10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...

  3. [10.12模拟赛] 老大 (二分/树的直径/树形dp)

    [10.12模拟赛] 老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n − 1 条边的无向连通图), ...

  4. EZ 2018 06 10 NOIP2018 模拟赛(十八)

    好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...

  5. 洛谷P1667/[10.22 模拟赛] 数列 (思维+模拟)

    洛谷P1667 数列 题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足\(A_X +A_{ ...

  6. 2018.10.23NOIP模拟赛解题报告

    心路历程 预计得分:\(100 + 50 + (10 \sim 50)\) 实际得分:\(100 + 10 + 50\) 这可能是我打的最懵逼的一场考试没有之一.. T1两个小时才做出来也是醉了. T ...

  7. 17.2.10 NOIP模拟赛 聪哥的工资

    聪哥的工资 (money/money.in/money.out) 时限1000ms 内存256MB 题目描述 lwher: 了体验劳苦大众的生活,聪哥在暑假参加了打零工的活动,这个活动分为n个工作日, ...

  8. 2019.10.18模拟赛T3

    题目大意: 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^n[lcm(i,j)>n](n\leq 10^{10})$的值. 题解: 这题貌似有n多种做法... 为 ...

  9. 2019.10.02模拟赛T3

    题目大意: 设$S(n,m)$为第二类斯特林数,$F_i$表示斐波那契数列第$i$项. 给定$n,R,K$,求$\sum\limits_{i=1}^{n}(\sum\limits_{m=1}^{R}F ...

随机推荐

  1. matplotlib多种绘图方式

    目录 散点图 条形图 直方图 总结 散点图 假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律? a = [1 ...

  2. (dede)织梦系统二次开发笔记

    (dede)织梦系统二次开发记录 --soulsjie 一.模板常用文件说明 模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析: 首页模板文件目录 \ ...

  3. android开发里跳过的坑——调用已安装视频播放器在有些机器上无效

    调用已安装视频播放器播放未修改之前的代码 private void startPlay(String fileName){ File file = new File(fileName); Intent ...

  4. 中国福利彩票,牛B,开奖和数据传输有什么关系?

    昨天,由中国教育电视台直播的福利彩票“双色球”15011期开奖,在没有事先预告的情况下突然取消.晚上11点40分左右,中国福利彩票发行管理中心唯一指定网络信息发布媒体——中彩网官方微博出乎意料地在网上 ...

  5. MongoDB小结18 - find【查询条件$not】

    not 是元条件句,可以用于任何条件之上,意为取反

  6. Oracle SqlPlus导出查询结果

    Oracle SqlPlus导出查询结果 在sqlplus下导出查询的结果保存到本地sql文件中,可以采用如下方式:1.连接数据库: sqlplus xmq/xmqpwd@192.168.1.57:1 ...

  7. 在虚拟机搭建JStrom

    原文:http://blog.csdn.net/u014134180/article/details/51810311 一 安装步骤 二 搭建Zookeeper集群 1 ZooKeeper 单机安装与 ...

  8. sqlit中使用到的查询语句

    近期使用sqlite查询比較多,包含连表查询等. 记录一下.以免忘记! 1.先依据时间排序后选择前十条: select * from MyBill order by  createTime desc ...

  9. CentOS 5.11开启VNC Service

    1.     #yum install vncserver 2.     #vncpasswd       此密码将成为vnc的login password          password:    ...

  10. 基于Office 365 无代码工作流分析-数据源的建立!

     标准操作步骤 下面整个步骤我们是以嘉昊信息的招聘过程的整个流程为一个场景,整个的流程场景的步骤例如以下: 整个的过程,我们通过Infopath 进行对应的表单流转,然后利用Sharepoint ...