首页 > 其他分享 >P2344 [USACO11FEB] Generic Cow Protests G

P2344 [USACO11FEB] Generic Cow Protests G

时间:2024-04-13 22:33:37浏览次数:24  
标签:pre sort 100005 Protests Generic ll P2344 sum dp

原题链接

题解

1.观察数据法:看到 \(1e^5\) 想到线性递推,想到遍历每头奶牛试着在它们后面添加隔断时的分组方案数
2.对于奶牛 \(i\) 它的状态转移方程为 \(dp[i]+=dp[j];j<i;sum[j]<=sum[i]\)
3.上述可以把 \(sum\) 看成 x轴, \(dp\) 看成 \(f(x)\),这样就变成了求小于 \(sum[i]\) 的所有 \(dp[i]\) 的区间求和,而对 \(sum[i]\) 上的 \(dp[i]\) 修改又是单点修改,所以考虑树状数组
4.由于有负数,所以要离散化,注意开头的零也要离散化进去

code

#include<bits/stdc++.h>
#define ll long long
#define lowbit(x) ((x)&(-x))
const ll mod=1e9+9;
using namespace std;
ll dp[100005]={0};
ll tree[100005]={0};
ll haxi[100005]={0};
ll n;
ll pre[100005]={0},pre_sort[100005]={0};
ll len=0;

ll query(ll x)
{
    ll sum=0;
    while(x)
    {
        sum+=tree[x];
        sum%=mod;
        x-=lowbit(x);
    }
    return sum;
}

void update(ll x,ll val)
{
    while(x<=len)
    {
        tree[x]+=val;
        tree[x]%=mod;
        x+=lowbit(x);
    }
}

int main()
{
    cin>>n;
    for(ll i=1;i<=n;i++)
    {
        cin>>pre[i];
        pre[i]+=pre[i-1];
        pre_sort[i]=pre[i];
    }

    sort(pre_sort,pre_sort+1+n);

    len=unique(pre_sort,pre_sort+1+n)-pre_sort;//离散化操作,由于前面的隔断可以选零点后面,所以零点也算上隔断
    for(int i=0;i<=n;i++) haxi[i]=lower_bound(pre_sort,pre_sort+len,pre[i])-pre_sort+1;//离散化,+1代表第几小

    update(haxi[0],1);
    for(ll i=1;i<=n;i++)
    {
        dp[i]=query(haxi[i]);
        update(haxi[i],dp[i]);
    }

    //for(int i=1;i<=n;i++) printf("dp:%d\n",dp[i]);
    cout<<dp[n];
    return 0;
}

//对于每个i,求所有满足presj<presi的dp[j]和,把pres看成下标x,dp看成f(x),则变成求pres-f(x)
//实际上我们只需要直到pres的相对大小即可,所以把他们离散化

标签:pre,sort,100005,Protests,Generic,ll,P2344,sum,dp
From: https://www.cnblogs.com/pure4knowledge/p/18133511

相关文章

  • 5.7打补丁—编译和官方一致的Linux_Generic包
    5.7打补丁—编译和官方一致的Linux_Generic包需求来源某客户现场业务系统出现了查询丢失数据问题(数据库为MySQL5.7.21,使用Linux-Generic包部署)。已查明:丢数据问题是触发了MySQL5.7的一个bug,该bug在5.7的后继版本已修复。客户不想升级数据库版本,希望将fix的代码打到5.7.21重......
  • 记一次使用GenericObjectPool的问题
    记一次使用org.apache.commons.pool2.impl.GenericObjectPool过程中遇到的问题背景:因为一个古老的非Spring项目需要使用RabbitMq,些时需要自己封装客户端来使用。要求:不使用Spring框架尽量不浪费资源,更少的connection和channel全局connection最多只能有3个每个conneti......
  • openGauss学习笔记-257 openGauss性能调优-使用Plan Hint进行调优-Custom Plan和Gener
    文章目录openGauss学习笔记-257openGauss性能调优-使用PlanHint进行调优-CustomPlan和GenericPlan选择的Hint257.1功能描述257.2语法格式257.3示例openGauss学习笔记-257openGauss性能调优-使用PlanHint进行调优-CustomPlan和GenericPlan选择的Hint257.......
  • Use cases for Rust generics
    Rustprovidesthreemainusagescenariosforgenericparameters,eachwithitsuniquepurposesandadvantages:DelayedBinding:Genericsallowdelayingtheconcretetypebindingofdatastructures,providingflexibilityandcodereusability.Whendefinin......
  • 泛型编程(Generic Programming)
    泛型编程(GenericProgramming)虚函数->含有虚函数的类就是抽象类编译(compile)链接(link)转换函数(Conversionfunction)例如将小数转成分数,就是一个转换函数#pragmaonce#ifndef__FRACTION__#define__FRACTION__​classFraction{public://分母不为0,所......
  • drf : 通用视图类和(GenericAPIView)5个视图扩展类,九个视图子类,视图集。
    视图RESTframework提供了众多的通用视图基类与扩展类,以简化视图的编写。APIViewrest_framework.views.APIViewAPIView是RESTframework提供的所有视图的基类,继承自Django的View父类。GenericAPIView使用[通用视图类]继承自APIVIew,主要增加了操作序列化器和数据库查询的方......
  • [Rust] Generic
    Example1:fnmain(){letmutshopping_list:Vec<&str>=Vec::new();shopping_list.push("milk");} Example2:structWrapper<T>{value:T,}impl<T>Wrapper<T>{pubfnnew(value:T)->Self{......
  • 【转】关于@GeneratedValue和@GenericGenerator
    一、JPA通用策略生成器通过annotation来映射hibernate实体的,基于annotation的hibernate主键标识为@Id,其生成规则由@GeneratedValue设定的。@id和@GeneratedValue都是JPA的标准用法。JPA提供的四种标准用法为TABLE、SEQUENCE、IDENTITY、AUTO。TABLE:使用一个特定的数据库表格来......
  • Memberinfo call generic method System.InvalidOperationException: 'Late bound op
    staticvoidMain(string[]args){GenericMethod();LogInfo();}staticvoidGenericMethod(){MethodInfomi=typeof(Program).GetMethod("Echo");Console.WriteLine(mi.IsGenericMethodDefinition);Console.WriteLine(mi.Invoke(......
  • Go 100 mistakes - #9: Being confused about when to use generics
    Go1.18addsgenericstothelanguage.Inanutshell,thisallowswritingcodewithtypes thatcanbespecifiedlaterandinstantiatedwhenneeded. Onelastthingtonoteabouttypeparametersisthattheycan’tbeusedwith methodarguments,onlywith......