2020.4.12 个人rating赛 解题+补题报告

A. Balloons

 1.题意

  有n包气球,每包气球有ai个,将这n包气球以包为单位全部分给两个人,要求每人至少有一包气球且两人气球总个数不能相等。

 2.题解

  用结构体将n包气球的编号和气球数存起来,按每包气球个数排序后,如果第一包气球的个数不为总个数的一半,满足题意。

 3.代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n;
 4 struct node{
 5     int id,x;
 6 }a[15];
 7 bool cmp(node a,node b){
 8     return a.x<b.x;
 9 }
10 int main () {
11     ios::sync_with_stdio(false);
12     cin>>n;
13
14     int sum=0;
15     for(int i=1;i<=n;i++){
16         cin>>a[i].x;
17         a[i].id=i;
18         sum+=a[i].x;
19     }
20     if(n==1){
21         cout<<-1<<endl;
22         return 0;
23     }
24     sort(a+1,a+1+n,cmp);
25     if(a[1].x*2==sum)
26         cout<<-1<<endl;
27     else{
28         cout<<1<<endl;
29         cout<<a[1].id<<endl;
30     }

D. Sonya and Hotels

 1.题意

  有n个酒店分布在一条坐标轴上,酒店只能在整数点上,Sonya想再建一个酒店,要求这个酒店与其它所有酒店的最小距离等于d,问有多少种建造位置。

 2.题解

  第一个酒店的左边和最后一和酒店的右边肯定符合题意,从第二个酒店向后遍历,如果与前一个酒店的距离等于两倍的d,说明这两个酒店之间恰好有一个可以建造的位置,如果与前一个酒店的距离大于两倍的d,说明这两个酒店之间有两个可以建造的位置。

 3.代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,d,ans;
 4 int a[110];
 5 int main(){
 6     ios::sync_with_stdio(false);
 7     cin>>n>>d;
 8     for(int i=1;i<=n;i++)
 9         cin>>a[i];
10
11     for (int i=2;i<=n;i++){
12         if(a[i]-a[i-1]==d+d)
13             ans++;
14         if(a[i]-a[i-1]>d+d)
15                ans+=2;
16     }
17     cout<<ans+2<<endl;
18
19     return 0;
20 }

 E. Sonya and Exhibition

 1.题意

  展览上有百合和玫瑰两种花共n株呈直线排开,有m个游客,每个游客对展览的满意程度为从L到R之间玫瑰的数量乘以百合的数量,问怎样排列这n株花使得展览的受欢迎程度最大。

 2.题解

  思维题,要使得百合乘以玫瑰的数量和最大,将它们错位排列最好,即01010101排列。

 3.代码

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m;
 4 struct node{
 5     int l,r;
 6 }a[10005];
 7 int main(){
 8     ios::sync_with_stdio(false);
 9     cin>>n>>m;
10     for(int i=1;i<=m;i++)
11         cin>>a[i].l>>a[i].r;
12
13     for(int i=1;i<=n;i++){
14         if(i%2)
15             cout<<0;
16         else
17                cout<<1;
18     }
19
20     return 0;
21 }

F. Sonya and Robots

 1.题意

  有n个数,从每个数起向后找一个数,使得这两个数组成一个数字对,求一共有多少个不同的数字对。

 2.题解

  从前往后遍历,更新每种数字左边一共有多少个不同的数字,这些数字可以与当前数字可以构成一个数字对。

 3.代码

 1 #include<bits/stdc++.h>
 2 #define ll long long
 3 using namespace std;
 4 const int N=100005;
 5 int n;
 6 int a[N],vis[N];
 7 set<int>st;
 8 int main(){
 9     ios::sync_with_stdio(false);
10     cin>>n;
11     for(int i=0;i<n;i++){
12         cin>>a[i];
13         vis[a[i]]=st.size();
14         st.insert(a[i]);
15     }
16     ll ans=0;
17     for(int i=0;i<=N;i++)
18         ans+=vis[i];
19
20     cout<<ans<<endl;
21
22     return 0;
23 }

原文地址:https://www.cnblogs.com/lvguapi/p/12687029.html

时间: 2024-08-29 09:20:33

2020.4.12 个人rating赛 解题+补题报告的相关文章

2020-3-14 acm训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019 解题报告+补题报告

2020-3-15比赛解题报告+2020-3-8—2020-3-15的补题报告 2020-3-15比赛题解 训练联盟周赛Preliminaries for Benelux Algorithm Programming Contest 2019  A建筑(模拟) 耗时:3ms 244KB 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

20190303集训队选拔赛1补题报告

今天嘛,打得很糟糕,糟糕到什么程度呢,rank40 一共才55个人,我写了2题,总共尝试了5题,总共8题 写了3题及以上的有27个,剩下的都是2道和1道 小西瓜啊!!! 外因就不找了(其实也没有) 但是我知道有个原因非常重要:刷题量太少了 其他的不说了,再接再厉吧,刚才已经消沉了很久了,也放空了一会,所以开始补题吧 对了,集训队讲座补选上了(因为有的同学觉得太难退课了,感谢颜学长的劝退讲座,让我有机会一边修学分一边被虐) 这也意味着我要有一篇总结报告和三篇解题报告 解题报告要正儿八经地写 不能像

2020/3/14 Preliminaries for Benelux Algorithm Programming Contest 2019 部分补题报告和解题报告

A. Architecture 比较行列最大值相同则possible 不同则impossible #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> using namespace std; int main(){ int r,c,x,y,i; int maxx=0,maxy=0; cin>>r>>c; for(i=1;i<=r;i++)

2020年3月14日 BAPC2019 比赛补题报告

Inquiry I 题意: 给定一个数列, 求公式的最大值 思路: 可以维护一个前缀和 与 后缀和, 扫描一次数组, 即可求出最大值 代码: n = int(input()) lst = [*map(int, input().split())] # left 记录数组元素平方的前缀和, right 记录数组元素后缀和 left, right = 0, sum(lst) res = 0 for i in lst: left += i**2 right -= i res = max(res, lef

CSU-ACM2014年校队选拔赛指导赛解题报告

•Problem A  CSU 1065                               贪心 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 const int maxn = 1000010; 6 struct Node{ 7 int a,b; 8 bool operator < (const Node& rhs)

CSU OJ 1112机器人的指令 (湖南省12年省赛题)

 Welcome to CSU Online Judge! 1112: 机器人的指令 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 274  Solved: 97 [Submit][Status][Web Board] Description 数轴原点有一个机器人.该机器人将执行一系列指令,你的任务是预测所有指令执行完毕之后它的位置. ·LEFT:往左移动一个单位 ·RIGHT: 往右移动一个单位 ·SAME AS i: 和第i 条执行相同的

20161027模拟赛解题报告

20161027模拟赛解题报告 By shenben T1 数学题 模拟即可. 注意开long long T2 技巧题 图片为本题第一张图.(无奈,图传不上来) 首先第一问图中的“Y 字形”的数量,这么简单,在此不细讲. 详见代码 O(n)累加一下就好了 主要说说第二问怎么搞 预处理 每个点分别与其他那些点相连 权值为第1,2,3大(若没有2,3大,就忽略).记录一下权值与对应的点的标号.目的是方便下面的判断. 枚举入度>=3的点,即点B(有多个) 再枚举点B相连的D点(不是点A,C). Ste

20161026模拟赛解题报告

20161026模拟赛解题报告 By shenben T1 按照题目说的模拟即可 但这题有一个神坑:当25个字母都已经一一对应完毕后,剩下的两个字母默认对应. T2 所有的逆序对之间都会连边,求最大独立点集. 表面上是个图论题,其实是个LIS O(nlogn)求最长上升子序列的长度即可AC T3 第一次手贱,用链表存边,这是一个稠密图啊!!应该用邻接矩阵啊. 明明可以用floyed跑,非要dfs乱搞.结果10分.玩砸了吧. 最后只改到了40分. 网上的题解(没看懂): 首先这是一个神奇的图,叫做

hdu5017:补题系列之西安网络赛1011

补题系列之西安网络赛1011 题目大意:给定一个椭球: 求它到原点的最短距离. 思路: 对于一个椭球的标准方程 x^2/a^2 + y^2/b^2 +z^2/c^2=1 来说,它到原点的最短距离即为min(a,b,c) 所以我们需要把原方程化为标准型. 这时候线代就排上用场了,注意到原方程是一个二次型. 化为标准型 1/(k1)*x^2+1/(k2)*y^2+1/(k3)*z^2=1 后  min(k1,k2,k3)即为答案 而这里的1/k1,1/k2,1/k3 就是二次型矩阵的特征值 如何求特