首页 > 其他分享 >CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)

CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)

时间:2023-04-02 16:14:01浏览次数:55  
标签:Rated int cin long qr Prizes Div define

题目链接

C

核心思路

其实这个操作无非就两种:插入和删除。

我们可以把重复的元素都先删除,因为这肯定是每个操作必须要做的。

我们可以从最基础的情况出发也就是怎么构造出来\(1\sim a[i]\)的序列呢。肯定是吧\(i\sim n\)之后的序列都删除吧,然后把前面缺少的再补上去吧。

所以我们可以把前面都排序,也就是比如:1 3 4 7 8.到4的时候前面肯定已经有了2个数。所以只需要再补一个数就好了。

唯一需要注意的是需要特判1的情况。

#include<bits/stdc++.h>
using namespace std;
int p[100005];
typedef long long ll;
void solve()
{
    int n,a,b;scanf("%d%d%d",&n,&a,&b);
    set<int> st;
    ll sol = 0 , ans = 2e18;
    for(int i = 1;i <= n;i++) {
        int x;scanf("%d",&x);
        if(st.find(x) == st.end()) st.insert(x);
        else sol += a;
    }
    int c = 0;
    for(auto x : st) p[++c] = x;
    for(int i = 1;i <= c;i++) {
        ans = min(ans , 1LL*(p[i] - i)*b + 1LL*(c-i)*a);
    }
    ans = min(ans , 1LL*c*a + b) ;
    printf("%lld\n",ans+sol);
}
int main()
{
    int t;scanf("%d",&t);
    while(t--) solve();
}

D


核心思路

首先我们可以很容易的得出来这个最大的L也就是爬行长度是:\((n-1)*(a-b)+a\),那么最小的自然也就是我们不可以在\(n-1\)天就提前爬完了所有的路程,所以L需要大于\((n-2)*(a-b)+a\).也就是\(L \in ((n-2)*(a-b)+a,(n-1)*(a-b)+a]\).

所以我们的操作1就比较好维护了,不断地两个区间取交集就好了。

那么操作2,首先需要明确操作2是要我们求天数,我们可以从上面的式子中把天数的表达式求出来:

\(n-2 \leq \frac{L-a}{a-b} \leq n-1\).

于是我们向上取整在加1就是n,接下来只需要看l和r代表的n是否相同就好了。

// Problem: D. Climbing the Tree
// Contest: Codeforces - CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)
// URL: https://codeforces.com/contest/1810/problem/D
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

#define _CRT_SECURE_NO_WARNINGS
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
#define IOS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
#define NO {puts("NO") ; return ;}
#define YES {puts("YES") ; return ;}
#define endl "\n"
#define int long long 


void solve()
{
	int q;
	cin>>q;
	int l=1,r=1e18;
	while(q--)
	{
		int op;
		cin>>op;
		if(op==1)
		{
			int a,b,n;
			cin>>a>>b>>n;
			int ql=(n-2)*(a-b)+a+1;
			int qr=(n-1)*(a-b)+a;
			if(n==1)
			ql=1,qr=a;
			if(ql>r||qr<l)
			puts("0");
			else
			l=max(l,ql),r=min(r,qr),puts("1");
			
		}
		else
		{
			int a,b;
			cin>>a>>b;
			int ans1=max(1ll,(l-b-1)/(a-b)+1);
			int ans2=max(1ll,(r-b-1)/(a-b)+1);
			if(ans1==ans2)
			cout<<ans1<<endl;
			else
			puts("-1");
		}
	}
}


signed main()
{
int t;
cin>>t;
while(t--)
{
	solve();
}
}

标签:Rated,int,cin,long,qr,Prizes,Div,define
From: https://www.cnblogs.com/xyh-hnust666/p/17280665.html

相关文章

  • SP181 SCUBADIV - Scuba diver 题解
    题目传送门题目大意潜水员有\(n\)个气缸,每个气缸能够提供容量为\(o_i\)的氧气和容量为\(d_i\)的氮气,每个气缸的重量为\(w_i\)。给出潜水员所需要的氧气量和氮气量,求所需气缸的总重的最低限度是多少。解题思路对于每个气缸,有两种不同的费用:氧气和氮气,需要满足这两个条......
  • CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!) A-E
    从C题开始写好了MakeItPermutation首先我们分析假如我们确定了要选择一个长度为n的序列,该怎么计算代价很明显一个是算保留多少个一个是算要加多少个,然后如果我们算完了选择长度n-1的序列那么更新答案的时候只需要看n这个数字是否存在就可以了,然后更新一下删掉多少个数字......
  • Codeforces Round 861 (Div. 2)
    题目链接C核心思路这个思路说实话有点玄学,也就是我们前面的数位按照l或者r的相同数位来填补,后面就填相同的数字也就是比如l是2345我们可以是2999,2888,23111,23777.这样构造好像肯定是最小的。但是好好巩固下数位dp来做这道题还是更好的。#include<iostream>#include<cstr......
  • CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!)(CF1810)A~D题题解
    今天采用的是新格式。CF1810ABeautifulSequence点击查看原题点击查看思路如果一个数字的值\(v\),不大于当前的位置\(p\),那我们可以通过删除\(p-v\)个数字,使它们两个对应上。比如\([1,7,2,5,3]\)中的\(3\),其数值为\(3\),位置为\(5\),数值\(3\)小于等于\(......
  • CodeTON Round 4 (Div. 1 + Div. 2, Rated, Prizes!) A-D题解
    题目地址A-BeautifulSequence题意:给出一个数组,问是否存在任意一个子区间,存在i,使得ai=iSolution直接比较当前的数和i的大小就行了,当前为x,如果要求答案存在,必须有i>=xvoidsolve(){ intn;cin>>n; intflag=0; for(inti=1;i<=n;i++) { intx;cin>>x; if(i>=x) {......
  • cf-div.2-860d
    题目链接:https://codeforces.com/contest/1798/problem/D贪心,比赛时一直搞C没搞出来,回头看D反而更简单。贪心策略:能填正数就填,填不了填负数。大致证明:构造的区间一定呈一个这样的特定区间,正...负正负负...负正....负负,证明一段区间为正且小于给定值易证,下面证最后一段区间的绝......
  • Codeforces Round 859 (Div. 4) ABCDE(交互题)FG1G2
    EFG1G2质量还挺好的A.PlusorMinushttps://codeforces.com/contest/1807/problem/A题目大意:给定a,b,c,问我们是a+b==c还是a-b==c?把正确的符号输出。input1112332129-7347112110336991899019-81910output+--++-++--+......
  • 定时任务@Scheduled中的cron 表达式和 fixedRated类配置参数
    1.cron表达式格式:@Scheduled(cron="******"){秒数}{分钟}{小时}{日期}{月份}{星期}{年份(可为空)}{秒数} ==>允许值范围:0~59,不允许为空值,若值不合法,调度器将抛出SchedulerException异常"*"代表每隔1秒钟触发;","代表在指定的秒数触发,比如"0,15,45"......
  • Div滚动到头以后置顶
    1<!DOCTYPEHTML>2<html>3<head>4<metacharset="utf-8"/>5<title>Div滚动到头以后置顶</title>6</head>7<bodystyle="height:2000px;">8<divstyle="height:200px&q......
  • cf-div2-860c
    题目链接:https://codeforces.com/contest/1798/problem/C大致题意:给你一个长度为\(n(n<=2e5)\)的序列的\(a_i,b_i\),让你把这个序列分成数目最少的段,每一段都有一个值\(c\),\(c=a_i的一个约数乘以b_i\)。比赛没写出的题。思路:\(首先一段里面的所有a_i*b_i能够整除c,易得c是所有b的......