码迷,mamicode.com
首页 > 其他好文 > 详细

四校联考——20170730模拟赛

时间:2017-07-30 23:35:24      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:getchar   class   algo   char   前缀   close   fine   模拟   sed   

今天3题都很丧。

我只会T1,所以我很弱

T1要有桶排序,不然会T,被卡常

做法就是先排序,然后前缀和乱搞

技术分享
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
#pragma o1
using namespace std;
inline int read(){
    int x=0;char c=getchar();bool t=1;
    while(c<0||c>9){if(c==-)t=0;c=getchar();}
    while(c>=0&&c<=9){x=(x<<1)+(x<<3)+c-0;c=getchar();}
    return t?x:-x;
}
const int maxn=500010,mod=1e9+9;
struct Yzy{int h,x[6];}a[maxn];
int n,d,su[maxn],suf[maxn],kind;
bool cmp(Yzy i,Yzy j){
    return i.x[kind]<j.x[kind];
}
int main()
{
    freopen("code.in","r",stdin);
    freopen("code.out","w",stdout);
    n=read();d=read();
    for(int i=1;i<=n;i++){
        a[i].h=read();
        for(int j=1;j<=d;j++)a[i].x[j]=read();
    }
    int ans=0;
    for(kind=1;kind<=d;kind++){
        sort(a+1,a+1+n,cmp);
        for(int i=n;i>=1;i--){
            su[i]=(su[i+1]+a[i].h)%mod;
            suf[i]=(suf[i+1]+(ll)a[i].h*a[i].x[kind])%mod;
        }
        for(int i=1;i<=n;i++)
            ans=((ans+(ll)a[i].h*suf[i+1]
               -(ll)a[i].h*a[i].x[kind]%mod*su[i+1])
               %mod+mod)%mod;
    }
    printf("%d\n",ans);
    return 0;
}
View Code

我这个没有桶排序,所以只有80

本文由Yzyet编写,网址为www.cnblogs.com/Yzyet。非Yzyet同意,禁止转载,侵权者必究。

四校联考——20170730模拟赛

标签:getchar   class   algo   char   前缀   close   fine   模拟   sed   

原文地址:http://www.cnblogs.com/Yzyet/p/7260640.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!