HDU 2254 奥运(数论+矩阵)

HDU 2254 奥运(数论+矩阵)

大家好,又见面了,我是全栈君。

题目中文的不解释啊。

。。

须要注意的就是:离散数学中,有向图的邻接矩阵A表示全部点之间路径长度为1的路径数量,A^n则表示路径长度为n的路径数量。故须要求某两点在(A^t1)~(A^t2)的路径数量之和。

奥运

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 2251    Accepted Submission(s): 572




Problem Description
北京迎来了第一个奥运会。我们的欢呼声响彻中国大地,所以今年的奥运金牌 day day up!

比尔盖兹坐上鸟巢里,手里摇着小纸扇,看的不亦乐乎。被俺们健儿的顽强拼搏的精神深深的感动了。

反正我的钱也多的没地方放了,他对自己说,我自己也来举办一个奥运会。看谁的更火。

只是他的奥运会非常特别:
1 參加人员必须是中国人;
2 至少会加法运算(由于要计算本人获得的金牌数)
他知道中国有非常多的名胜古迹。他知道自己在t1 到 t2天内不可能把全部的地方都玩遍,所以他决定指定两个地方v1,v2,假设參赛员能计算出在t1到t2天(包含t1,t2)内从v1到v2共同拥有多少种走法(每条道路走须要花一天的时间,且不能在某个城市停留,且t1=0时的走法数为0),那么他就会获得对应数量的金牌,城市的总数<=30,两个城市间能够有多条道路
,每条都视为是不同的。

 


Input
本题多个case,每一个case:

输入一个数字n表示有n条道路 0<n<10000

接下来n行每行读入两个数字 p1。p2 表示城市p1到p2有道路,并不表示p2到p1有道路 (0<=p1,p2<2^32)

输入一个数字k表示有k个參赛人员 

接下来k行。每行读入四个数据v1,v2,t1,t2 (0<=t1,t2<10000)

 


Output
对于每组数据中的每一个參赛人员输出一个整数表示他获得的金牌数(mod 2008)

 


Sample Input
   
   
6 1 2 1 3 2 3 3 2 3 1 2 1 3 1 2 0 0 1 2 1 100 4 8 3 50

 


Sample Output
   
   
0 1506 0

 

</pre><pre style="font-family: 'Courier New'; background-color: rgb(244, 251, 255);"><pre name="code" class="cpp">#include <algorithm>
#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <iomanip>
#include <stdio.h>
#include <string>
#include <queue>
#include <cmath>
#include <stack>
#include <map>
#include <set>
#define eps 1e-10
///#define M 1000100
#define LL __int64
///#define LL long long
///#define INF 0x7ffffff
#define INF 0x3f3f3f3f
#define PI 3.1415926535898
#define zero(x) ((fabs(x)<eps)?

0:x)#define mod 2008const int maxn = 210;using namespace std;struct matrix{ int f[31][31];};matrix p[10001];map<int, int>mp;matrix mul(matrix a, matrix b, int n){ matrix c; memset(c.f, 0, sizeof(c.f)); for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { for(int k = 0; k < n; k++) c.f[i][j] += a.f[i][k]*b.f[k][j]; c.f[i][j] %= mod; } } return c;}matrix pow_mod(matrix a, int b, int n){ matrix s; memset(s.f, 0 , sizeof(s.f)); for(int i = 0; i < n; i++) s.f[i][i] = 1; while(b) { if(b&1) s = mul(s, a, n); a = mul(a, a, n); b >>= 1; } return s;}matrix Add(matrix a,matrix b, int n) { matrix c; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { c.f[i][j] = a.f[i][j]+b.f[i][j]; c.f[i][j] %= mod; } } return c;}int main(){ int n, m; while(scanf("%d",&n)!=EOF) { int u, v; int ans = 0; mp.clear(); memset(p[0].f, 0, sizeof(p[0].f)); for(int i = 0; i < n; i++) { scanf("%d %d",&u, &v); if(mp.find(u) == mp.end()) mp[u] = ans++; if(mp.find(v) == mp.end()) mp[v] = ans++; p[0].f[mp[u]][mp[v]] ++; } for(int i = 1; i < 10001; i++) p[i] = mul(p[i-1], p[0], ans); scanf("%d",&m); int t1, t2, v1, v2; while(m--) { scanf("%d %d %d %d",&v1, &v2, &t1, &t2); if(t1 > t2) swap(t1,t2); if(mp.find(v1) == mp.end() || mp.find(v2) == mp.end() || t1 == 0 && t2 == 0) { puts("0"); continue; } int sum = 0; for(int i = t1-1; i < t2; i++) { if(i == -1) continue; sum += p[i].f[mp[v1]][mp[v2]]%mod; } printf("%d\n",sum%mod); ///cout<<(sum%mod)<<endl; } } return 0;}


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115944.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tomcat闪退问题整理

    tomcat闪退问题整理tomcat闪退一般有以下几个原因:1、JDK环境变量配置错误;2、JDK版本与tomcat版本不匹配(一般jdk1.6,tomcat8.**这样可能会出现类似问题)3、tomcat内存配置有误(Catalina文件内存配置有误)4、端口被占用解决方案:1、JDK环境变量配置错误;排查:1)检查环境变量:cmd启动命令行窗口→通过cd命令到tomcat的bin目录下→运…

    2022年5月12日
    37
  • RPC协议是什么?RPC协议与HTTP协议的区别

    RPC协议是什么?RPC协议与HTTP协议的区别什么是RPC协议?RPC是一种远程过程调用的协议,使用这种协议向另一台计算机上的程序请求服务,不需要了解底层网络技术的协议。在RPC中,发出请求的程序是客户程序,而提供服务的程序是服务器。HTTP是一种超文本传输协议。是WWW浏览器和WWW服务器之间的应用层通讯协议。RPC协议与HTTP协议的区别RPC是一种API,HTTP是一种无状态的网络协议。RPC可以基于HTTP协议实现,也可以直接在TCP协议上实现。RPC主要是用在大型网站里面,因为大型网站里面系统繁多,业务线复杂,而且效率优势非

    2022年5月12日
    48
  • 项目中常用的MySQL 优化

    项目中常用的MySQL 优化

    2021年7月5日
    84
  • python保留小数位数_python小数点保留三位

    python保留小数位数_python小数点保留三位https://www.luogu.org/problemnew/show/P14221.round()内置方法a=int(input())sum=0if(a>=401):sum+=(a-400)*0.5663a=400if(a>=151):sum+=(a-150)*0.4663a=150sum+=a*0.4…

    2022年8月11日
    5
  • jdbctype=null_could not get jdbc connection

    jdbctype=null_could not get jdbc connectionresultMap中映射没注意jdbcType类型直接报错:Cause:org.apache.ibatis.builder.BuilderException:ErrorresolvingJdbcType.Cause:java.lang.IllegalArgumentException:Noenumconstantorg.apache.ibatis.type.JdbcType.int随后检查XML文件映射问题,发现应该是INTEGER,jdbcType中没有int。附上MyBat.

    2022年10月20日
    0
  • X3D.GIS[通俗易懂]

    X3D.GIS[通俗易懂]2019独角兽企业重金招聘Python工程师标准>>>…

    2022年6月3日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号