NOIP2017SummerTraining0710
个人感受:这套题,题目泄露,没什么好打的,第一题刚开始题目理解错误,后来还行,第二道题,打了一个50还是60分的dp,第三道暴力过了小数据,拿了200分,排名15+。
问题 A: 七天使的通讯
时间限制: 2 Sec 内存限制: 256 MB
提交: 427 解决: 126
[提交][状态][讨论版]
题目描述
输入
输出
对于每个询问,输出一行“sane”表示有可行方案、“non”表示无解
样例输入
1 7 5 1 3 2 7 3 4 7 4 6 5
样例输出
sane
提示
【样例解释】
样例中共有一个询问。

在(1,3)、(4,7)、(5,6)之间连黑色通道,在(2,7)、(3,4)之间连白色通道,每条通道都成功建立,且同种颜色的通道没有相交,所以输出sane。
【数据规模和约定】
对于 20%的数据,1<=n<=50,1<=m<=15
对于
50%的数据,1<=n<=1000,1<=m<=300
对于
100%的数据,1<=n<=5000,1<=m<=1000,1<=T<=10,1<=a<=n,1<=b<=n
数据保证每对(a,b)不重复,且a不等于b
【提示】
当两条线路有一对相同的端点时,这两条线路不相交。
也就是说,对于线路(a,b)和线路(c,d)(a<b且c<d),当且仅当a<c<b<d或者c<a<d<b时这两条线路相交。
这题比较水吧,黑白染色法就可以过了,因为通道不能相较,输入的时候就判断,然后连边就可以了。
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<string>
using namespace std;
];
],next[],rea[];
struct fzy
{
int l,r;
}a[];
bool check(int i,int j)
{
;
;
;
;
}
void add(int u,int v)
{
cnt++;
next[cnt]=head[u];
head[u]=cnt;
rea[cnt]=v;
}
void dfs(int u)
{
;i=next[i])
{
int v=rea[i];
)
{
color[v]=color[u]^;
dfs(v);
}
}
}
int main()
{
scanf("%d",&CAS);
while (CAS--)
{
cnt=;
memset(head,-,sizeof(head));
memset(color,-,sizeof(color));
scanf("%d%d",&n,&m);
;i<=m;i++)
{
scanf("%d%d",&a[i].l,&a[i].r);
if (a[i].l>a[i].r) swap(a[i].l,a[i].r);
;j<i;j++)
if (check(i,j))
{
add(i,j);
add(j,i);
}
}
;i<=m;i++)
)
{
color[i]=;
dfs(i);
}
;
;i<=m;i++)
{
;j=next[j])
{
int u=i,v=rea[j];
if (color[u]==color[v])
{
flag=;
break;
}
}
) break;
}
) printf("non\n");
else printf("sane\n");
}
}
都市环游
时间限制: 1 Sec 内存限制: 512 MB
提交: 262 解决:
93
[提交][状态][讨论版]
题目描述
输入
输出
样例输入
5 17 7 0 2 4 5 3 1 2 2 1 1 3 3 1 1 4 4 1 4 5 5 4 5 3 4 1 2 1 5 3 2 1 2 1 1 2 2 1 1 3
样例输出
245
提示
花了10分钟左右打了一个dp,拿了50分,后来发现hi<=70后来想到了快速幂,矩阵乘法,就可以了,到所有路径的方案数是确定的。
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
#include<cstring>
using namespace std;
;
;
int n,m,t;
},f[NN][NN]={},road[NN][NN]={};
};
void solve(int num)
{
;i<NN;i++)
fzy[i][i]=;
while (num)
{
};
==)
{
;i<=n;i++)
;j<=n;j++)
;k<=n;k++)
xx[i][j]=(xx[i][j]+fzy[i][k]*road[k][j])%MOD;
;i<=n;i++)
;j<=n;j++)
fzy[i][j]=xx[i][j];
}
memset(xx,,sizeof(xx));
;i<=n;i++)
;j<=n;j++)
;k<=n;k++)
xx[i][j]=(xx[i][j]+road[i][k]*road[k][j])%MOD;
;i<=n;i++)
;j<=n;j++)
road[i][j]=xx[i][j];
num/=;
}
;i<=n;i++)
;j<=n;j++)
) f[][j]=(f[][j]+f[][i]*fzy[i][j])%MOD;
printf(][n]);
}
int main()
{
scanf("%d%d%d",&n,&m,&t);
;i<=n;i++)
scanf("%d",&a[i]);
int x,y;
;i<=m;i++)
{
scanf("%d%d",&x,&y);
road[x][y]++;
}
;i<=n;i++)
road[i][i]++;
f[][]=;
;i<=;i++)
;j<=n;j++)
;k<=n;k++)
) f[i][k]=(f[i][k]+f[i-][j]*road[j][k])%MOD;
) printf("%d\n",f[t][n]);
);
}
大水题
时间限制: 1 Sec 内存限制: 512 MB
提交: 204 解决:
27
[提交][状态][讨论版]
题目描述
位的数的生成矩阵A 为一个大小为n*n
且Aij
为这个数的第i*n+j-n位的矩阵。
位的数k,他想知道所有小于等于k
的数的n*n
生成矩阵有多少种。(如果不足n^2 位则补前缀零)
输入
输出
样例输入
2 1000
样例输出
954
提示
<=1000,且n为偶数
度后可以重叠,则称这两个矩阵是相同的。
30分的代码好打,但是满分的数位dp难想。
NOIP2017SummerTraining0710的更多相关文章
随机推荐
- Redis订阅和发布模式和Redis事务
-------------------Redis订阅和发布模式------------------- 1.概念 Redis 发布订阅(pub/sub)是一种消息通信模式: 发送者(pu ...
- 编辑sass报错:error style.scss (Line 3: Invalid GBK character "\xE5")解决办法
cmd.exe /D /C call C:/Ruby23-x64/bin/scss.bat --no-cache --update header.scss:header.css error heade ...
- Servlet和JSP生命周期概述
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt374 Servlet生命周期分为三个阶段: 1,初始化阶段 调用init( ...
- pip 警告!The default format will switch to columns in the future
pip警告! DEPRECATION: The default format will switch to columns in the future. You can use --format=(l ...
- Git和Github简单教程(收藏)
原文链接:Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的 ...
- nginx小问题
配置nginx与ftp图片服务器:安装后,要在/usr/local/nginx/conf/nginx.conf里面的server中(带有localhost的那一块)修改为location \ {roo ...
- Spring Cloud官方文档中文版-客户端负载均衡:Ribbon
官方文档地址为:http://cloud.spring.io/spring-cloud-static/Dalston.SR2/#_spring_cloud_netflix 文中例子我做了一些测试在:h ...
- CSS3动画效果之transition
CSS3中有两种方式实现动画,transition和animation+@keyframe. 两者的作用机制不一样:transition定义在可能要进行动画的元素上,对某些CSS属性进行监听,一旦CS ...
- 201521123095 《Java程序设计》第3周学习总结
,1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面 ...
- 201521123103 《Java学习笔记》第二周学习笔记
一.本周学习总结 1.学习了数据类型的使用:整数类型.浮点类型. boolean类型.数组等以及类型的转换,最重要的是学会了import引用包: 2.学习了string类对象的拼接.字符串池.枚举类型 ...