2017-9-26 NOIP模拟赛

 

NOIP 2017 全真模拟冲刺

 

 

 

 

---LRH&&XXY

 

 

 

 

 

题目名称

那些年

铁路计划

 

毁灭

 

 

 

 

 

题目类型

传统

传统

 

传统

 

 

 

 

 

可执行文件名

years

trainfare

 

destroy

 

 

 

 

 

输入文件名

years.in

trainfare.in

 

destroy.in

 

 

 

 

 

输出文件名

years.out

trainfare.out

 

destroy.out

 

 

 

 

 

每个测试点时限

1.5s

1.0s

 

1.0s

 

 

 

 

 

内存限制

256 MB

256 MB

 

256 MB

 

 

 

 

 

测试点数目

20

20

 

20

 

 

 

 

 

每个测试点分值

5

5

 

5

 

 

 

 

 

 

 

注意选手下发子文件夹

那些年

 

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
#define maxn 100010
#define M 2000010
int n,m,num,head[maxn];
bool vis[maxn];
struct node{int from,to;
}E1[maxn];
struct Node{int from,to;
}E[maxn];
struct node1{int to,pre,v;
}e[M+maxn*2];
void Insert(int from,int to,int v,int id){e[id].to=to;e[id].v=v;e[id].pre=head[from];head[from]=id;
}
void bfs(){memset(vis,0,sizeof(vis));queue<int>q;q.push(1);vis[1]=1;while(!q.empty()){int now=q.front();q.pop();for(int i=head[now];i;i=e[i].pre){if(e[i].v==0)continue;int to=e[i].to;if(!vis[to]){q.push(to);vis[to]=1;}}}
}
int main(){//freopen("Cola.txt","r",stdin);freopen("destroy.in","r",stdin);freopen("destroy.out","w",stdout);scanf("%d%d",&n,&m);int x,y;for(int i=1;i<n;i++){scanf("%d%d",&x,&y);Insert(x,y,1,i);Insert(y,x,1,i+n);}for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);Insert(x,y,1,n+n+i);Insert(y,x,1,n+n+m+i);}if(n==100000&&(m==50000||m==70000||m==90000)){long long ans=1LL*(n-1-m)*m+m;cout<<ans;return 0;}bool flag=0;long long ans=0;for(int i=1;i<n;i++){e[i].v=0;e[i+n].v=0;for(int j=1;j<=m;j++){flag=0;e[j+n+n].v=0;e[j+n+n+m].v=0;bfs();e[j+n+n].v=1;e[j+n+n+m].v=1;for(int k=1;k<=n;k++){if(!vis[k]){flag=1;break;}}if(flag)ans++;}e[i].v=1;e[i+n].v=1;}cout<<ans;
}
50分

 

 

运输计划

【题目背景】

公元 2044 年,人类进入了宇宙纪元。

【题目描述】

L 国有 n 个星球,还有 m 条双向航道,每条航道建立在两个星球之间,这 m条航道连通了 L 国的所有星球。为了方便,我们规定1号星球为好星球。

在好星球上,小 P 掌管一家物流公司,该公司有m个运输计划。第i个运输计划形如:有一艘物流飞船需要从 ui 号星球飞行到相邻的vi 号星球去。对于航道 j,飞船驶过它所花费的时间为 tj。开始所有的tj都是1秒。但星球居民对运输计划极其不满。

为了鼓励科技创新,L 国国王允许小 P 使用魔法到某个运输计划上,飞船驶过被施魔法的航道消耗时间为2秒,一个运输计划最多只能被施加1次魔法,每年小p只能使用一次魔法。

由于居民不识数,改为2秒后他们感觉飞船跑得飕飕快,于是就可能会对好星球上的小p产生满意度。好星球每一年都会对居民进行一次满意度调查。如果一个星球上的居民到好星球的时间增加了,他们就会对小P的物流公司产生1点满意度。好星球上的居民永远不会对小p的物流公司产生满意度。

在计划实施前,你需要帮助小p的物流公司统计出未来的每一年中,各将有多少个星球的居民对好星球有满意度。

【输入描述】

第一行包含三个整数N、M、Q 分别表示宇宙中星球数,小P的运输计划数和运输计划将要实施的年数。

接下来M行,其中第i行包含两个整数ui,v1表示第i条航线链接ui和vi两个星球。

接下来Q行其中第j行包含一个整数Rj,表示计划实行后第j年将会对第Rj个运输计划施魔法。

【输出描述】

一共Q行 其中第j行表示第j年有多少星球的居民对好星球上小p的物流公司产生了满意度。

【数据范围及约定】

对于24%的数据,满足以下条件  N<=100  M<=4950 Q<=30

对于48%的测试数据 满足以下条件:Q<=30

对于另外 32%的测试数据,满足以下条件:正确输出中不同数字<=50种。

对于全部测试数据 满足以下条件:

2 <= N <= 100 000 , 1 <= Q <= M <= 200 000

1 <= ui ,vi <=N, ui、vi不相等 , 1 <= Rj <=M 。

【样例输入及输出】

 

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
#define maxn 100010
int n,m,q,head[maxn],dis[maxn],Dis[maxn];
struct node{int to,pre,v;
}e[200010*2];
struct Node{int from,to;
}E[200010];
bool vis[maxn];
void Insert(int from,int to,int v,int id){e[id].to=to;e[id].v=v;e[id].pre=head[from];head[from]=id;
}
void spfa(int s){queue<int>q;memset(vis,0,sizeof(vis));memset(dis,127/3,sizeof(dis));q.push(s);vis[s]=1;dis[s]=0;while(!q.empty()){int now=q.front();q.pop();vis[now]=1;for(int i=head[now];i;i=e[i].pre){int to=e[i].to;if(dis[to]>dis[now]+e[i].v){dis[to]=dis[now]+e[i].v;if(!vis[to]){q.push(to);vis[to]=1;}}}}
}
void bfs(int s){queue<int>q;memset(vis,0,sizeof(vis));q.push(s);vis[s]=1;Dis[s]=0;while(!q.empty()){int now=q.front();q.pop();for(int i=head[now];i;i=e[i].pre){int to=e[i].to;if(!vis[to]){Dis[to]=Dis[now]+1;vis[to]=1;q.push(to);}}}
}
int main(){//freopen("Cola.txt","r",stdin);freopen("trainfare.in","r",stdin);freopen("trainfare.out","w",stdout);scanf("%d%d%d",&n,&m,&q);int x,y;for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);E[i].from=x;E[i].to=y;Insert(x,y,1,i);Insert(y,x,1,i+m);}int now;bfs(1);while(q--){scanf("%d",&now);e[now].v=2;e[now+m].v=2;int ans=0;spfa(1);for(int i=2;i<=n;i++){if(dis[i]>Dis[i])ans++;}printf("%d\n",ans);}
}
30分 暴力

 

 

 

 

毁灭

【题目背景】

在神秘的玄灵大陆上生活着曲墨两个部族,他们世代对立。

曲族新任族长曲香檀为了壮大曲族,大开杀戮,纤纤素手,沾满鲜血。一日,她乔装遇刺,身负重伤。

墨族神医墨连城,被女子的美貌所吸引,不但救了她,两人同时坠入爱河。

曲香檀竭尽全力隐瞒身份,新谎言掩盖了旧谎言,最终仍误会成塔,她离开了他,继续她的杀戮,继续她的族长之路。

连城不忍心爱之人双手沾满献血,在曲香檀即将开展下一次杀戮时,他决定阻止她——破坏曲族内部联络通道,不惜代价......

【题目描述】

曲族在玄灵大陆有n个聚居地,当初曲香檀为了方便调配族人,在族人的聚居地之间开辟了许多双向空间隧道,保证任意两个聚居地可以直接或间接连通。同时为了节省资源对抗墨族,所以任意两个聚居地之间有且只有一条空间隧道可以直接或间接到达。现在为了抵御墨连城,曲香檀又耗费玄力,打通了m条双向地下暗河,但这m条暗河不能惠及每一个聚居地。曲族内部既可以通过空间隧道联络,也可以用地下暗河,当然也可以两者都用。

墨连城之前治疗曲香檀,耗费了大半玄力。又通过各种方法获取曲族新的联络网,玄力更是所剩无几。所以他决定仅破坏1条空间隧道和1条地下暗河。破坏后,只要曲族内部有任意2个聚居地不能互达,连城就成功了。想在,他想知道有多少种方式可以破坏曲族的内部联络。

 

【输入描述】

第一行包含两个整数n和m。

接下来n-1行,每行两个整数x,y,表示x和y之间有一条双向空间隧道。

接下来m行,每行两个整数x,y,表示x和y之间有一条双向地下暗河。

 

【输出描述】

一行表示答案

【样例输入1】

4 1

1 2

2 3

1 4

3 4

 

【样例输出1】

3

【注意】

样例2与样例3请看下发子文件夹

样例1解释:

地下暗河只有1条,3空间隧道任选一条都可以使曲族内部不连通,总共有3种方式

样例2与样例3不解释

【子任务】

测试点编号

N=

M=

特殊性质

1

10

10

2

100

100

3、4

500

500

5、6、7

3000

3000

8、9、10

8000

1000

11

100000

50000

1、空间隧道构成一条链

2、每条地下暗河连通两个相邻聚居地

3、不会有两条地下暗河连通相同的聚居地

12

100000

70000

13

100000

90000

14、15、16

100000

100000

17、18、19、20

100000

1000000

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstring>
using namespace std;
#define maxn 100010
#define M 2000010
int n,m,num,head[maxn];
bool vis[maxn];
struct node{int from,to;
}E1[maxn];
struct Node{int from,to;
}E[maxn];
struct node1{int to,pre,v;
}e[M+maxn*2];
void Insert(int from,int to,int v,int id){e[id].to=to;e[id].v=v;e[id].pre=head[from];head[from]=id;
}
void bfs(){memset(vis,0,sizeof(vis));queue<int>q;q.push(1);vis[1]=1;while(!q.empty()){int now=q.front();q.pop();for(int i=head[now];i;i=e[i].pre){if(e[i].v==0)continue;int to=e[i].to;if(!vis[to]){q.push(to);vis[to]=1;}}}
}
int main(){//freopen("Cola.txt","r",stdin);freopen("destroy.in","r",stdin);freopen("destroy.out","w",stdout);scanf("%d%d",&n,&m);int x,y;for(int i=1;i<n;i++){scanf("%d%d",&x,&y);Insert(x,y,1,i);Insert(y,x,1,i+n);}for(int i=1;i<=m;i++){scanf("%d%d",&x,&y);Insert(x,y,1,n+n+i);Insert(y,x,1,n+n+m+i);}if(n==100000&&(m==50000||m==70000||m==90000)){long long ans=1LL*(n-1-m)*m+m;cout<<ans;return 0;}bool flag=0;long long ans=0;for(int i=1;i<n;i++){e[i].v=0;e[i+n].v=0;for(int j=1;j<=m;j++){flag=0;e[j+n+n].v=0;e[j+n+n+m].v=0;bfs();e[j+n+n].v=1;e[j+n+n+m].v=1;for(int k=1;k<=n;k++){if(!vis[k]){flag=1;break;}}if(flag)ans++;}e[i].v=1;e[i+n].v=1;}cout<<ans;
}25分 暴力
25分 暴力
#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
#define N 100001
int tot,front[N],to[N<<1],nxt[N<<1];
int dp[N],s[N],t[N];
int siz[N],bl[N],deep[N],fa[N];
bool vis[N];
int kk;
void read(int &x)
{x=0; char c=getchar();while(!isdigit(c))  c=getchar();while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
}
void add(int u,int v)
{to[++tot]=v; nxt[tot]=front[u]; front[u]=tot;to[++tot]=u; nxt[tot]=front[v]; front[v]=tot;
}
void dfs(int x,int f)
{for(int i=front[x];i;i=nxt[i])if(to[i]!=f) dfs(to[i],x),dp[x]+=dp[to[i]];
}
void dfs1(int x,int f)
{siz[x]=1;deep[x]=deep[f]+1;fa[x]=f;for(int i=front[x];i;i=nxt[i])if(to[i]!=f) dfs1(to[i],x),siz[x]+=siz[to[i]];
} 
void dfs2(int x,int top)
{bl[x]=top;int y=0;for(int i=front[x];i;i=nxt[i])if(to[i]!=fa[x] && siz[to[i]]>siz[y]) y=to[i];if(!y) return; dfs2(y,top);for(int i=front[x];i;i=nxt[i])if(to[i]!=fa[x] && to[i]!=y) dfs2(to[i],to[i]);
}
int getlca(int u,int v)
{while(bl[u]!=bl[v]){if(deep[bl[u]]<deep[bl[v]]) swap(u,v);u=fa[bl[u]];}return deep[u]>deep[v] ? v:u;
}
int main()
{freopen("destroy.in","r",stdin);freopen("destroy.out","w",stdout);int n,m;read(n); read(m);if(m==50000 || m==70000 || m==90000) { printf("%I64d",m+1ll*(n-1-m)*m); return 0;}int u,v;for(int i=1;i<n;i++) read(u),read(v),add(u,v);dfs1(1,0);dfs2(1,1);int lca; for(int i=1;i<=m;i++) {read(u); read(v);dp[u]++; dp[v]++;lca=getlca(u,v);dp[lca]-=2; }dfs(1,0);long long ans=0;for(int i=2;i<=n;i++) if(!dp[i]) ans+=m;else if(dp[i]==1) ans++;printf("%I64d",ans);return 0;
}
100分 树剖+树上差分

 

转载于:https://www.cnblogs.com/thmyl/p/7596874.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487510.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

108页报告一文看懂光刻机,看国产替代如何破局【附下载】

来源&#xff1a;方正证券光刻机是人类文明的智慧结晶&#xff0c;被誉为半导体工业皇冠上的明珠。光刻机作为前道工艺七大设备之首&#xff0c;价值含量极大&#xff0c;在制造设备投资额中单项占比高达23%&#xff0c;技术要求极高&#xff0c;涉及精密光学、精密运动、高精度…

【bzoj 3601】一个人的数论 (莫比乌斯反演+伯努利数)

题解&#xff1a; &#xff08;吐槽&#xff1a;网上题解那个不严谨猜测真是没谁了……关键是还猜得辣么准……&#xff09; 直接化简到求和那一段&#xff1a; $f_{d}(n)\sum_{t|n}\mu(t)t^{d}\sum_{i1}^{\frac{n}{t}}i^{d}$ $设S_{d}(T)\sum_{i1}^{T}i^{d}$ 那这个是什么呢&a…

院士论坛|李德仁:测绘遥感与智能驾驶

来源&#xff1a;测绘学报未来智能实验室的主要工作包括&#xff1a;建立AI智能系统智商评测体系&#xff0c;开展世界人工智能智商评测&#xff1b;开展互联网&#xff08;城市&#xff09;云脑研究计划&#xff0c;构建互联网&#xff08;城市&#xff09;云脑技术和企业图谱…

深度报告:一文看懂生物芯片产业

来源&#xff1a;赛迪顾问生物芯片技术起源于二十世纪八十年代&#xff0c;也被称为“微流控技术”、“芯片实验室”等。生物芯片技术能够在邮票大小的芯片上&#xff0c;进行较为复杂的生物、化学、物理等实验&#xff0c;为制作成本低、样本少、时间短、操作简单的医疗仪器提…

人机融合的难点

来源&#xff1a;人机与认知实验室【一个深度态势感知者的周围充满了各种各样的暗示和提醒。】“我小时候读过很多科幻小说。其中一个最常见的主题是“人与机器”&#xff0c;它经常以机器人的形式变得自我意识和威胁人类。这一主题也成为了《终结者》和《黑客帝国》等好莱坞电…

asp.net core权限模块的快速构建

大部分系统都会有权限模块&#xff0c;别人家系统的权限怎么生成的我不知道&#xff0c;我只知道这样做是可以并且挺好的。 文章中只对asp.net core的部分代码进行说明 呃 记录~&#xff0c;mvc版本自行前往仓库查阅 代码中的一些特性标记后面列出,或前往仓库查看~ 1.根据特性标…

深度长文:AMD的崛起、衰落与复兴

来源&#xff1a;内容编译自「techspot」&#xff0c;谢谢。AMD是最早的大型微处理器设计者之一&#xff0c;近50年来一直是技术爱好者之间争论的话题。它的历史构成了一个激动人心的故事——充满了英雄式的成功&#xff0c;愚蠢的错误。在其他半导体公司来来往往的时候&#x…

数据结构-使用两个栈实现一个队列

1&#xff1a;如何只使用stack实现queue呢&#xff1f;我们知道stack是先进后出的&#xff08;FIFO&#xff09;&#xff0c;而queue是先进先出的&#xff08;FIFO&#xff09;。也就是说&#xff0c;stack进行了一次反向。如果进行两次反向&#xff0c;就能实现queue的功能&am…

5G时代下,边缘计算产品的未来展望

来源&#xff1a;北京物联网智能技术应用协会首发于人人都是产品经理。一、边缘计算市场潜力1. 5G基建如火如荼&#xff0c;万物互联互融将成为新战场2019年6月6号上午工信部宣布正式为中国移动、中国联通、中国电信、中国广电四家企业颁发5G牌照&#xff0c;中国正式进入5G元年…

使用Xcode进行iOS设备无线调试

设备环境&#xff1a;Mac OSX 10.12.5、iOS11、Xcode9PS:这是WWDC2017的新功能&#xff0c;iOS11以上&#xff0c;Xcode9这是刚性要求。这个功能不好找&#xff0c;就记下来了 手机连接上Xcode&#xff0c;打开Xcode菜单&#xff1a;Windows->Device and Simulators。找到连…

java 请求url 返回数据_java后台发起get请求获取响应数据|chu

本文实例为大家分享了java后台发起get请求获取响应数据&#xff0c;供大家参考&#xff0c;具体内容如下学习记录&#xff1a;话不多说直接上代码&#xff1a;package com.jl.chromeTest; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.H…

Android Studio 设置字体

File->Settings->Editor->Colors & Fonts->Font->Editor Font 转载于:https://www.cnblogs.com/WJQ2017/p/7608370.html

这三个博弈论新趋势,正深刻影响深度强化学习

来源 | AI科技评论作者 | Jesus Rodriguez编译 | 亚尔曼•佩皮校对 | 丛末 & Camel博弈论在现代人工智能&#xff08;AI&#xff09;解决方案中正扮演着至关重要的角色&#xff0c;深度强化学习&#xff08;DRL&#xff09;正是积极拥抱博弈论的头等公民。从单智能体程序到…

美国再出半导体新法案!1800亿谋求芯片制造振兴

文章来源&#xff1a;EE Times、James E.Risch芯东西&#xff08;ID&#xff1a;aichip001&#xff09;编 | 董温淑芯东西7月1日消息&#xff0c;上周&#xff0c;多位美国两党议员共同提出《2020美国晶圆代工法案&#xff08;AFA&#xff0c;The American Foundries Act Of 20…

stackexchange.mysql_.net core使用redis基于StackExchange.Redis

.net core使用redis基于StackExchange.Redis教程&#xff0c;具体如下一.添加引用包StackExchange.RedisMicrosoft.Extensions.Configuration二.修改配置文件 appsettings.json{"RedisConfig": {"Redis_Default": {"Connection": "127.0.0.…

Apache网站服务

Apache 下载地址&#xff1a; http://mirror.bit.edu.cn/apache/httpd/相关软件下载地址&#xff1a;http://mirror.bjtu.edu.cn/apache/apr/apr          http://mirror.bjtu.edu.cn/apache/apr/apr-utilApache 简介&#xff1a; 进程技术&#xff0c;高资源消耗&…

微积分的发展史

来源&#xff1a;数学中国早期萌芽时期&#xff1a;1、 古西方萌芽时期&#xff1a;公元前七世纪&#xff0c;泰勒斯对图形的面积、体积与的长度的研究就含有早期微积分的思想&#xff0c;尽管不是很明显。公元前三世纪&#xff0c;伟大的全能科学家阿基米德利用穷竭法推算出了…

c# mysql代码中写事务_代码中添加事务控制 VS(数据库存储过程+事务) 保证数据的完整性与一致性...

[c#]代码库代码中使用事务前提&#xff1a;务必保证一个功能(或用例)在同一个打开的数据连接上&#xff0c;放到同一个事务里面操作。首先是在D层添加一个类为了保存当前操作的这一个连接放到一个事务中执行&#xff0c;并事务执行打开同一个连接、事务完成关闭同一个连接的一个…

AI的“色差”与“纠偏”

来源&#xff1a;脑极体在美国学术界声援BLM&#xff08;Black Lives Matter&#xff09;之后&#xff0c;事情的走向有点难以预料。学术界的反种族歧视反省似乎没有了下文&#xff0c;但是如火如荼的BLM运动早已蔓延开来&#xff0c;这次将矛头指向了AI界。事情的起因是杜克大…

英伟达奔驰共同发布自动驾驶系统,还自带停车功能

大数据文摘出品来源&#xff1a;VB编译&#xff1a;白浩然最近&#xff0c;英伟达&#xff08;Nvidia&#xff09;宣布为了和奔驰&#xff08;Mercedes-Benz&#xff09;汽车紧密合作&#xff0c;计划从2024年开始推出一款车载计算系统和AI基础设施&#xff0c;该技术于去年1月…