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的更多相关文章
随机推荐
- webstom,zencoding,windows快捷键
1.webstorm快捷键: IntelliJ-Idea 的快捷键 Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/*…*/ ) Shift+F6 重构-重命名 Ctrl+X 删除行 C ...
- TC358775XBG:MIPI DSI转双路LVDS芯片简介
TC358775XBG是一颗MIPI DSI转双路LVDS芯片,通信方式:IIC/MIPI command mode,分辨率1920*1200,封装形式:BGA64.
- 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能
Ajax文件上载 利用 FormData 对象和 Spring MVC 配合可以实现Ajax文件上载功能: 步骤 导入组件并准备静态脚本 <dependency> <groupId& ...
- 向GitHub 提交你的源代码
之前的这篇文章「Git入门篇」相信大家都已经对 Git 的基本操作熟悉了,但是这篇文章只介绍了对本地 Git 仓库的基本操作,今天我就来介绍下如何跟远程仓库一起协作,教你们向 GitHub 上提交你们 ...
- JavaScript--我发现,原来你是这样的JS(基础概念--躯壳,不妨从中文角度看js)
介绍 这是红宝书(JavaScript高级程序设计 3版)的读书笔记第二篇(基础概念--躯壳篇),有着部分第三章的知识内容,当然其中还有我个人的理解.红宝书这本书可以说是难啃的,要看完不容易,挺厚的, ...
- C#设计模式(5)-建造者模式
引言 上一篇介绍了设计模式中的抽象工厂模式-C#设计模式(3)-抽象工厂模式,本篇将介绍建造者模式: 点击这里查看全部设计模式系列文章导航 建造者模式简介 建造者模式是将一个复杂对象的构建与表示分离, ...
- poj 3613 floyd + 快速幂
题意:本题的大意就是问从S 到 T 经过边得个数恰为k的最短路是多少. 思路:对于邻接矩阵每一次floyd求的是每个点间的最短距离,则n次floyd就是每个点间n条路的最短距离(可以重复边); 但是由 ...
- 如何写SysV服务管理脚本
本文目录: 1.1 SysV脚本的特性1.2 SysV脚本要具备的能力1.3 start函数分析1.4 stop函数分析1.5 reload函数分析1.6 status.restart.force-r ...
- JS学习五(js中的事件)
[JS中的事件分类] 1.鼠标事件 click/bdlclick/onmouseover/onmouseout 2. HTML事件 onload/onscroll/onsubmit/onchange/ ...
- 201521123083《Java程序设计》第12周学习总结
1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...