2016 Multi-University Training Contest 2
2016-08-25 17:56
281 查看
这场 也是很遗憾的四题,
第五题真的不知道为何wa,很奇怪,想得也差不多
榜
1001 Acperience 18.24%(504/2763)
1002 Born Slippy 12.27%(20/163)
1003 Call It What You Want 0.00%(0/215)
1004 Differencia 10.13%(8/79)
1005 Eureka 6.13%(129/2103)
1006 Fantasia 8.00%(30/375)
1007 Glorious Brilliance 3.28%(2/61)
1008 Helter Skelter 5.62%(20/356)
1009 It’s All In The Mind 34.33%(709/2065)
1010 Join The Future 14.81%(4/27)
1011 Keep On Movin 47.73%(694/1454)
1012 La Vie en rose 33.41%(284/850)
1013 Memento Mori 4.17%(1/24)
1009
给你一个序列a
满足三个条件
0<=ai<=100
a1>=a2>=a3………
a1+a2+a3+…..an!=0
然后告诉你序列a 的长度n, 以及已知m个ai ,然后m行 每行输入x,y ,告诉你 ax=y。
求 a1+a2/ (sum) 的最大值
sum=a1+a2+ a3+……+an ’
简单题
要使得结果最大,即让 a3+a4+….+an 最小 , 根据条件2,我们从后往前 可以确定 a3+…an ,然后有性质
x1/y1 > x2/y2 只要 x1>x2 && y1>y2 所以我们让a1+a2 最大即可
1011 Keep On Movin
记得是队友A的,刚刚自己做了一遍,发现也是简单题。
给你序列a, 代表字符i有a[i]个, 问可形成的 回文串 集合中的 最小长度回文串的最大长度。
题目中有一个样例解释,看下就能明白。
一开始以为二分长度 去判断, 但是时间复杂度不够,而且我去想判断的时候,发现直接就可以判断出来。
如果存在奇数,那么肯定就要分出一串。
例如
1 3 4 2
就必然要最少形成两串
那么我们统计一下总长度 , 然后 形成一串先放一个进去,也就是那个奇数 字符, 然后用总长度len-ji (形成多少串), 然后我们把剩下的平均插进这个串中形成回文串, 即len/ji ,但如果是这个数是奇数,我们就不可以插入奇数个,因为要形成回文串,所以就只能-1
1001
这题,很无语
wa 了一万发, 很艰难的数学推导,对于我们这种数学基础基本为0 的队伍,这种题就像一座大山挡着。。。
题意:
B=(b1,b2,…,bn) (bi∈{+1,−1}) α≥0 W=(w1,w2,…,wn)
然后求
∑|| Wi- aBi || ^ 2 的 最小值 i=1…2….3….n
1012
在比赛的时候,n*m 的傻逼暴力都可以过。 显然是数据太水
赛后加了数据,nm怎么也不能放过去啊,真的坑爹
正解:
bitset
容我先学学bitset
第五题真的不知道为何wa,很奇怪,想得也差不多
榜
1001 Acperience 18.24%(504/2763)
1002 Born Slippy 12.27%(20/163)
1003 Call It What You Want 0.00%(0/215)
1004 Differencia 10.13%(8/79)
1005 Eureka 6.13%(129/2103)
1006 Fantasia 8.00%(30/375)
1007 Glorious Brilliance 3.28%(2/61)
1008 Helter Skelter 5.62%(20/356)
1009 It’s All In The Mind 34.33%(709/2065)
1010 Join The Future 14.81%(4/27)
1011 Keep On Movin 47.73%(694/1454)
1012 La Vie en rose 33.41%(284/850)
1013 Memento Mori 4.17%(1/24)
1009
给你一个序列a
满足三个条件
0<=ai<=100
a1>=a2>=a3………
a1+a2+a3+…..an!=0
然后告诉你序列a 的长度n, 以及已知m个ai ,然后m行 每行输入x,y ,告诉你 ax=y。
求 a1+a2/ (sum) 的最大值
sum=a1+a2+ a3+……+an ’
简单题
要使得结果最大,即让 a3+a4+….+an 最小 , 根据条件2,我们从后往前 可以确定 a3+…an ,然后有性质
x1/y1 > x2/y2 只要 x1>x2 && y1>y2 所以我们让a1+a2 最大即可
#include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<stdlib.h> #include<queue> #include<stack> #include<map> #include<vector> #define mem(a) memset(a,0,sizeof(a)) #define ll __int64 #define INF 0x7fffffff //INT_MAX #define inf 0x3f3f3f3f // const double PI = acos(-1.0); const double e = exp(1.0); template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; } template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; } using namespace std; int a[105]; int main(){ //freopen("1.txt","r",stdin); int t; scanf("%d",&t); while(t--){ memset(a,-1,sizeof(a)); int n,m; scanf("%d %d",&n,&m); while(m--){ int x,y; scanf("%d %d",&x,&y); a[x]=y; } int cnt=0; for(int i=n;i>2;i--){ if(a[i]==-1){ a[i]=cnt; } else{ cnt=a[i]; } } if(a[1]==-1){ a[1]=100; } if(a[2]==-1){ a[2]=a[1]; } int fenzi=0,fenmu=0; for(int i=1;i<=n;i++){ fenmu+=a[i]; } fenzi=a[1]+a[2]; cnt=gcd(fenzi,fenmu); fenzi/=cnt; fenmu/=cnt; printf("%d/%d\n",fenzi,fenmu); } return 0; }
1011 Keep On Movin
记得是队友A的,刚刚自己做了一遍,发现也是简单题。
给你序列a, 代表字符i有a[i]个, 问可形成的 回文串 集合中的 最小长度回文串的最大长度。
题目中有一个样例解释,看下就能明白。
一开始以为二分长度 去判断, 但是时间复杂度不够,而且我去想判断的时候,发现直接就可以判断出来。
如果存在奇数,那么肯定就要分出一串。
例如
1 3 4 2
就必然要最少形成两串
那么我们统计一下总长度 , 然后 形成一串先放一个进去,也就是那个奇数 字符, 然后用总长度len-ji (形成多少串), 然后我们把剩下的平均插进这个串中形成回文串, 即len/ji ,但如果是这个数是奇数,我们就不可以插入奇数个,因为要形成回文串,所以就只能-1
#include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<stdlib.h> #include<queue> #include<stack> #include<map> #include<vector> #define mem(a) memset(a,0,sizeof(a)) #define ll __int64 #define INF 0x7fffffff //INT_MAX #define inf 0x3f3f3f3f // const double PI = acos(-1.0); const double e = exp(1.0); template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; } template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; } using namespace std; int a[100005]; int ji; int sum; int main(){ //freopen("1.txt","r",stdin); int t; while(~scanf("%d",&t)){ while(t--){ int n; ji=sum=0; scanf("%d",&n); int len=0; for(int i=1;i<=n;i++){ scanf("%d",&a[i]); len+=a[i]; if(a[i]&1){ ji++; } } if(ji==0 || ji==1){ printf("%d\n",len); continue; } len-=ji; int cnt=len/ji; if(cnt&1) cnt--; printf("%d\n",cnt+1); } } return 0; }
1001
这题,很无语
wa 了一万发, 很艰难的数学推导,对于我们这种数学基础基本为0 的队伍,这种题就像一座大山挡着。。。
题意:
B=(b1,b2,…,bn) (bi∈{+1,−1}) α≥0 W=(w1,w2,…,wn)
然后求
∑|| Wi- aBi || ^ 2 的 最小值 i=1…2….3….n
#include<iostream> #include<stdio.h> #include<string.h> #include<math.h> #include<algorithm> #include<stdlib.h> #include<queue> #include<stack> #include<map> #include<vector> #define mem(a) memset(a,0,sizeof(a)) #define INF 0x7fffffff //INT_MAX #define inf 0x3f3f3f3f // const double PI = acos(-1.0); const double e = exp(1.0); template<class T> T gcd(T a, T b) { return b ? gcd(b, a % b) : a; } template<class T> T lcm(T a, T b) { return a / gcd(a, b) * b; } bool cmpbig(int a,int b){return a>b;} bool cmpsmall(int a,int b){return a<b;} using namespace std; __int64 w[100005]; int main(){ //freopen("1.txt","r",stdin); int T; scanf("%d",&T); while(T--){ int n; scanf("%d",&n); __int64 sum=0; for(int i=1;i<=n;i++){ scanf("%I64d",&w[i]); sum+=abs(w[i]); } __int64 ans=0; for(int i=1;i<=n;i++){ ans+=(__int64)(abs(w[i])*abs(w[i])*n); } ans-=(__int64 )sum*sum; // printf("as=%I64d\n",ans); __int64 flag=gcd((__int64)ans,(__int64)(n)); printf("%I64d/%I64d\n",(__int64)ans/flag , (__int64)(n)/flag); } return 0; }
1012
在比赛的时候,n*m 的傻逼暴力都可以过。 显然是数据太水
赛后加了数据,nm怎么也不能放过去啊,真的坑爹
正解:
bitset
容我先学学bitset
相关文章推荐
- 2016 Multi-University Training Contest 5 题解
- 2016 Multi-University Training Contest 5 解题报告
- (HDU 5795)2016 Multi-University Training Contest 6 A Simple Nim (SG函数、博弈)
- hdu 5795 A Simple Nim(2016 Multi-University Training Contest 6——博弈)
- 数据结构 ( 优先队列&&栈 )——HDU 5818 ( 2016 Multi-University Training Contest 7 1010 )
- (HDU 5823)2016 Multi-University Training Contest 8 color II (m染色问题、最大独立集、DP)
- 2016 Multi-University Training Contest 7 solutions BY SYSU
- 2016 Multi-University Training Contest 10(2016多校训练第十场)1011
- hdu5753 2016 Multi-University Training Contest 3 Permutation Bo 解题报告
- 2016 Multi-University Training Contest 2 D. Differencia
- 2016 Multi-University Training Contest 1 1002 Chess
- HDU 5274 Chess(SG博弈)---2016 Multi-University Training Contest 1
- 2016 Multi-University Training Contest 1 Abandoned country
- 2016 Multi-university training contest
- 2016 Multi-University Training Contest 2
- 2016 Multi-University Training Contest 2 - 1005 Eureka
- 2016 Multi-University Training Contest 2
- (HDU 5727)2016 Multi-University Training Contest 1 Necklace(搜索、图论)
- 【HDU5729 2016 Multi-University Training Contest 1G】【状压DP 容斥】Rigid Frameworks 刚性图 nm二分图的联通方案数
- 2016 Multi-University Training Contest 3-1011.Teacher Bo,暴力!