首页 > 其他分享 >暑假好题选讲

暑假好题选讲

时间:2024-07-23 15:33:19浏览次数:15  
标签:return point int top 选讲 好题 stk 暑假 凸包

\(TXX\) 讲课。\(2024 \ 7 \ 23.\)

\(T1.\)

首先你可以考虑用 \(dp.\) 先记棋子脚下的位置为 \(v\),动态规划方程:

\(f_i=\max\{\dfrac{1}{2}(f_{i-1}+f_{i+1}),v_i\}\)

利用这个方程,我们可以把他用 \((i,f_i)\) 的画在平面上。

然后观察这个平面,发现 \(i\) 位置上面的答案也就是凸包位置。凸包直接做就好了。

用叉积做凸包。很简单的求解。

注意卡精度。

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,K=5e4;
int n,v[N],stk[N],prv[N],nxt[N],top,tmp=1;
struct point{
	int x,y;
	point operator -(point a){return point(x-a.x,y-a.y);}
	int operator *(point a){return x*a.y-y*a.x;}
	point(int X=0,int Y=0){x=X,y=Y;}
}p[N];
bool cmp(point a,point b){if(a.x^b.x)return a.x<b.x;return a.y<b.y;}
signed main(){
	cin>>n;
	p[1]=point(1,0);
	for(int i=2;i<=n+1;++i)cin>>v[i],v[i]*=1e5,p[i]=point(i,v[i]);
	n+=2,p[n]=point(n,0);
	stk[top=1]=1;
	for(int i=2;i<=n;++i){
		while(top>1&&(p[stk[top]]-p[stk[top-1]])*(p[i]-p[stk[top]])>0)--top;
		stk[++top]=i;
	}
	int j=2;
	for(int i=2;i<n;++i){
		while(stk[j]<=i)++j;
		printf("%lld\n",(int)(v[stk[j-1]]+(i-stk[j-1])*(v[stk[j]]-v[stk[j-1]])*1.0/(stk[j]-stk[j-1])));
	}
}

标签:return,point,int,top,选讲,好题,stk,暑假,凸包
From: https://www.cnblogs.com/chihirofujisaki/p/18318515/2024SummerVacation

相关文章

  • 暑假集训CSP提高模拟5
    听好了:7月22日,比样的学长就此陷落。每个陷落的学长都将迎来一场模拟赛,为这些模拟赛带来全新的题面。你所熟知的一切都将改变,你所熟悉的算法都将加诸比样的考验。至此,一锤定音。尘埃,已然落定。#听好了#听好了#听好了啥?你不知道这是什么梗?其实是Arcaea公式说话喜欢......
  • 2024暑假集训测试9
    前言比赛链接。一点部分分没打感觉要被D了。赛时题面和数据好像有出了点问题,不过我T3没做换数据不关我的事,但是T1还特殊考虑了\(a_i<0\)的情况,实则不用。T2理解错题了硬控\(2\)个多小时,发现之后改改就过了,但T3、T4没时间看了。但是这次终于不挂分了。T1简......
  • Luogu P4310 绝世好题 题解 [ 绿 ] [ 线性 dp ] [ 单调队列优化 ] [ 二进制优化 ]
    题目:绝世好题。暴力dp显然\(O(n^2)\)转移即可。单调队列优化观察到只有某二进制位两个数都为\(1\)时才能转移,因此我们把每个二进制位开一个单调队列,然后对于一个数\(a\),找到它是\(1\)的二进制位并选其单调队列的队头进行转移,在这之后把这个数加入符合要求的单调队列......
  • 『模拟赛』暑假集训CSP提高模拟5
    Rank痛失Rank2A.简单的序列签到题。读入的时候直接处理。比上一个小就从上一位开始除以二,一直到某一位比上一位大或到了第一位为止。Code:#include<bits/stdc++.h>#definefo(x,y,z)for(registerint(x)=(y);(x)<=(z);(x)++)#definefu(x,y,z)for(registerint(......
  • 暑假集训 加赛1
    暑假集训加赛1P145修仙(restart)题目中的可以指恰好。考虑计算双休带来的差值。令\(b_{i}=a_{i}+a_{i+1}-\max(a_{i}+a_{i+1},0)\),则需要计算从\([1,n)\)中选出\(k\)个不相邻的\(b_{i}\)的最大价值,同luoguP1484种树|luoguP1792[国家集训队]种树|......
  • 暑假集训CSP提高模拟4
    据说我的\(T2\)乱搞硬控学长一上午?A.WhiteandBlack对于挨着的颜色相反的节点,肯定要每个点都转一次,手摸一下会发现,只要节点与父亲节点颜色不同就会产生一次贡献,但每次\(dfs\)直接扫\(O(n)\)会\(T\),所以我们需要去记录一下每个节点的儿子数,会发现对于节点和非父亲的......
  • 2024暑假集训测试8
    前言比赛链接。爆零了?!?T4莫名CE了,T2因为某些人打乱搞做法使出题人改数据和时限,\(O(npk)\)做法死掉了,主要还是数组开大了还忘了算,直接爆零了。T1WhiteandBlack显然不存在无解,从根开始扫,遇到黑色就翻转,前后顺序不影响结果,该方案为正确且唯一方案。继续观察发现若一个......
  • 2023年度好题(1)
    文章有点长,都是由本人一点一点写出来的,公式加载需要一段时间。CF1152ENekoandFlashback思路来自@apple365。思路任意一组\(b_i,c_i\)都是相邻的两条边,所以我们将\(b_i\)和\(c_i\)连起来,如果可以跑通一条欧拉路径,那么这条欧拉路径上的所有数字就可以组成数组\(a\)......
  • 2024暑假集训测试7
    前言比赛链接。终于不挂分了这次,但是T2写得太慢了导致T4没写完只能胡暴力。但是赛时数据和样例出了好多问题给不少人造成了影响。T1abc猜想\(ans=\lfloor\dfrac{a^b}{c}\rfloor\bmodc=\dfrac{a^b-a^b\bmodc}{c}\bmodc\)不妨设\(\dfrac{a^b-a^b\bmodc}{c}=kc+a......
  • 2024暑假总结1
    总结记得26号来见到了一些新同学,还考了一场试,题目都很基础,但是我清楚地记得我把图论大部分内容都忘了,第二题计数题也没调出来。这次经历让我深深感受到半年不碰OI再次上手时原来如此乏力,脑海中搜索出的知识结构图也只有空荡荡的框架而无多少内容。看到一个知识只是粗略知道它的原......