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的更多相关文章
随机推荐
- 扩展GridView实现无数据处理
提出需求 GridView控件在开发后台管理的时候非常方便快速,但是要实现没有数据时显示“没有数据”,并居中,是一件比较麻烦的事情,这里在一个公开的方法里实现了绑定List<T>和Data ...
- [2017-2018上Java助教]个人信息收集
在本学期的Java课程中,我们要收集的信息如下 1.学号 .码云地址 3.博客园地址 请各位同学自行创建,并按照如下的格式评论在这篇博客下方 学号+https://git.oschina.net/as ...
- 自己编写服务启动脚本(一):functions文件详细分析和说明
本文目录: 1.几个显示函数2.action函数3.is_true和is_false函数4.confirm函数5.pid检测相关函数 5.1 checkpid.__pids_var_run和__pid ...
- 数据库学习任务四:数据读取器对象SqlDataReader、数据适配器对象SqlDataAdapter、数据集对象DataSet
数据库应用程序的开发流程一般主要分为以下几个步骤: 创建数据库 使用Connection对象连接数据库 使用Command对象对数据源执行SQL命令并返回数据 使用DataReader和DataSet ...
- 深度神经网络在量化交易里的应用 之二 -- 用深度网络(LSTM)预测5日收盘价格
距离上一篇文章,正好两个星期. 这边文章9月15日 16:30 开始写. 可能几个小时后就写完了.用一句粗俗的话说, "当你怀孕的时候,别人都知道你怀孕了, 但不知道你被日了多少回 ...
- 201521123014 《Java程序设计》第7周学习总结
1. 本周学习总结 2. 书面作业 Q1 ArrayList代码分析 1.1 解释ArrayList的contains源代码 先看看contains的源代码: public boolean conta ...
- 201521123071 《JAVA程序设计》第七周学习总结
第7周-集合 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 1.1 Iterator<E> iterator(); //iterator()返回一个实现了It ...
- 201521123004《Java程序设计》第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 本周主要内容为: 继承:extends 抽取共同特征(行为与属性) 复用代码 继承时子类将获 ...
- 201521123105 第三周Java学习总结
1. 本周学习总结 对象(实际个体) 对象与类 类(模板) 2.书面作业 1.代码阅读 public class Test1 { private int i = 1;//这行不能修改 private ...
- 201521123048 《Java程序设计》第1周学习总结
一 本周学习总结 第一周我们了解了java及其它的由来.刚开始学java显的特别吃力,对于一些概念和程序执行步骤什么的都不好理解,也有很多在编程时容易出错的地方需要花时间理解和记忆.初步一周下来,在我 ...