2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛
2017-12-23 17:28
447 查看
https://www.nowcoder.com/acm/contest/63/B
栗酱的文明2
分析:排序
https://www.nowcoder.com/acm/contest/63/E
E 栗酱的数列
栗酱有一个长度为n的数列A,一个长度为m的数列B,现在询问A中有多少个长度为m的连续子序列A’,
满足(a’1+b1)%k = (a’2+b2)%k = …… = (a’m + bm)%k。
输入描述:
第一行一个数T,表示有T组数据。
对于每组数据,
第一行三个整数,n, m, k。
第一行输入n个数, a1,a2,…,an, 表示A数列中的数,
第二行输入m个数, b1,b2,…,bm, 表示B数列中的数。
输出描述:
每一组数据输出一行,满足条件的连续子序列数量。
示例1
输入
2
3 2 5
7 8 7
8 7
3 2 5
7 8 9
8 7
输出
1
2
备注:
T≤15,
2≤m≤n≤2×105,
1≤ai,bi,k≤109
分析:RT 正解是KMP。。, 看数据和时间,就暴力了。。
https://www.nowcoder.com/acm/contest/63/F
栗酱的不等式
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
有不等式y⋅x3≤ n,已知y为正整数,x为大于1的正整数,问当x和y的解数量刚好为m的时候n的最小值,如果不存在输出 -1。
输入描述:
多组数据读入。
每组数据一个数字m,如题所示。
输出描述:
每组数据输出一行,输出答案。
示例1
输入
1
输出
8
说明
当方案恰好只有一种的时候,n的最小值为8,此时y=1,x=2。
备注:
1 ≤ m ≤ 1016
分析:看题目数据 ,太大。。 1s
二分法
https://www.nowcoder.com/acm/contest/63/G
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
给定两个长度为n的整数列A和B,每次你可以从A数列的左端或右端取走一个数。假设第i次取走的数为ax,则第i次取走的数的价值vi=bi⋅ax,现在希望你求出∑vi的最大值。
输入描述:
第一行一个数T,表示有T组数据。
对于每组数据,第一行一个整数n,
接下来两行分别给出A数列与B数列。
输出描述:
每一组数据输出一行,最大的∑vi。
示例1
输入
2
2
1 1000
2 1
5
1 3 5 2 4
1 2 3 4 5
输出
2001
52
说明
对于第二个样例,
第一次从左边取走a1,v1=a1⋅b1=1,
第二次从左边取走a2,v2=a2⋅b2=6,
第三次从右边取走a5,v3=a5⋅b3=12,
第四次从右边取走a4,v4=a4⋅b4=8,
第五次取走剩下的a3,v5=a3⋅b5=25。
总价值∑vi=1+6+12+8+25=52
备注:
T≤10
1≤n≤103
1≤ai,bi≤103
分析: 想着是dp。。 还是没做出来。。
dp[i][j]表示第i次取数后右面共取j个的最大值
状态转移:
dp[i][j]=max(dp[i-1][j-1]+i*a[n-j+1],dp[i-1][j]+i*a[i-j]);(j<=i)
第i次只与第i-1次有关,可以压缩空成一维
https://www.nowcoder.com/acm/contest/63/K
K qwb的骚扰
分析:特别坑 !!! 不理解假设学姐不会挂断电话, 可是还有qwb挂断电话这种操作。。
https://www.nowcoder.com/acm/contest/63/L
qwb与电阻
题目描述
qwb闲着无聊,就开始拆自己的电脑,他发现主板上某个元件可以视作如图所示无限长的电路。已知该电路由三种不同的电阻r1,r2,r3构成,他想要计算ab之间的电阻。
输入描述:
第一行输入一个整数T,表示数据组数,
接下来T行,每行三个整数r1,r2,r3。
输出描述:
每组数据输出一行,保留两位小数。
示例1
输入
2
1 1 1
1 2 3
输出
2.73
5.46
备注:
T≤104,
1≤r1,r2,r3≤104
分析:等效电阻。
也有推导出公式的, 公式:ans=(r1+r3+sqrt((r1+r3)(r1+r3)+4*r2(r1+r3))/2
栗酱的文明2
分析:排序
https://www.nowcoder.com/acm/contest/63/E
E 栗酱的数列
栗酱有一个长度为n的数列A,一个长度为m的数列B,现在询问A中有多少个长度为m的连续子序列A’,
满足(a’1+b1)%k = (a’2+b2)%k = …… = (a’m + bm)%k。
输入描述:
第一行一个数T,表示有T组数据。
对于每组数据,
第一行三个整数,n, m, k。
第一行输入n个数, a1,a2,…,an, 表示A数列中的数,
第二行输入m个数, b1,b2,…,bm, 表示B数列中的数。
输出描述:
每一组数据输出一行,满足条件的连续子序列数量。
示例1
输入
2
3 2 5
7 8 7
8 7
3 2 5
7 8 9
8 7
输出
1
2
备注:
T≤15,
2≤m≤n≤2×105,
1≤ai,bi,k≤109
分析:RT 正解是KMP。。, 看数据和时间,就暴力了。。
int a ,b ; int main() { int T; scanf("%d",&T); while(T--) { int n,m,k; scanf("%d%d%d",&n,&m,&k); rep(i,0,n) scanf("%d",&a[i]); rep(i,0,m) scanf("%d",&b[i]); int ans=0; for(int i=0;i+m-1<n;i++) { int tmp=(a[i]+b[0])%k,cnt=1; bool flag=1; for(int j=i+1;j<i+m;j++,cnt++) { if(tmp!=(a[j]+b[cnt])%k) { flag=0; break; } } if(flag) ans++; } printf("%d\n",ans); } return 0; }
https://www.nowcoder.com/acm/contest/63/F
栗酱的不等式
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
有不等式y⋅x3≤ n,已知y为正整数,x为大于1的正整数,问当x和y的解数量刚好为m的时候n的最小值,如果不存在输出 -1。
输入描述:
多组数据读入。
每组数据一个数字m,如题所示。
输出描述:
每组数据输出一行,输出答案。
示例1
输入
1
输出
8
说明
当方案恰好只有一种的时候,n的最小值为8,此时y=1,x=2。
备注:
1 ≤ m ≤ 1016
分析:看题目数据 ,太大。。 1s
二分法
ll check(ll cnt)///检索解的个数 { ll ans=0; for(ll x=2; x*x*x<=cnt; x++) ans+=cnt/(x*x*x); return ans; } int main() { ll m; while(~scanf("%lld",&m)) { ll le=2,mid,ri=1e16; while(le<=ri) { mid=(le+ri)/2; if(check(mid)>=m) ri=mid-1; else le=mid+1; } printf("%lld\n",check(le)==m?le:-1); } return 0; }
https://www.nowcoder.com/acm/contest/63/G
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 131072K,其他语言262144K
64bit IO Format: %lld
题目描述
给定两个长度为n的整数列A和B,每次你可以从A数列的左端或右端取走一个数。假设第i次取走的数为ax,则第i次取走的数的价值vi=bi⋅ax,现在希望你求出∑vi的最大值。
输入描述:
第一行一个数T,表示有T组数据。
对于每组数据,第一行一个整数n,
接下来两行分别给出A数列与B数列。
输出描述:
每一组数据输出一行,最大的∑vi。
示例1
输入
2
2
1 1000
2 1
5
1 3 5 2 4
1 2 3 4 5
输出
2001
52
说明
对于第二个样例,
第一次从左边取走a1,v1=a1⋅b1=1,
第二次从左边取走a2,v2=a2⋅b2=6,
第三次从右边取走a5,v3=a5⋅b3=12,
第四次从右边取走a4,v4=a4⋅b4=8,
第五次取走剩下的a3,v5=a3⋅b5=25。
总价值∑vi=1+6+12+8+25=52
备注:
T≤10
1≤n≤103
1≤ai,bi≤103
分析: 想着是dp。。 还是没做出来。。
dp[i][j]表示第i次取数后右面共取j个的最大值
状态转移:
dp[i][j]=max(dp[i-1][j-1]+i*a[n-j+1],dp[i-1][j]+i*a[i-j]);(j<=i)
第i次只与第i-1次有关,可以压缩空成一维
#include <bits/stdc++.h> using namespace std; #define mem(a,n) memset(a,n,sizeof(a)) #define rep(i,a,n) for(int i=a;i<n;i++) #define pb push_back #define fi first #define se second #define sz(a) (a.size) #define lb lower_bound #define ub upper_bound #define max3(a,b,c) max(a,max(b,c)) #define min3(a,b,c) min(a,min(b,c)) typedef long long ll; typedef unsigned long long ull; const int MOD=1e9+7; const double eps=1e-6; const int INF=0x3f3f3f3f; const double pi=acos(-1.0); const int N=1e3+5; const int dir[4][2]= {0,1,1,0,0,-1,-1,0}; int a ,b ,dp ; in 11540 t main() { int T,n; scanf("%d",&T); while(T--) { scanf("%d",&n); rep(i,1,n+1) scanf("%d",&a[i]); rep(i,1,n+1) scanf("%d",&b[i]); mem(dp,0); dp[0]=a[1]*b[1]; dp[1]=a *b[1]; rep(i,2,n+1) { for(int j=i;j>=0;j--) { if(!j) dp[j]+=a[i]*b[i]; else dp[j]=max(dp[j-1]+b[i]*a[n-j+1],dp[j]+b[i]*a[i-j]); } } int mx=-INF; rep(i,0,n+1) mx=max(mx,dp[i]); printf("%d\n",mx); } return 0; }
https://www.nowcoder.com/acm/contest/63/K
K qwb的骚扰
题目描述 自从学姐拒绝了qwb之后,qwb开始了疯狂的骚扰。qwb来到了一个公共电话亭,他摸摸口袋只有n元钱。 已知该公用电话的规则是,前3分钟一共收费x元(不到3分钟也要收x元),超过3分钟每分钟收费y元(不到1分钟也要收y元)。(先扣钱再打电话。) 那么问题来了,qwb最多骚扰学姐几分钟?(假设学姐不会挂qwb电话) 输入描述: 第一行输入一个整数T,表示数据组数, 接下来T行,每行三个整数n,x,y 。 输出描述: 每行输出一个整数,表示qwb最多骚扰学姐的分钟数。 示例1 输入 2 10 5 1 5 4 1 输出 8 4 备注: 1≤T≤10000, 1≤n,x,y≤10000
分析:特别坑 !!! 不理解假设学姐不会挂断电话, 可是还有qwb挂断电话这种操作。。
int main() { int T; scanf("%d",&T); while(T--) { int n,x,y; scanf("%d%d%d",&n,&x,&y); if(n<x) puts("0"); else if(3*y<=x) printf("%d\n",3+(n-x)/y); else if(3*y>x) printf("%d\n",3*(n/x)+(n%x)/y); else if(y>x) printf("%d\n",3*(n/x)); } return 0; }
https://www.nowcoder.com/acm/contest/63/L
qwb与电阻
题目描述
qwb闲着无聊,就开始拆自己的电脑,他发现主板上某个元件可以视作如图所示无限长的电路。已知该电路由三种不同的电阻r1,r2,r3构成,他想要计算ab之间的电阻。
输入描述:
第一行输入一个整数T,表示数据组数,
接下来T行,每行三个整数r1,r2,r3。
输出描述:
每组数据输出一行,保留两位小数。
示例1
输入
2
1 1 1
1 2 3
输出
2.73
5.46
备注:
T≤104,
1≤r1,r2,r3≤104
分析:等效电阻。
也有推导出公式的, 公式:ans=(r1+r3+sqrt((r1+r3)(r1+r3)+4*r2(r1+r3))/2
int main() { int T; scanf("%d",&T); while(T--) { double a,b,c,ans; scanf("%lf%lf%lf",&a,&b,&c); ans=a+b+c; rep(i,0,100) ans=1.0/(1.0/ans+1.0/b)+a+c; printf("%.2lf\n",ans); } return 0; }
相关文章推荐
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 I 栗酱和仙剑【模拟】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 J 栗酱和火柴【water】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 D-序列【莫队算法】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 K qwb的骚扰【分类讨论】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 D-序列【莫队算法】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 L qwb与电阻【dfs】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 G-取数游戏(区间dp)
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 M 栗酱的麻烦【枚举】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 B 栗酱的文明2【度数排序】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 E 栗酱的数列【差分+KMP】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 F 栗酱的不等式【二分】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 E-栗酱的数列(KMP)
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 G 取数游戏2【区间DP】
- 2017年浙江工业大学大学生程序设计迎新赛决赛—网络同步赛 H 小周的曲射炮【公式推导||分类二分】
- 【2017年浙江工业大学大学生程序设计迎新赛决赛】G 取数游戏二【DP or 记忆化DFS】
- 【2017年浙江工业大学大学生程序设计迎新赛决赛】E 栗酱的数列【思维转化+KMP】
- 【2017年浙江工业大学大学生程序设计迎新赛决赛】D 序列 【离散化+分块+莫队】
- 2017年浙江工业大学大学生程序设计迎新赛决赛 F-栗酱的不等式 [KMP]
- 【2017年浙江工业大学大学生程序设计迎新赛决赛】 F 栗酱的不等式【二分枚举】
- 2017年浙江工业大学大学生程序设计迎新赛决赛 F 栗酱的不等式