【补题】组队训练第二场 & 个人训练第一场

组队第二场:

C题 CodeForces Gym 100735D

题意:给你N个木棍,问他们能拼成多少个三角形。

思路:从小到大排序,然后贪心地去取。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<vector>
 7 #include<set>
 8 #include<string>
 9 #include<sstream>
10 #include<cctype>
11 #include<map>
12 #include<stack>
13 #include<queue>
14 using namespace std;
15 #define INF 0x3f3f3f3f
16 int gcd(int a, int b){return b==0?a:gcd(b,a%b);}
17
18 long long s[20];
19 bool use[20];
20 int ans = 0, N;
21
22 int main()
23 {
24 //    freopen("input.txt", "r", stdin);
25 //    freopen("output.txt", "w", stdout);
26     memset(use, false, sizeof(use));
27     scanf("%d", &N);
28     for(int i = 0; i < N; i++)
29         scanf("%I64d", &s[i]);
30     sort(s, s + N);
31     for(int i = 0; i < N; i++)
32     {
33         if(use[i])    continue;
34         for(int j = i + 1; j < N; j++)
35         {
36             if(use[i])    break;
37             if(use[j])    continue;
38             for(int k = j + 1; k < N; k++)
39             {
40                 if(use[k])    continue;
41                 if(s[i] + s[j] > s[k])
42                 {
43                     ans++;
44                     use[i] = use[j] = use[k] = true;
45                     break;
46                 }
47                 else    break;
48             }
49         }
50     }
51     printf("%d\n", ans);
52     return 0;
53 }

个人第一场:

I题 HDU 5742 乍一看题目不太想看,看到很多人AC了才发现是一道水题,果然英文是个大问题。

题意:给你n个数,已知了m个数,求(a1 + a2) / (a1 + a2 + ... + an)的最大值。

思路:除了a1, a2外,从后往前扫一遍赋最小的值就行了。可以不用结构体的,我写烦了。

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<iostream>
 4 #include<algorithm>
 5 #include<cmath>
 6 #include<vector>
 7 #include<set>
 8 #include<string>
 9 #include<sstream>
10 #include<cctype>
11 #include<map>
12 #include<stack>
13 #include<queue>
14 using namespace std;
15 #define INF 0x3f3f3f3f
16 typedef long long ll;
17 int gcd(int a, int b){return b==0?a:gcd(b,a%b);}
18
19 struct Node{
20     int num;
21     int flag;
22 }node[105];
23
24 int main()
25 {
26 //    freopen("input.txt", "r", stdin);
27 //    freopen("output.txt", "w", stdout);
28     int T, n, m, x, y, p, q, k;
29     scanf("%d", &T);
30     while(T--){
31         p = q = k = 0;
32         scanf("%d%d", &n, &m);
33         for(int i = 1; i <= n; i++){
34             node[i].num = 0;
35             node[i].flag = 0;
36         }
37         while(m--){
38             scanf("%d%d", &x, &y);
39             node[x].num = y;
40             node[x].flag = 1;
41         }
42         for(int i = n; i >= 3; i--){
43             if(node[i].flag)    k = node[i].num;
44             else    node[i].num = k;
45         }
46         if(!node[1].flag){
47             node[1].num = 100;
48             if(!node[2].flag)
49                 node[2].num = 100;
50         }
51         else if(!node[2].num)
52             node[2].num = node[1].num;
53         p = node[1].num + node[2].num;
54         for(int i = 1; i <= n; i++)
55             q += node[i].num;
56         int mode = gcd(p, q);
57         printf("%d/%d\n", p / mode, q / mode);
58     }
59     return 0;
60 }

依旧是两道水题啊~~~

时间: 2024-11-05 23:41:06

【补题】组队训练第二场 & 个人训练第一场的相关文章

2015 ACM多校训练第一场

在下面网址看效果更佳>_< http://mlz000.github.io/2015/08/07/2015-ACM%E5%A4%9A%E6%A0%A1%E8%AE%AD%E7%BB%83%E7%AC%AC%E4%B8%80%E5%9C%BA/ 题外话 这个暑假以前就决定要把这次多校的所有题全补了,中间断断续续,总算把第一场的题补全了,鄙视一下颓废的自己... hdu 5288(1001) OO's Sequence Solution 水题,定义两个数组L[i],R[i]示第i个数左侧和右侧最接

2014多校联合训练第一场(组队训练)

这是我.potaty.lmz第二次训练,毕竟经验不足,加上水平不够,导致我们各种被碾压. A - Couple doubi: 这道题是道比较水的数论.但我们都没想出来要怎么做.后来是potaty提议打个表看看,然后lmz打出表后发现了规律.我还没细看,待研究后再补全. D - Task: 这道题一看就知道是个贪心(现在只要是有deadline的题我都觉得是贪心了).虽然想出来了,但还是不会严格证明为什么只要取满足task的且y最小(y相等时x最小)的machine就行了. 我的做法是把所有mac

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 建筑 你哥哥在最近的建筑问题突破大会上获得了一个奖项 并获得了千载难逢的重新设计城市中心的机会 他最喜欢的城市奈梅根.由于城市布局中最引人注目的部分是天际线, 你的兄弟已经开始为他想要北方和东方的天际线画一些想法

Dream_Chaser队训练赛第一场 I题

Dream_Chaser队训练赛第一场 I题 题目来自2012成都区域赛 I - Count Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4472 Description Prof. Tigris is the head of an archaeological team who is currently in charge of a

早晨训练赛第一场 B题 哈希

早晨训练赛第一场 B题 B - Trees in a Row Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Practice CodeForces 402B Description The Queen of England has n trees growing in a row in her garden. At that, the i-th (1 ≤ i 

集训队寒假集训第二场补题题解

补题什么的待填坑... A - Generous Kefa (语法基础) 直接开桶看看有没有超过三个的,因为题目明确提出没有气球也是可以的 代码 #include <bits/stdc++.h> using namespace std; int bk[123213]; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,k; cin>>n>>k; string a; cin>&g

HDU 4864 Task (贪心+STL多集(二分)+邻接表存储)(杭电多校训练赛第一场1004)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4864 解题报告:有n台机器用来完成m个任务,每个任务有一个难度值和一个需要完成的时间,每台机器有一个可以工作的最长时间和一个可以完成的任务的难度的最大值, 一台机器能完成一个任务的条件是这台机器的最长工作时间和能完成任务的难度值必须都大于等于这个任务,而且一台机器最多完成一个任务,假设一个任务的时间为t,难度值为x,那么完成这个任务可以赚到的钱 money = 500 * t + 2 * x; 现在

2018 HDU多校第三场赛后补题

2018 HDU多校第三场赛后补题 从易到难来写吧,其中题意有些直接摘了Claris的,数据范围是就不标了. 如果需要可以去hdu题库里找.题号是6319 - 6331. L. Visual Cube 题意: 在画布上画一个三维立方体. 题解: 模拟即可. 代码: #include <bits/stdc++.h> using namespace std; int a, b, c, R, C; char g[505][505]; int main () { int T; cin >>

2019 hdu 第四场补题 (1 ,签到题

因为太菜了,前几场的题都没补,从今天开始慢慢补 以后晚上要早睡,早上早起,抽出时间看书,每天只肝一局杀戮尖塔,上床不玩手机 每周五把一周总结的板子打印下来,毕竟老年人记性 补题顺序按难度升序 1001 AND Minimum Spanning Tree 题意:定义边的权值为两结点的&和,构造字典序最小的最小生成树 分析: 1.构造型算法 2.二进制数字默认有前导0,在纸上随便画画就发现构造将相邻点最低位0置为1,其余位为0为最优解,如果范围不够则直接置为1 题解: 1001. AND Minim