首页 > 其他分享 >20240202-训练赛随记

20240202-训练赛随记

时间:2024-02-03 09:44:52浏览次数:31  
标签:int 20240202 long 刷表法 训练赛 更新 using dp 随记

机场检录

//二分
#include <bits/stdc++.h>
using namespace std;
long long n,m,a[100005];
bool check(long long x){
    long long t=0;
    for(int i=1;i<=n;i++) t+=(x/a[i]);
    return t>=m;
}
int main(){
    cin>>n>>m;
    for(int i=1;i<=n;i++) cin >> a[i];
    long long l=0,r=1e13;
    while(l<r){
        long long mid=(l+r)>>1;
        if(!check(mid)) l=mid+1;
        else r=mid;
    }
    cout<<r;
    return 0;
}

录制比赛

usaco银
dp,贪心?
按 开始时间/结束时间 排序?
#include <bits/stdc++.h>
using namespace std;
struct node{
	int l,r;
}a[205];
bool cmp(node a,node b){
	if(a.r==b.r) return a.l>b.l;
	return a.r<b.r;
}
int n,s1,s2,cnt;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i].l>>a[i].r;
	sort(a+1,a+n+1,cmp); 
	for(int i=1;i<=n;i++){
		if(s1<=a[i].l){
			cnt++;
			s1=a[i].r;
		}
		else if(s2<=a[i].l){
			cnt++;
			s2=a[i].r;
			swap(s1,s2);
		}
	}
	cout<<cnt;
	return 0;
}

水果

60分 刷表法 
for(int j=i+1;j<=i+v[i];j++) d[j]=min(d[j],d[i]+c[i]);
标记永久化 区间更新

填表法 倒填
区间查询 单点更新
a[i]=que(max(i-r[i],0),i-1,1)+v[i];
add(i,1,a[i]);
1.刷表法
用当前天的最优解,更新后面的日期。线段树区间更新,单点求值。
2. 填表法
倒着来,dp[i]表示的从i到n的最小花费。如果要买当前水果,就需要在[i+1,n]这些天里,选择一个最小的dp值即可。
3.树状数组
刷表法中的线段树,可以用树状数组代替。因为前面的天数已经没有用了。更新[L,R]与更新[1,R]一样。
树状数组,更新前缀,查询单点。
4.暴力
还有一种暴力优化,基于刷表法的更新区间[L,R] 从R到L扫描,如果无法更新了,就break。正确性比较显然,但是还是可以通过特意构造数据,让区间跑满。
#include <bits/stdc++.h>
using namespace std;
int n,m,a[50005],b[50005],d[50005];
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        d[i]=d[i-1]+a[i];
    }
    for(int i=1;i<=n;i++) cin>>b[i];
    for(int i=1;i<=n;i++){
        for(int j=min(n,i+b[i]-1);j>=i&&d[i-1]+a[i]<d[j];j--){
            d[j]=d[i-1]+a[i];
        }
    }
    cout<<d[n];
    return 0;
}

标签:int,20240202,long,刷表法,训练赛,更新,using,dp,随记
From: https://www.cnblogs.com/Firepaw-cattery/p/18004364

相关文章

  • 代数最值与函数随记
    代数式\(ax^2+bx+c\)的最值是(),()时有最大值,()有最小值。代数解\[ax^2+bx+c\]\[=a(x^2+\frac{b}{a}x)+c\]\[=a[(x^2+\frac{b}{a}x+(\frac{b}{2a})^2]+c-\frac{b^2}{4a^2}·a\]\[=a(x+\frac{b}{2a})^2+\frac{4ac-b^2}{4a}\]\(\therefore\)易得,当\(x=-\fr......
  • 算法随记_1 蛇形矩阵(偏移量法)
    蛇形矩阵title:(在线学习平台)link:(https://www.acwing.com/)cover:(https://cdn.acwing.com/media/activity/surface/log.png)输入两个整数n和m,输出一个n行m列的矩阵,将数字1到n×m按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入样例33输出样例12......
  • 2024寒假集训 进阶训练赛 (六)部分题解
    A统计单词数题解注意是否是单词。CODECPP#include<iostream>#include<string>#include<algorithm>usingnamespacestd;intmain(){stringword,article;getline(cin,word);getline(cin,article);//转换为小写字母transform(word.beg......
  • 图论 - 最短路随记
    顺序有点乱,后续会排一下,然后分板块整理All最短路算法的选择:\(n\le100\):Floyd(一般是较难的图论建模)\(n\le4\times10^5\):dijkstra尽量不用SPFA。神秘IDEA:一个带负权图,绝对最短路定义为,绝对值最小的最短路,求\(s\tot\)的绝对最短路。最短路中,任意......
  • k 栈排序随记
    定义给出序列\(a\),现有初始为空的序列\(b\)和\(k\)个初始为空的栈,你可以进行任意次以下两种操作:选择\(x\),若序列\(a\)非空,将\(a_1\)压入栈\(x\),并将其从序列\(a\)中删除。选择\(x\),若栈\(x\)非空,将栈\(x\)的栈顶元素加至序列\(b\)末端,并将其弹出。......
  • React 随记
    React没有响应式的概念useState的两个功能提供更新函数缓存变量数组或对象必须整体更新immutablemutable两个优点useRef的更新函数不会导致视图刷新普通变量也可以在视图中显示但是不会被监听状态的定义需要反向排除考虑并不是所有视图的需要的数据就定义为状态函......
  • 练笔随记
    三月的天气很糟糕,下了雨接着就开始冷,没过几天又热回来,实在是粘腻的烦人。家里那盆花也是,叫什么仙客来来着,没看神仙来过,估计悄悄摸进来过衰星,害得我心烦意乱,总是脑子一团糟,还天天被爸妈轮番唠叨。楼上的邻居也是,不知道我们这一栋楼不是一个材质还是怎样,他家的房子是纸板房吗?隔三......
  • 20231027NOIP训练赛
    20231027NOIP训练赛时间安排7:40-9:20写T19:20-10:20写T210:20-11:10写T3T411:10-11:50写T5总结T1写挂了,T3的set超时了题解T1简单DP题T2把加转化为差分,差分数组进行区间加操作,用线段树维护T3用一个栈维护一下没有被匹配的字符即可T4结论题,答案要么删掉一个点,要......
  • 20231019NOIP训练赛
    20231019NOIP训练赛时间安排7:50-8:50写T18:50-9:30写T29:30-10:30写T3T410:30-11:50写T1总结T2没花时间想,没想到建图题解T1枚举最大公约数,然后统计最大公约数的倍数T2并查集,设u=\(X_{b_i}\),v=\(X_{a_i}\),在u和v间建一条长度为\(c_i\)的边,可以用并查集维护,如果u和v已......
  • Java EasyExcel 随记
    JAR<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version></dependency>入口EasyExcel.write(response.getOutputStream(),导出实体类.class).sheet("......