首页 > 其他分享 >CF 1611 BF

CF 1611 BF

时间:2023-01-14 18:46:30浏览次数:35  
标签:BF int sum Codeforces CF 1611 ++ Limit scanf

B

题面大意

a 个 1,b 个 2,组(1, 1, 1, 2)(1, 1, 2, 2)(1, 2, 2, 2)的组最多能组几组。

题面关键

解题思路

其实我也不知道为什么,但是 $ \min { a, b, \frac{a + b}{4} } $ 就行了。

思路要点

AC 代码

// Problem: B. Team Composition: Programmers and Mathematicians
// Contest: Codeforces - Codeforces Round #756 (Div. 3)
// URL: https://codeforces.com/contest/1611/problem/B
// Memory Limit: 256 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
using namespace std;

int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		int a, b;
		scanf("%d %d", &a, &b);
		printf("%d\n", min(min(a, b), (a + b) / 4));
	}
	return 0;
}

F

题面大意

找一个最长的子串 $ a_l, a_{l + 1}, \cdots, a_{r} $ 使得 $ \sum _ {i = l} ^ {r} a_i + S \geq 0 $ 。

题面关键

既然是一个子串,那能不能双指针?

解题思路

先找第一个符合条件的,如果没有就是 -1 。
然后双指针,每次 l + 1 ,最大限度扩展 r ,然后更新。

思路要点

十年OI一场空,不开ll见祖宗!

AC 代码

// Problem: F. ATM and Students
// Contest: Codeforces - Codeforces Round #756 (Div. 3)
// URL: https://codeforces.com/contest/1611/problem/F
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#include <bits/stdc++.h>
using namespace std;

int a[200005];

int main() {
	int t;
	scanf("%d", &t);
	while (t--) {
		int n, s;
		scanf("%d %d", &n, &s);
		for (int i = 0; i < n; i++) {
			scanf("%d", &a[i]);
		}
		int r = -1;
		for (int i = 0; i < n; i++) {
			if (s + a[i] >= 0) {
				r = i;
				break;
			}
		}
		if (r == -1) {
			puts("-1");
			continue;
		}
		long long sum = s + a[r];
		int ansl = r, ansr = r, mx = 1;
		for (int l = r; l < n; l++) {
			if (r < l) {
				r++;
				sum += a[r];
			}
			while (r < n && sum >= 0) {
				sum += a[++r];
			}
			sum -= a[r--];
			if (r - l + 1 > mx) {
				ansl = l;
				ansr = r;
				mx = r - l + 1;
			}
			sum -= a[l];
		}
		printf("%d %d\n", ansl + 1, ansr + 1);
	}
	return 0;
}

标签:BF,int,sum,Codeforces,CF,1611,++,Limit,scanf
From: https://www.cnblogs.com/AProblemSolver/p/17052339.html

相关文章

  • CF280D k-Maximum Subsequence Sum
    CF280Dk-MaximumSubsequenceSumWC现在正在讲网络流,我也来写一题网络流!一开始真想不到这题能费用流。但是\(k\)规模较小告诉我们可以先从一个一个区间贪心做入手。但......
  • CF1227F2 Wrong Answer on test 233 (Hard Version)
    简要题意给定\(n\),\(k\)和值域\([1,k]\)的\(n\)个整数\(h_i\),求有多少个长为\(n\)的整数序列\(a\)满足值域\([1,k]\),且\(\sum\limits_{i=1}^n[a_i=h_i]<\sum......
  • 题解 CF678D【Iterated Linear Function】
    暴力解法。初学群论,可能写的不是很严谨,望大佬指正。problem\[g^{(n)}(x)=\begin{cases}x,&(n=0).\\f(g^{(n-1)}),&(n>0).\end{cases}\]其中\(f\)是一次函数。给出......
  • 【题解】CF848C Goodbye Souvenir
    冷漠和缄默思路cdq分治。有各种懂哥写了科技做法,比如树套树和二维分块,有点离谱。首先考虑答案的形式。令\(lst_i\)为\([1,i)\)中\(a_i\)最后一次出现的位置,则......
  • 【luogu CF1707D】Partial Virtual Trees(容斥)(DP)
    PartialVirtualTrees题目链接:luoguCF1707D题目大意给你一棵以1为根的数,问你对于每个长度,有多少个点集序列,第一个点集是全部点,最后一个点集只有1号点,且中间每个点......
  • CF1771C 质数分解+思维技巧题 *1600 (普及+/提高)
    Problem-1771C-Codeforces有 T 组数据,每组数据给出 n 和长度为 n的数列 a[i]​,判断有没有两个数不互质,如果有输出"YES",没有输出"NO"n≤2e51≤a[i]≤1e9难......
  • 【题解】CF893F Subtree Minimum Query
    那个……令姐……能以成亲为前提……和我交往吗(娇羞)集训完刚好开方舟春活,并且我刚好攒够了给令姐买衣服的石头,这真的是巧合吗?思路各种做法,但是有强化版。首先是naive......
  • CF244A Dividing Orange 题解
    Description有\(n\timesk\)个橘子,\(k\)个小朋友每人拿\(n\)个,但是每个人都指定了一个橘子\(a_i\),分配时必须要把\(a_i\)给第\(i\)个小朋友,求任一分配方案。So......
  • dpdk入门实践5--basicfwd和pktgen
    安装pktgen我之前安装的dpdk版本是stable-18.11.2,linux版本为3.10.0-1160.36.2.el7.x86_64,从网站http://git.dpdk.org/apps/pktgen-dpdk/refs/下载尝试多个版本的pktg......
  • D. Friendly Spiders(bfs最短路径、质数虚点建图)
    题意:给一个长度为n的数组a,数组中两两不互质的数可以建一条边,即$gcd(a[i],a[j])≠1$,i,j之间存在伊奥无向边问s到t的最短路径是多长,并输出题解根据唯一分解......