小鸡腿U T4 福州2011

Alice’s mooncake shop

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip> 
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (1000000007)
#define pb push_back
#define mp make_pair 
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
                        For(j,m-1) cout<<a[i][j]<<' ';\
                        cout<<a[i][m]<<endl; \
                        } 
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
    int x=0,f=1; char ch=getchar();
    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
    return x*f;
} 


#define MAXN (100000+10)
#define MEM2(a,i) memset(a,i,sizeof(a));
class SegmentTree  
{  
    ll a[MAXN*4],minv[MAXN*4],sumv[MAXN*4],maxv[MAXN*4],addv[MAXN*4],setv[MAXN*4];  
    int n;  
public:  
    SegmentTree(){MEM(a) MEM(minv) MEM(sumv) MEM(maxv) MEM(addv) MEM2(setv,-1) }  
    SegmentTree(int _n):n(_n){MEM(a) MEM(minv) MEM(sumv) MEM(maxv) MEM(addv) MEM2(setv,-1) }  
    void mem(int _n)  
    {  
        n=_n;  
        MEM(a) MEM(minv)  MEM(sumv) MEM(maxv) MEM(addv) MEM2(setv,-1)
    }  

    void maintain(int o,int L,int R)  
    {

        sumv[o]=maxv[o]=minv[o]=0;
        if (L<R) //只考虑左右子树 
        {
            sumv[o]=sumv[Lson]+sumv[Rson];
            minv[o]=min(minv[Lson],minv[Rson]);
            maxv[o]=max(maxv[Lson],maxv[Rson]);
        } //只考虑add操作 
        if (setv[o]>=0) sumv[o]=setv[o]*(R-L+1),minv[o]=maxv[o]=setv[o];

        minv[o]+=addv[o];maxv[o]+=addv[o];sumv[o]+=addv[o]*(R-L+1);
    }

    int y1,y2,v;
    void update(int o,int L,int R) //y1,y2,v
    {
        if (y1<=L&&R<=y2) {
            addv[o]+=v;
        }
        else{
            pushdown(o);
            int M=(R+L)>>1;
            if (y1<=M) update(Lson,L,M); else maintain(Lson,L,M); 
            if (M< y2) update(Rson,M+1,R); else maintain(Rson,M+1,R);
        }

        maintain(o,L,R); 

    }
    void update2(int o,int L,int R) 
    {
        if (y1<=L&&R<=y2) {
            setv[o]=v;addv[o]=0;
        }
        else{
            pushdown(o);
            int M=(R+L)>>1;
            if (y1<=M) update2(Lson,L,M); else maintain(Lson,L,M); //维护pushodown,再次maintain 
            if (M< y2) update2(Rson,M+1,R); else maintain(Rson,M+1,R);
        }

        maintain(o,L,R); 
    }

    void pushdown(int o) 
    {
        if (setv[o]>=0)
        {
            setv[Lson]=setv[Rson]=setv[o]; 
            addv[Lson]=addv[Rson]=0;
            setv[o]=-1;
        }
        if (addv[o])
        {
            addv[Lson]+=addv[o];
            addv[Rson]+=addv[o];
            addv[o]=0;
        } 
    }
    ll _min,_max,_sum; 

    void query2(int o,int L,int R,ll add)
    {
        if (setv[o]>=0)
        {
            _sum+=(setv[o]+addv[o]+add)*(min(R,y2)-max(L,y1)+1);
            _min=min(_min,setv[o]+addv[o]+add);
            _max=max(_max,setv[o]+addv[o]+add); 
        } else if (y1<=L&&R<=y2)
        {
            _sum+=sumv[o]+add*(R-L+1);
            _min=min(_min,minv[o]+add);
            _max=max(_max,maxv[o]+add); 
        } else {
        //  pushdown(o);
            int M=(L+R)>>1;
            if (y1<=M) query2(Lson,L,M,add+addv[o]);// else maintain(Lson,L,M); 
            if (M< y2) query2(Rson,M+1,R,add+addv[o]);// else maintain(Rson,M+1,R);
        }
        //maintain(o,L,R);
    }

    void query(int o,int L,int R,ll add) //y1,y2
    {
        if (y1<=L&&R<=y2)
        {
            _sum+=sumv[o]+add*(R-L+1);
            _min=min(_min,minv[o]+add);
            _max=max(_max,maxv[o]+add); 
        } 
        else{
            int M=(R+L)>>1;
            if (y1<=M) query(Lson,L,M,add+addv[o]);
            if (M< y2) query(Rson,M+1,R,add+addv[o]);
        }       
    }

    void add(int l,int r,ll v)
    {
        y1=l,y2=r;this->v=v;
        update(1,1,n);
    }
    void set(int l,int r,ll v)
    {
        y1=l,y2=r;this->v=v;
        update2(1,1,n);
    }
    ll ask(int l,int r,int b=0)
    {
        _sum=0,_min=INF,_max=-1;
        y1=l,y2=r;
        query2(1,1,n,0);
    //  cout<<_sum<<' '<<_max<<' '<<_min<<endl; 

        switch(b)
        {
            case 1:return _sum;
            case 2:return _min;
            case 3:return _max;
            default:break;
        }       
    }
    void print()
    {
        For(i,n)
            cout<<ask(i,i,1)<<' ';
        cout<<endl;

    }

    //先set后add 
}S;  
char h[13][10]={"","Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov" , "Dec"};
int mon[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
bool is_r(int y)  
{  
    if ((y%4==0&&y%100!=0)||y%400==0) return 1;  
    return 0;  
}  
ll get_t() {
    char s[10];
    int d,y,m;
    scanf("%s%d%d",s,&d,&y);
    For(i,12) if (strcmp(s,h[i])==0) m=i;
    ll tot=0;
    Fork(i,2000,y-1) tot+=is_r(i)+365;
    For(i,m-1) tot+=mon[i];
    if (is_r(y)&&m>2) tot++;
    tot+=d;
    tot=(tot-1)*24+read()+1;
    return tot; 
}
#define MAXM (210000+10)
ll c[MAXM];
ll q[MAXM],r[MAXM];
int main()
{
//  freopen("B.in","r",stdin);
//  freopen(".out","w",stdout);
    int n,m;
    while(cin>>n>>m&&n&&m) {
        ll maxt=0;
        For(i,n) {
            q[i]=get_t();
            maxt=max(maxt,q[i]);
            scanf("%I64d",&r[i]);
        }
        int t=read(); ll s=read();
        S.mem(m);
        For(i,m) {
            S.add(i,i,read());
            if (i>1) S.add(max(1,i-t),i-1,s);
            c[i]=S.ask(max(1,i-t),i,2);
        }
        Fork(i,m+1,maxt) {
            if (i>1) S.add(max(1,i-t),m,s);
            c[i]=S.ask(max(1,i-t),m,2);
        }
        ll ans=0;
        For(i,n) {
            ans+=c[(int)q[i]]*r[i];
        }       
        cout<<ans<<endl;
    }


    return 0;
}

My World Cup

#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<functional>
#include<iostream>
#include<cmath>
#include<cctype>
#include<ctime>
#include<iomanip> 
#include<vector>
#include<string>
#include<queue>
#include<stack>
#include<map>
#include<sstream>
using namespace std;
#define For(i,n) for(int i=1;i<=n;i++)
#define Fork(i,k,n) for(int i=k;i<=n;i++)
#define Rep(i,n) for(int i=0;i<n;i++)
#define ForD(i,n) for(int i=n;i;i--)
#define ForkD(i,k,n) for(int i=n;i>=k;i--)
#define RepD(i,n) for(int i=n;i>=0;i--)
#define Forp(x) for(int p=Pre[x];p;p=Next[p])
#define Forpiter(x) for(int &p=iter[x];p;p=Next[p])  
#define Lson (o<<1)
#define Rson ((o<<1)+1)
#define MEM(a) memset(a,0,sizeof(a));
#define MEMI(a) memset(a,127,sizeof(a));
#define MEMi(a) memset(a,128,sizeof(a));
#define INF (2139062143)
#define F (1000000007)
#define pb push_back
#define mp make_pair 
#define fi first
#define se second
#define vi vector<int> 
#define pi pair<int,int>
#define SI(a) ((a).size())
#define Pr(kcase,ans) printf("Case #%d: %I64d\n",kcase,ans);
#define PRi(a,n) For(i,n-1) cout<<a[i]<<' '; cout<<a[n]<<endl;
#define PRi2D(a,n,m) For(i,n) { \
                        For(j,m-1) cout<<a[i][j]<<' ';\
                        cout<<a[i][m]<<endl; \
                        } 
#pragma comment(linker, "/STACK:102400000,102400000")
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
ll mul(ll a,ll b){return (a*b)%F;}
ll add(ll a,ll b){return (a+b)%F;}
ll sub(ll a,ll b){return ((a-b)%F+F)%F;}
void upd(ll &a,ll b){a=(a%F+b%F)%F;}
int read()
{
    int x=0,f=1; char ch=getchar();
    while(!isdigit(ch)) {if (ch=='-') f=-1; ch=getchar();}
    while(isdigit(ch)) { x=x*10+ch-'0'; ch=getchar();}
    return x*f;
} 
double shoot[20];
void prework() {
    shoot[0]=0;
    shoot[1]=2.0/3.;
    Fork(i,2,15) shoot[i]=shoot[i-1]*2/3;
    For(i,15) shoot[i]=1-shoot[i];
}
typedef vector<pair<double,int> > vpdi;
void shoot_k(int k,vpdi & pro) {
    if (k==0) pro.pb(mp(1,0));
    else {pro.pb(mp(shoot[k],1)); pro.pb(mp(1-shoot[k],0));}
}
struct card{
    int t,s,p,pl;
    card(int _t,int _s,int _p,int _pl):t(_t),s(_s),p(_p),pl(_pl){}
    card(){}
    friend bool operator<(card a,card b) {
        if (a.s^b.s) return a.s<b.s;
        return a.pl<b.pl;
    }
    inline friend void bet(card a,card b,vpdi & pro) {
        if (a.t==0) {
            if (b.t==3) {
                pro.pb(mp(1,0));
            } else {
                if (b.t==1) {
                    a.p=max(a.p-b.p,0);
                }
                shoot_k(a.p,pro);
            }
        }
        if (a.t==1) {
            if (b.t==2) {
                a.p=max(a.p-b.p,0);
                shoot_k(a.p,pro);
            }
            else pro.pb(mp(1,0)); 
        }
        if (a.t==2) {
            if (b.t==3) {
                pro.pb(mp(1,0));
            } else if (b.t==1) pro.pb(mp(1,max(a.p-b.p,0)));
            else pro.pb(mp(1,a.p));
        }
        if (a.t==3) {
            double p=1.0/3.0*shoot[3];
            pro.pb(mp(p,-1));
            pro.pb(mp(1-p,0));
        }
    }
}a[11];

double calc_2_card(card c,card d) {
    vpdi pro1,pro2;
    bet(c,d,pro1);
    bet(d,c,pro2);
    double now=0;
    Rep(k,SI(pro1)) Rep(l,SI(pro2)) {
        double p=pro1[k].fi*pro2[l].fi;
        if (pro1[k].se>pro2[l].se) now+=p;
        else if (pro1[k].se==pro2[l].se) now+=p*0.5;
    }
    return now;
}
card c,d;
double rul;

typedef vector<card> vc;
struct State { // Alice a,Bob b     Remain a[4],b[4]
    card a[5],b[5];
    int sz;
    int sca,scb; 
    void mem() {
        sz=4; sca=scb=0;
    }
    State child(int i,int j,int k,int l) {
        State s;
        memcpy(&s,this,sizeof(s));
        swap(s.a[i],s.a[sz-1]);
        swap(s.b[j],s.b[sz-1]);
        s.sca+=k;
        s.scb+=l;
        s.sz--;
        return s;
    }
    double dfs() {
//      cout<<sz<<' '<<sca<<' '<<scb<<endl;
        if (sz>0) {
            int p1=0,p2=0;
            Rep(i,sz) {
                if (a[p1]<a[i]) p1=i;
                if (b[p2]<b[i]) p2=i;   
            }
            double mi=INF,ma=-INF;
            if (a[p1]<b[p2]) {
                Rep(i,sz) {
                    Rep(j,sz) if (b[p2].s==b[j].s) {
                        vpdi pro1,pro2;
                        bet(a[i],b[j],pro1);
                        bet(b[j],a[i],pro2);
                        double now=0;
                        Rep(k,SI(pro1)) Rep(l,SI(pro2)) {
                            double p=pro1[k].fi*pro2[l].fi;
                            State st2=child(i,j,pro1[k].se,pro2[l].se);
                            now+=p*st2.dfs();
                        }
                        mi=min (mi,now);
                        ma=max (ma,now);
                    }   
                }
                return mi;          
            }
            else {
                Rep(i,sz) {
                    Rep(j,sz) if (a[p1].s==a[i].s) {
                        vpdi pro1,pro2;
                        bet(a[i],b[j],pro1);
                        bet(b[j],a[i],pro2);
                        double now=0;
                        Rep(k,SI(pro1)) Rep(l,SI(pro2)) {
                            pair<double ,int> now1=pro1[k],now2=pro2[l];
                            double p=pro1[k].fi*pro2[l].fi;
                            State st2=child(i,j,pro1[k].se,pro2[l].se);
                            now+=p*st2.dfs();
                        }
                        mi=min (mi,now);
                        ma=max (ma,now);
                    }   
                }
                return ma;          
            }
        }
        if (sz==0) {
            if(sca!=scb) return (sca>scb)?1:0;
            return rul;
        }
    } 
}S;
int main()
{
//  freopen("D.in","r",stdin);
//  freopen("D.out","w",stdout);
    int T=read();
    prework();
    while(T--) {
        S.mem();
        int ta=0,tb=0;
        For(i,10) {
            int pl=(i<=5); //Alice is player 1;
            int t=read(),s=read(),p=read();
            t=(t+3)%4;
            a[i]=card(t,s,p,pl);
            if (i==5) c=a[i];
            else if (i==10) d=a[i];
            else if (pl==1) S.a[ta++]=a[i];
            else S.b[tb++]=a[i];
        }
        rul=calc_2_card(c,d);
        printf("%.0lf\n",S.dfs()*100);
    }


    return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
东南亚位于我国倡导推进的“一带一路”海陆交汇地带,作为当今全球发展最为迅速的地区之一,近年来区域内生产总值实现了显著且稳定的增长。根据东盟主要经济体公布的最新数据,印度尼西亚2023年国内生产总值(GDP)增长5.05%;越南2023年经济增长5.05%;马来西亚2023年经济增速为3.7%;泰国2023年经济增长1.9%;新加坡2023年经济增长1.1%;柬埔寨2023年经济增速预计为5.6%。 东盟国家在“一带一路”沿线国家中的总体GDP经济规模、贸易总额与国外直接投资均为最大,因此有着举足轻重的地位和作用。当前,东盟与中国已互相成为双方最大的交易伙伴。中国-东盟贸易总额已从2013年的443亿元增长至 2023年合计超逾6.4万亿元,占中国外贸总值的15.4%。在过去20余年中,东盟国家不断在全球多变的格局里面临挑战并寻求机遇。2023东盟国家主要经济体受到国内消费、国外投资、货币政策、旅游业复苏、和大宗商品出口价企稳等方面的提振,经济显现出稳步增长态势和强韧性的潜能。 本调研报告旨在深度挖掘东南亚市场的增长潜力与发展机会,分析东南亚市场竞争态势、销售模式、客户偏好、整体市场营商环境,为国内企业出海开展业务提供客观参考意见。 本文核心内容: 市场空间:全球行业市场空间、东南亚市场发展空间。 竞争态势:全球份额,东南亚市场企业份额。 销售模式:东南亚市场销售模式、本地代理商 客户情况:东南亚本地客户及偏好分析 营商环境:东南亚营商环境分析 本文纳入的企业包括国外及印尼本土企业,以及相关上下游企业等,部分名单 QYResearch是全球知名的大型咨询公司,行业涵盖各高科技行业产业链细分市场,横跨如半导体产业链(半导体设备及零部件、半导体材料、集成电路、制造、封测、分立器件、传感器、光电器件)、光伏产业链(设备、硅料/硅片、电池片、组件、辅料支架、逆变器、电站终端)、新能源汽车产业链(动力电池及材料、电驱电控、汽车半导体/电子、整车、充电桩)、通信产业链(通信系统设备、终端设备、电子元器件、射频前端、光模块、4G/5G/6G、宽带、IoT、数字经济、AI)、先进材料产业链(金属材料、高分子材料、陶瓷材料、纳米材料等)、机械制造产业链(数控机床、工程机械、电气机械、3C自动化、工业机器人、激光、工控、无人机)、食品药品、医疗器械、农业等。邮箱:market@qyresearch.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值