个人感受:这套题,题目泄露,没什么好打的,第一题刚开始题目理解错误,后来还行,第二道题,打了一个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. 深度学习在 CTR 中应用

    欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:高航 一. Wide&&Deep 模型 首先给出Wide && Deep [1] 网络结构: 本质上 ...

  2. Ext.grid.EditorGridPanel分页刷新

    store.reload(); var start = grid.getBottomToolbar().cursor;//获取当前页开始条数 上面获取当前页第一条记录的方法有时候说未定义,我现在使用下 ...

  3. 如何修改int的打印内容——史上最难的JAVA面试题

    序 今天看到了一个比较特别的面试题,考察的是如何改变int的System.out.print的结果.题目如下: 下面的一句话"这是初级java实习生面试题"非常挑衅的激起了大家做题 ...

  4. Entity Framework Core 2.0 中使用LIKE 操作符

    Entity Framework Core 2.0 中使用LIKE 操作符 不定时更新翻译系列,此系列更新毫无时间规律,文笔菜翻译菜求各位看官老爷们轻喷,如觉得我翻译有问题请挪步原博客地址 本博文翻译 ...

  5. Porita详解----Items

    Items(项目) 一个item是指从目标网站上爬取的一条单独的数据.例如从京东网站上爬取的一款小米6手机的信息.大家应该对 item (项目)和 item definition(项目定义)做一个区分 ...

  6. 大道至简第一章观后感——java伪代码

    一节: public class Yugongyishan_ { //定义一个名为Yugongyishan_的类 Public static void main(string args[])   // ...

  7. 设置为互斥按钮的一组Radio按钮的用法

    设置为互斥按钮的一组Radio,只需要将第一个Radio的Group属性设置为True,并为之映射变量(DDX),其余radio的Group属性设置为False,不需要映射变量. 否则会出现不是互斥按 ...

  8. 【Beta】Daily Scrum Meeting——Day3

    站立式会议照片 1.本次会议为第三次Meeting会议: 2.本次会议在早上9:40,在陆大实验室召开,本次会议为25分钟讨论今天要完成的任务以及接下来的任务安排. 燃尽图 每个人的工作分配 遇到的困 ...

  9. 201521123098 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 1. 泛型的本质: 1. 他只是一个编译器现象: 2. 虚拟机里只有普通的类和方法: 3. 运行时没有类型参数 ...

  10. locale命令设置语言环境

    locale命令设置语言环境 在Linux中通过locale来设置程序运行的不同语言环境,locale由 ANSI C提供支持.locale的命名规则为_.,如zh_CN.GBK,zh代表中文, CN ...