11.13 noip模拟试题
2016-11-13 17:50
232 查看
题目名称 笔记 括号 城堡
可执行文件名 note brackets castle
输入文件名 note.in brackets.in castle.in
输出文件名 note.in brackets.out castle.in
每个测试点时限 1 秒 1 秒 1 秒
内存限制 512MB 512MB 512MB
测试点数目 20 20 10
每个测试点分值 5 5 10
是否有部分分 否 否 否
题目类型 传统型 传统型 传统型
测试题 #4 笔记
笔记
【问题描述】
给定一个长度为?的序列?,下标编号为1~?。序列的每个元素都是1~?的
整数。定义序列的代价为
? ?+1 − ? ?
?−1
?=1
你现在可以选择两个数?和?,并将序列?中所有的?改成?。?可以与?相等。
请求出序列最小可能的代价。
【输入格式】
输入第一行包含两个整数?和?。第二行包含?个空格分隔的整数,代表序
列?。
【输出格式】
输出一行,包含一个整数,代表序列最小的代价。
【样例输入 1】
4 6
1 2 3 4 3 2
【样例输出 1】
3
【样例输入 2】
10 5
9 4 3 8 8
【样例输出 1】
6
【样例解释】
样例 1 中,最优策略为将 4 改成 3。样例 2 中,最优策略为将 9 改成 4。
测试题 #4 笔记
【数据规模和约定】
31。
60%的数据,?,? ≤ 2000。
对于100%的数据,1 ≤ ?,? ≤ 100,000。
View Code
可执行文件名 note brackets castle
输入文件名 note.in brackets.in castle.in
输出文件名 note.in brackets.out castle.in
每个测试点时限 1 秒 1 秒 1 秒
内存限制 512MB 512MB 512MB
测试点数目 20 20 10
每个测试点分值 5 5 10
是否有部分分 否 否 否
题目类型 传统型 传统型 传统型
测试题 #4 笔记
笔记
【问题描述】
给定一个长度为?的序列?,下标编号为1~?。序列的每个元素都是1~?的
整数。定义序列的代价为
? ?+1 − ? ?
?−1
?=1
你现在可以选择两个数?和?,并将序列?中所有的?改成?。?可以与?相等。
请求出序列最小可能的代价。
【输入格式】
输入第一行包含两个整数?和?。第二行包含?个空格分隔的整数,代表序
列?。
【输出格式】
输出一行,包含一个整数,代表序列最小的代价。
【样例输入 1】
4 6
1 2 3 4 3 2
【样例输出 1】
3
【样例输入 2】
10 5
9 4 3 8 8
【样例输出 1】
6
【样例解释】
样例 1 中,最优策略为将 4 改成 3。样例 2 中,最优策略为将 9 改成 4。
测试题 #4 笔记
【数据规模和约定】
31。
60%的数据,?,? ≤ 2000。
对于100%的数据,1 ≤ ?,? ≤ 100,000。
/* 很机智的题解 维护每个点连出去的边中 有几个是最短路上的 假设 两个点 ij i有a条连边是最短路上的 j有b条 那么 1 i j 这三个点构成一棵树就有 1*a*b中方法 加上其他的点同理 最后乘法原理算一下 */ #include<cstdio> #include<queue> #include<iostream> #include<cstring> #define ll long long #define mod ((1<<31)-1) #define maxn 1010 using namespace std; int n,m,num,head[maxn],f[maxn],D[maxn],c[maxn]; ll ans=1; struct node{ int u,v,t; }p[maxn*maxn]; struct edge{ int v,t,pre; }e[maxn*2*maxn]; queue<int>q; int init(){ int x=0,f=1;char s=getchar(); while(s<'0'||s>'9'){if(s=='-')f=-1;s=getchar();} while(s>='0'&&s<='9'){x=x*10+s-'0';s=getchar();} return x*f; } void Add(int from,int to,int dis){ num++;e[num].v=to; e[num].t=dis; e[num].pre=head[from]; head[from]=num; } void SPFA(){ memset(D,127/3,sizeof(D)); D[1]=0;f[1]=1;q.push(1); while(!q.empty()){ int k=q.front();q.pop();f[k]=0; for(int i=head[k];i;i=e[i].pre){ int v=e[i].v; if(D[v]>D[k]+e[i].t){ D[v]=D[k]+e[i].t; if(f[v]==0){ f[v]=1;q.push(v); } } } } } int main() { freopen("castle.in","r",stdin); freopen("castle.out","w",stdout); n=init();m=init(); int u,v,t; for(int i=1;i<=m;i++){ u=init();v=init();t=init(); p[i].u=u;p[i].v=v;p[i].t=t; Add(u,v,t);Add(v,u,t); } SPFA(); for(int i=1;i<=m;i++){ if(D[p[i].v]==D[p[i].u]+p[i].t)c[p[i].v]++; if(D[p[i].u]==D[p[i].v]+p[i].t)c[p[i].u]++; } for(int i=2;i<=n;i++) ans=ans*(ll)c[i]%mod; cout<<ans<<endl; fclose(stdin);fclose(stdout); return 0; }
View Code
相关文章推荐
- 9.20 noip模拟试题
- CCF-NOIP-2018 提高组(复赛) 模拟试题(五)
- 10.13 noip模拟试题
- 10.3 noip模拟试题
- 10.18 noip模拟试题
- 【备战NOIP2012图论专项模拟试题】位图
- 3076. 【备战NOIP2012图论专项模拟试题】位图 (Standard IO)
- 11.9 noip模拟试题
- 11.10 noip模拟试题
- 11.12 noip模拟试题
- 【备战NOIP2012图论专项模拟试题】外星人入侵
- 3077. 【备战NOIP2012图论专项模拟试题】外星人入侵 (Standard IO)
- 9.21 noip模拟试题
- 9.27 noip模拟试题
- CCF-NOIP-2018 提高组(复赛) 模拟试题(一)
- CCF-NOIP-2018 提高组(复赛) 模拟试题(七)
- 10.24 noip模拟试题
- NOIP2011-普及组复赛模拟试题-第一题-NBA总冠军
- NOIP2010-普及组复赛模拟试题-第一题-手机
- 11.14 noip模拟试题