10.17NOIP模拟赛
- #include<iostream>
- #include<cstdio>
- #include<cstring>
- #define N 1001
- using namespace std;
- string s[N];
- int ans[N];
- inline int read()
- {
- int x=,f=;char c=getchar();
- while(c>''||c<''){if(c=='-')f=-;c=getchar();}
- while(c>=''&&c<=''){x=x*+c-'';c=getchar();}
- return x*f;
- }
- int main()
- {
- freopen("curse.in","r",stdin);
- freopen("curse.out","w",stdout);
- int x,y,n,l;
- n=read();
- for(int i=;i<=n;i++)
- {
- cin>>s[i];
- l=s[i].length();
- }
- for(int i=;i<l;i++)
- {
- x=,y=;
- for(int j=;j<=n;j++)
- {
- if(s[j][i]=='') x++;
- else y++;
- }
- if(x>y) ans[i]=;
- else ans[i]=;
- }
- for(int i=;i<l;i++) printf("%d",ans[i]);
- fclose(stdin);fclose(stdout);
- return ;
- }
- /*
- 当R 和 G 的大小超过了 N 时,L 的最小值就是 1,R,G 的规模就降到了 2000 以内。
- 显然要采用二分答案的方法。法坛的位置按照从小到大进行排序。令 dp[i][j]表示,在用了 i次红光,j 次绿光的情况下,最多从第一座法坛开始,一直摧毁到第几座法坛。
- dp[i][j] = max ( P[dp[i-1][j] + 1], Q[dp[i][j-1] + 1] )。其中 P[k]表示使用一次红光,
- 能从第 k 座法坛向右(正向为右)连续摧毁到第几座,Q[k]表示使用一次绿光,能从第 k 座
- 法坛向右连续摧毁到第几座。 P 和 Q 数组可以通过预处理得到。判断 dp[R][G]的值是否为 N 即可。
- */
- #include <cstdio>
- #include <cstring>
- #include <algorithm>
- #define N 2007
- using namespace std;
- int n,p,q,a[N],l=,r,ans;
- int dp[N][N],P[N],Q[N];
- bool check(int L)
- {
- memset(dp,,sizeof(dp));
- memset(P,,sizeof(P));
- memset(Q,,sizeof(Q));
- for (int i=;i<=n;i++)
- for (int j=i;j<=n;j++)
- {
- if (a[j]-a[i]+<=L) P[i]=j;
- if (a[j]-a[i]+<=*L) Q[i]=j;
- }
- P[n+]=Q[n+]=n;
- for (int i=;i<=p;i++)
- for (int j=;j<=q;j++)
- {
- if (i>) dp[i][j]=max(dp[i][j],P[dp[i-][j]+]);
- if (j>) dp[i][j]=max(dp[i][j],Q[dp[i][j-]+]);
- }
- return dp[p][q]==n;
- }
- int main()
- {
- freopen("light.in", "r", stdin);
- freopen("light.out", "w", stdout);
- scanf("%d%d%d", &n,&p,&q);
- for (int i=;i<=n;i++)
- scanf("%d",&a[i]);
- sort(a+,a++n);
- a[]=;
- r=a[n]-a[]+;
- if (p+q>=n) {printf("1\n"); return ;}
- while (l<=r)
- {
- int mid=(l+r)/;
- if (check(mid)) ans=mid,r=mid-; else l=mid+;
- }
- printf("%d\n",ans);
- return ;
- }
- /*
- 1到n的次短路长度必然产生于:从1走到x的最短路 + edge[x][y] + y到n的最短路
- 首先预处理好1到每一个节点的最短路,和n到每一个节点的最短路
- 然后枚举每一条边作为中间边(x,y)或者(y,x),如果加起来长度等于最短路长度则跳过,否则更新。
- 到x的最短路 + edge[x][y] + y到n的最短路 给dist[n] 比较 找大于dist[n] 且是最小的那一个
- */
- #include <cstdio>
- #include <cstring>
- #include <queue>
- #include <algorithm>
- #define R 100007
- #define INF 0x3f3f3f3f
- using namespace std;
- int num,n,m;
- int dist1[R],dist2[R],head[R];
- bool vis[R];
- struct Node
- {
- int v;int w;int next;
- } edge[R*];
- void init()
- {
- num=;
- memset(head,-,sizeof(head));
- memset(dist1,0x3f,sizeof(dist1));
- memset(dist2,0x3f,sizeof(dist2));
- }
- void add(int u,int v,int w)
- {
- edge[num].v=v;edge[num].w=w;
- edge[num].next=head[u];head[u]=num++;
- }
- void SPFA(int u,int *dist)
- {
- int i,v,w;
- queue<int> Q;
- memset(vis,false,sizeof(vis));
- dist[u]=;vis[u]=true;Q.push(u);
- while(!Q.empty())
- {
- u=Q.front();Q.pop();
- vis[u]=false;
- for(i=head[u]; i!=-; i=edge[i].next)
- {
- v=edge[i].v;
- w=edge[i].w;
- if(dist[v]>dist[u]+w)
- {
- dist[v]=dist[u]+w;
- if(!vis[v])
- {
- vis[v]=true;
- Q.push(v);
- }
- }
- }
- }
- }
- int main()
- {
- freopen("maze.in","r",stdin);
- freopen("maze.out","w",stdout);
- scanf("%d%d",&n,&m);
- int u,v,w;;
- init();
- for(int i=;i<=m;i++)
- {
- scanf("%d%d%d",&u,&v,&w);
- add(u,v,w);add(v,u,w);
- }
- SPFA(,dist1);
- SPFA(n,dist2);
- int ans=INF;
- for(int i=;i<=n;i++)
- {
- for(int j=head[i]; j!=-; j=edge[j].next)
- {
- v=edge[j].v;w=edge[j].w;
- int tem=dist1[i]+dist2[v]+w;
- if(tem>dist1[n] && tem<ans) ans=tem;
- }
- }
- printf("%d\n",ans);
- return ;
- }
- NOIP2018 模拟试题(二) 提高组
- 更多咨询:北京信息学窦老师QQ3377089232
- NOIP2018提高组模拟题(二)
- (请选手务必仔细阅读本页内容)
- 一.题目概况
- 中文题目名称 咒语 神光 迷宫
- 英文题目与子目录名
- curse light maze
- 可执行文件名
- curse light maze
- 输入文件名
- curse.in light.in maze.in
- 输出文件名
- curse.out light.out maze.out
- 每个测试点时限 秒 秒 秒
- 测试点数目
- 每个测试点分值
- 结果比较方式 全文比较(过滤行末空格及文末回车)
- 题目类型 传统 传统 传统
- 二.提交源程序文件名
- 对于 pascal 语言
- curse.pas light.pas maze.pas
- 对于 C 语言
- curse.c light.c maze.c
- 对于 C++语言
- curse.cpp light.cpp maze.cpp
- 三.运行内存限制
- 内存上限
- 512M 512M 512M
- NOIP2018 模拟试题(二) 提高组
- 更多咨询:北京信息学窦老师QQ3377089232
- 、咒语
- (curse.pas/c/cpp)
- 【题目描述】
- 亮亮梦到自己来到了魔法城堡, 但一扇巨大的石门阻拦了他通向城堡内的路。
- 正当他沮丧之际,突然发现门上有一处机关,机关上有一张很长的纸条。
- 亮亮拿起纸条的一端,只见上面写着打开机关的方法: “打开机关需要念动
- 符咒,咒语是一串长为 L 的由 和 组成的字符串。在这张长纸条上列了 n 个
- 长为 L 的字符串,正确的咒语即是在纷繁的 ^L 种字符串中,与这些纸条上的
- 字符串相异度之和最小,并且在满足这一条件下, 的个数最多的字符串。两个
- 字符串的相异度定义为对应位置不相等的字符对的个数。如‘’和‘’的
- 相异度为 ,因为它们有且只有第二个位置上的字符不相等。”
- 亮亮拉起纸条,只觉得纸条似乎永远也拉不完。这上面有着数以万计的字符
- 串,而每一个字符串的长度也或百或千,以人力看来是无法得到正确的咒语。你
- 能帮帮他,让他得以进入魔法城堡,一窥其中的奥秘吗?
- 【输入格式】
- 第一行为一个数字 N 。
- 接下来的 N 行, 每行为一个长为 L 的 字符串。 数据保证 N 个字符串等长。
- 【输出格式】
- 只有一行,是一个长为 L 的字符串 S,即为正确的咒语。
- 【样例输入】
- 【样例输出】
- 【数据规模】
- 对于 %的数据,N<=;
- 对于 %的数据,N<=;
- 对于 %的数据,<=N<=,<=L<=。
- NOIP2018 模拟试题(二) 提高组
- 更多咨询:北京信息学窦老师QQ3377089232
- 、神光
- (light.pas/c/cpp)
- 【题目描述】
- 亮亮成功地念出了咒语,石门缓缓地自动移开,一道道绚丽的神光从城堡内
- 激射而出。亮亮好奇而又兴奋地走入了城堡中,迎面有一座极长的魔法阵。
- 魔法阵可以看作一条直线,它被均匀地分成了 个位置,一个位
- 置可以看成是一个格子。有些位置上筑有法坛,一共 N座。亮亮只有破了眼前
- 的魔法阵,才能继续前进,而欲破法阵,必须毁掉所有的法坛。
- 亮亮身前有两根法杖:一根颜色血红,能发红色神光,光芒可以笼罩连续 L
- 个位置,并摧毁这 L 个位置上所有的法坛,最多使用 R 次;另一根颜色碧绿,
- 能发绿色神光,光芒可以笼罩连续 2L 个位置,并摧毁这 2L 个位置上所有的法
- 坛,最多使用 G 次。
- 法杖的神奇之处在于,L 的值必须由亮亮事先设定好,并且一经设定,便无
- 法更改。亮亮需要在规定的次数下摧毁所有法坛,并且使得 L 最小。
- 【输入格式】
- 第一行三个整数 N, R, G。
- 第 i (<=i<=n+) 行一个整数
- i
- A ,表示第 i 座法坛的位置。
- 【输出格式】
- 只有一个整数,表示L 的最小值。
- 【样例输入】
- 【样例输出】
- 【样例解释】
- 亮亮将 L 设为 ,并用红色神光笼罩 - 位置,用绿色神光笼罩 - 位置。
- 【数据规模】
- 对于50%的数据,N <= ;
- 对于100%的数据, <= N <= , <= R, G,
- i
- A <= ,,,。
- NOIP2018 模拟试题(二) 提高组
- 更多咨询:北京信息学窦老师QQ3377089232
- 、迷宫
- (maze.pas/c/cpp)
- 【题目描述】
- 破了魔法阵后,亮亮进入了一座迷宫。这座迷宫叫做“梦境迷宫” ,亮亮只
- 有走出这座迷宫,才能从睡梦中醒来。
- 梦境迷宫可以用无向图来表示。它共有 n 个点和 m 条双向道路,每条道路
- 都有边权,表示通过这条道路所需的时间,且每条道路可以多次经过。亮亮位于
- 一号点,而出口则是 n 号点。原本,亮亮该找到一条最短路,快速冲出迷宫,然
- 而,梦境迷宫的特殊之处在于,如果沿着最短路到达出口,亮亮就会永远陷入梦
- 境。因此,亮亮必须寻找一条次短路。次短路的长度须严格大于最短路(可以有
- 多条)的长度,同时又不大于所有除最短路外的道路的长度。
- 你的任务,就是编写一个程序,帮助亮亮找到通向出口的次短路。
- 【输入格式】
- 第一行有两个整数 n、m,表示迷宫内共有 n 个点,m 条边。
- 接下来 m 行,每行三个整数 x、y、z,表示结点 x 和 y 之间连有一条边权为
- z 的无向边。
- 【输出格式】
- 一个整数,表示次短路的长度。
- 【样例输入】
- 【样例输出】
- 【样例解释】
- 最短路: -> -> (长度为 +=)
- 次短路: -> -> -> (长度为 ++=)
- 【数据规模】
- 对于 %的数据, <= n <= , <= m <= ,。
- 对于 %的数据, <= z <= ,z 表示无向边的边长。
题面
10.17NOIP模拟赛的更多相关文章
- 2018.10.17NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 100 +100\) 实际得分:\(100 + 100 + 60\) 辣鸡模拟赛.. 5min切掉T1,看了一下T2 T3,感觉T3会被艹爆因为太原了.. 淦了20 ...
- [10.18模拟赛] 序列 (DP)
[10.18模拟赛] 序列 题目描述 山山有一个整数序列s1,s2,-,sn,其中1≤si≤k. 求出有多少个准确移除m个元素后不同的序列.答案模(1e9+7) 输入 输入包括几个测试用例,并且由文件 ...
- [10.12模拟赛] 老大 (二分/树的直径/树形dp)
[10.12模拟赛] 老大 题目描述 因为 OB 今年拿下 4 块金牌,学校赞助扩建劳模办公室为劳模办公室群,为了体现 OI 的特色,办公室群被设计成了树形(n 个点 n − 1 条边的无向连通图), ...
- EZ 2018 06 10 NOIP2018 模拟赛(十八)
好久没写blog&&比赛题解了,最近补一下 这次还是很狗的,T3想了很久最后竟然连并查集都忘写了,然后T2map莫名爆炸. Rating爆减......链接不解释 好了我们开始看题. ...
- 洛谷P1667/[10.22 模拟赛] 数列 (思维+模拟)
洛谷P1667 数列 题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足\(A_X +A_{ ...
- 2018.10.23NOIP模拟赛解题报告
心路历程 预计得分:\(100 + 50 + (10 \sim 50)\) 实际得分:\(100 + 10 + 50\) 这可能是我打的最懵逼的一场考试没有之一.. T1两个小时才做出来也是醉了. T ...
- 17.2.10 NOIP模拟赛 聪哥的工资
聪哥的工资 (money/money.in/money.out) 时限1000ms 内存256MB 题目描述 lwher: 了体验劳苦大众的生活,聪哥在暑假参加了打零工的活动,这个活动分为n个工作日, ...
- 2019.10.18模拟赛T3
题目大意: 求$\sum\limits_{i=1}^n\sum\limits_{j=1}^n[lcm(i,j)>n](n\leq 10^{10})$的值. 题解: 这题貌似有n多种做法... 为 ...
- 2019.10.02模拟赛T3
题目大意: 设$S(n,m)$为第二类斯特林数,$F_i$表示斐波那契数列第$i$项. 给定$n,R,K$,求$\sum\limits_{i=1}^{n}(\sum\limits_{m=1}^{R}F ...
随机推荐
- matplotlib多种绘图方式
目录 散点图 条形图 直方图 总结 散点图 假设通过爬虫你获取到了北京2016年3,10月份每天白天的最高气温(分别位于列表a,b),那么此时如何寻找出气温和随时间(天)变化的某种规律? a = [1 ...
- (dede)织梦系统二次开发笔记
(dede)织梦系统二次开发记录 --soulsjie 一.模板常用文件说明 模板文件都在文件夹templets下,我们以默认模板(default)为例,对模板文件结构进行分析: 首页模板文件目录 \ ...
- android开发里跳过的坑——调用已安装视频播放器在有些机器上无效
调用已安装视频播放器播放未修改之前的代码 private void startPlay(String fileName){ File file = new File(fileName); Intent ...
- 中国福利彩票,牛B,开奖和数据传输有什么关系?
昨天,由中国教育电视台直播的福利彩票“双色球”15011期开奖,在没有事先预告的情况下突然取消.晚上11点40分左右,中国福利彩票发行管理中心唯一指定网络信息发布媒体——中彩网官方微博出乎意料地在网上 ...
- MongoDB小结18 - find【查询条件$not】
not 是元条件句,可以用于任何条件之上,意为取反
- Oracle SqlPlus导出查询结果
Oracle SqlPlus导出查询结果 在sqlplus下导出查询的结果保存到本地sql文件中,可以采用如下方式:1.连接数据库: sqlplus xmq/xmqpwd@192.168.1.57:1 ...
- 在虚拟机搭建JStrom
原文:http://blog.csdn.net/u014134180/article/details/51810311 一 安装步骤 二 搭建Zookeeper集群 1 ZooKeeper 单机安装与 ...
- sqlit中使用到的查询语句
近期使用sqlite查询比較多,包含连表查询等. 记录一下.以免忘记! 1.先依据时间排序后选择前十条: select * from MyBill order by createTime desc ...
- CentOS 5.11开启VNC Service
1. #yum install vncserver 2. #vncpasswd 此密码将成为vnc的login password password: ...
- 基于Office 365 无代码工作流分析-数据源的建立!
标准操作步骤 下面整个步骤我们是以嘉昊信息的招聘过程的整个流程为一个场景,整个的流程场景的步骤例如以下: 整个的过程,我们通过Infopath 进行对应的表单流转,然后利用Sharepoint ...