Codeforces Round #433 (Div. 2)

题目链接:Codeforces Round #433 (Div. 2)

codeforces 854 A. Fraction【水】

题意:已知分子与分母的和,求分子小于分母的 最大的最简分数。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 int gcd(int a,int b){return b?gcd(b,a%b):a;}
 7 int n;
 8 int main() {
 9     int a, b;
10     scanf("%d", &n);
11     for(int i = n/2; i >= 1; --i)
12         if(gcd(i, n-i)==1) {a = i, b = n-i; break;}
13     printf("%d %d\n", a, b);
14     retur

15ms

codeforces 854 B. Maxim Buys an Apartment【水】

题意:有标号1~n的n个公寓顺序排列在一条线,已知有k个公寓不为空 但不知道是哪k个,定义一个 空的 并且旁边至少有一个 非空的公寓 为好公寓,问最少和最多有几个 好公寓。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 int n, k;
 7 int main() {
 8     int a, b;
 9     scanf("%d %d", &n, &k);
10     if(k >= n/3+1) {a = (n!=k); b = n-k;}
11     else {a = (k!=0); b = k*2;}
12     printf("%d %d\n", a, b);
13     return 0;
14 }

15ms

codeforces 853 A. Planning【优先队列】

题意:n个航班,原本顺序出发,现在已知前k分钟没有航班能出发,每个航班均只能延迟出发时间,已知每个航班延迟一分钟需要的花费,现在要你安排出发顺序,使得总花费最小。

题解:用优先队列维护延迟时间最大值,贪心的对每个位置取队列中的最大值。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <queue>
 5 #include <algorithm>
 6 using namespace std;
 7 typedef long long ll;
 8 const int N = 3e5+5;
 9 int n, k;
10 int c[N], a[N];
11 priority_queue<pair<int, int> > q;
12 ll ans, t;
13 int main() {
14     ans = t = 0;
15     while(!q.empty()) q.pop();
16     int i, j, x;
17     scanf("%d %d", &n, &k);
18     for(i = 1; i <= k+n; ++i) {
19         if(i <= n) {
20             scanf("%d", &x); t += x;
21             q.push(make_pair(x, i));
22         }
23         if(i > k) {
24             a[q.top().second] = i;
25             t -= q.top().first; q.pop();
26         }
27         ans += t;
28     }
29     printf("%lld\n", ans);
30     for(i = 1; i < n; ++i)
31         printf("%d ", a[i]);
32     printf("%d\n", a[n]);
33     return 0;
34 }

187ms

未完待补。。。

codeforces 853 B. Jury Meeting

时间: 2024-10-18 13:04:19

Codeforces Round #433 (Div. 2)的相关文章

CodeForces 360E Levko and Game(Codeforces Round #210 (Div. 1))

题意:有一些无向边m条权值是给定的k条权值在[l,r]区间可以由你来定,一个点s1 出发一个从s2出发  问s1 出发的能不能先打到f 思路:最短路. 首先检测能不能赢 在更新的时候  如果对于一条边 a->b  如果dis1[a] <dis2[a]  那么选择这条边就选择   l  因为这条边对于s1有利 如果两个起点都选择了这条边  则说明s1 赢定了,所以要让他们尽量走这条,所以边权越小越好.跑完之后检测 如果  dis1[f]<dis2[f] 那么 就赢了. 接下来判断能不能平局

Codeforces Round #433 (Div. 1) D. Michael and Charging Stations(dp)

题目链接:Codeforces Round #433 (Div. 1) D. Michael and Charging Stations 题意: 一个人每天要加油,1种为1000,1种为2000,如果付全额,会得到10%的回扣放在卡上. 如果卡上有剩余的回扣,可以拿来抵现金.问n天最少需要花多少钱. 题解: 很直观的一个dp就是考虑dp[i][j],表示第i天卡上剩余回扣为j的最小花费. 将所有的数除以100后,j其实是小于40的,严格的说是小于30,官方题解有个证明. 因为卡上不可能积累很多的

Codeforces Round #424 (Div. 2) D 思维 E set应用,树状数组

Codeforces Round #424 (Div. 2, rated, based on VK Cup Finals) D. Office Keys 题意:一条直线上,有个办公室坐标 p,有 n个人在a[i],有 k把钥匙在b[i],每个人必须拿到一把钥匙,然后到办公室.问怎么安排花的时间最短. tags:还是不懂套路啊..其实多画两下图就能够感觉出来,2333 关键是要看出来,n个人拿的 n把钥匙应该是连续的. 然后,就是瞎暴力.. #include<bits/stdc++.h> usi

B. Ohana Cleans Up(Codeforces Round #309 (Div. 2))

B. Ohana Cleans Up Ohana Matsumae is trying to clean a room, which is divided up into an n by n grid of squares. Each square is initially either clean or dirty. Ohana can sweep her broom over columns of the grid. Her broom is very strange: if she swe

小蒟蒻初次CF滚粗+爆炸记 (Codeforces Round #466 Div.2)

比赛链接:http://codeforces.com/blog/entry/57981 小蒟蒻今天初次在ZCDHJ张大佬的带领下,打了一场CF (张大佬cnblogs链接:https://www.cnblogs.com/ZCDHJ)' 英文完全看不懂,后面几题直接放弃,各位dalao请见谅 T1: 题目链接:http://codeforces.com/contest/940/problem/A 题目大意: 给你一个n个数的集合,要求你删掉若干数,其中最大的差不应该超过d,求最小删除量. (小蒟蒻

Codeforces Round #517 (Div. 2)(1~n的分配)

题:https://codeforces.com/contest/1072/problem/C 思路:首先找到最大的x,使得x*(x+1)/2 <= a+b 那么一定存在一种分割使得 a1 <= a 且 b1 <= b 证明: 从x 到 1枚举过去,对于某个i 如果 a >= i, 那么这个i放在第一天 如果a < i,那么后面肯定会遇到一个a把第一天填满(因为我们是从大到小枚举的) 所以第一天可以填满,那么除了第一天剩下的加起来也小于等于b #include<bits

Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) B. Maxim Buys an Apartment

题意:有n个房子,k个有人住,问最少有多个,最多有多少个好的房子,好的房子定义:周围最少有一个房子有人住 思路:我们可以知道一个住了人的房子他最多产生2个好的房子(左右)所以判断k*3是否>=n 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+100; 4 typedef long long ll; 5 6 7 int main(){ 8 ll n,k; 9 cin>>n>>k;

【CodeForces】841C. Leha and Function(Codeforces Round #429 (Div. 2))

[题意]定义函数F(n,k)为1~n的集合中选择k个数字,其中最小数字的期望. 给定两个数字集A,B,A中任意数字>=B中任意数字,要求重组A使得对于i=1~n,sigma(F(Ai,Bi))最大. [算法]数学结论+数学期望+排序 [题解]很无奈,这题放在div2 C,难以推导的期望公式,广为人知的结论,容易观察样例得出的做法,都体现了这道题的不合理性. F(n,k)=(n+1)/(k+1) 公式推导可能触及我的知识盲区了QAQ 得到公式后,显然要求k尽可能小,n尽可能大,经验告诉我们随着两数

D2 Equalizing by Division (hard version) &amp;&amp;D1 Equalizing by Division (easy version) (easy version)(Codeforces Round #582 (Div. 3))

The only difference between easy and hard versions is the number of elements in the array. You are given an array aa consisting of nn integers. In one move you can choose any aiai and divide it by 22 rounding down (in other words, in one move you can