个人感受:这套题,题目泄露,没什么好打的,第一题刚开始题目理解错误,后来还行,第二道题,打了一个50还是60分的dp,第三道暴力过了小数据,拿了200分,排名15+。

问题 A: 七天使的通讯

时间限制: 2 Sec  内存限制: 256 MB
提交: 427  解决: 126
[提交][状态][讨论版]

题目描述

n个天使排成一条直线,某些天使之间需要互相联系,他们之间的通讯可以通过黑白两种通道中的一种;所有通道必须在直线同侧(另一侧是地面);为了保证通讯效率,同种颜色的所有通道之间不能相交。请计算能否建立这种通讯方案。

输入

    第一行一个数T,表示接下来有T个询问。
    对于每个询问:第一行两个数n,m,分别表示有n个天使、需要建立通讯线路的天使有m对;接下来有m行,每行两个数a、b,表示a、b两个天使需要通讯。

输出

对于每个询问,输出一行“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
[提交][状态][讨论版]

题目描述

因为SJY干的奇怪事情过多,SJY收到了休假的通知,于是他准备在都市间来回旅游。SJY有一辆车子,一开始行驶性能为0,每过1时间行驶性能就会提升1点。每个城市的道路都有性能要求。SJY一共有t时间休息,一开始他位于1号城市(保证1号城市道路要求为0),他希望在n号城市结束旅程。每次穿过一条城市间的路会花费1时间,当然他也可以停留在一个城市不动而花费1时间。当且仅当车子的行驶性能大于等于一个城市,我们才能到达那里。SJY希望知道,旅游的方案模10086后的答案。(只要在某一时刻通过的道路存在一条不相同,就算不同的方案)

输入

    第一行三个数n,m,t,表示有n个城市m条道路t时间。
    第二行n个数,hi表示第i个城市的道路性能要求。
第三到m+2行,每行两个数u,v,表示城市u与城市v之间有一条单向道路连接(可能有重边)。

输出

包括一个数字,表示旅游的方案模10086。

样例输入

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

提示

【数据规模和约定】
    对于20%的数据,n<=10,t<=80;
    对于50%的数据,n<=30,t<=80;
    对于100%的数据,n<=70,m<=1000,t<=100000000,hi<=70。

花了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
[提交][状态][讨论版]

题目描述

    dzy 定义一个n^2
位的数的生成矩阵A 为一个大小为n*n
且Aij
为这个数的第i*n+j-n位的矩阵。
现在dzy 有一个数n^2
位的数k,他想知道所有小于等于k
的数的n*n
生成矩阵有多少种。(如果不足n^2 位则补前缀零)

输入

第一行一个数n,第二行一个n^2 位的数k

输出

仅一行表示答案,答案可能很大,你只需输出答案对10^9 + 7 取模后的结果。

样例输入

2
1000

样例输出

954

提示

【数据规模和约定】 
对于30% 的数据n<=2
对于100% 的数据n
<=1000,且n为偶数
【提示】
    如果两个生成矩阵在其中一个旋转180
度后可以重叠,则称这两个矩阵是相同的。

30分的代码好打,但是满分的数位dp难想。

NOIP2017SummerTraining0710的更多相关文章

随机推荐

  1. JS源生代码“增删改查”之增

    51呢最近在做一个管理数据的,第一次接触到用JS的源代码去实现一些功能,才知道网页里的许多功能都是依赖于“增删改查”完成的,下面的几张图片就是对于增的演示: 下面是有关HTML的代码:这个主要是弹窗部 ...

  2. Apache Camel之FTP组件学习

    写在最前面 哎,最近提了离职,手头的活也基本上清理的差不多了.想着这个把月可以舒服的晃悠晃悠的离开,但是运维的小伙伴总是不架势,走之前还是提了个新需求. 先说下需求吧,我们的系统概括的讲就是一个接口系 ...

  3. Microsoft Dynamics 365 之 味全食品 项目分享和Customer Engagement新特性分享

    味全食品 Dynamics 365项目: 在企业门户和电子商务等新营销模式频出的今天,零售业需要利用统一的管理平台管理日益庞大的客户及销售数据,整合线上线下的零售业务,从采购.仓储.生产.配送到销售. ...

  4. 打开safari开发者选项

    1.点击Safari启动浏览器 2.点击左上Safari标志,选择偏好设置 3.选择高级,勾选下方的在菜单栏显示开发菜单. 如此,Safari就出现了开发菜单,右键网页元素也会出现查看元素功能了.

  5. Zookeeper和 Google Chubby对比分析

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt375 随着云计算的推广,云平台的设计和实现越来越复杂,很多系统属性如一致性和 ...

  6. 阿里云Maven地址

    GFW 呵呵呵 下载几个jar要几个小时.....伤透了 直接替换国内阿里云的maven镜像地址  速度嗖嗖嗖的.... 配置 修改maven根目录下的conf文件夹中的setting.xml文件,内 ...

  7. JUnit之TestCase和TestSuite详解

    首先介绍下TestCase以及TestSuite.    TestCase:字面意思,测试用例.为一个或多个方法提供测试方法.一般是一个test    TestSuite:测试集合,即一组测试.一个t ...

  8. 软工+C(2017第1期) 题目设计、点评和评分

    // 下一篇:分数和checklist 如何设计题目 教学中的一个问题是老师出题太简单了,题目设计一开始上来就不紧凑,我认为一个好的课程应该上来就给你紧凑感,而不是先上来"轻松2-3周&qu ...

  9. 软件工程(GZSD2015)第三次作业提交进度

    第三次作业题目请查看这里:软件工程(GZSD2015)第三次作业 开始进入第三次作业提交进度记录中,童鞋们,虚位以待哈... 2015年4月19号 徐镇.尚清丽,C语言 2015年4月21号 毛涛.徐 ...

  10. 201521123050 《Java程序设计》第8周学习总结

    1. 本周学习总结 2. 书面作业 1.List中指定元素的删除(题目4-1) 1.1 实验总结 在删除元素时,要注意后续元素位置的前移 2.统计文字中的单词数量并按出现次数排序(题目5-3) 2.1 ...