首页 > 其他 > 详细

第五届NWU ACM-ICPC新生赛E题题解

时间:2020-12-20 23:20:19      阅读:44      评论:0      收藏:0      [点我收藏+]

E.zy与魔法石

tag:模拟,贪心

cf分值:1400

出题人前言:本来想着这个题大家推出规律就可以直接模拟AC的,因为数据范围给的挺舒适,本来定位是签到题级别的。但是现场只有Aklice一个人过,作为出题人还是觉得很不满意的,很多人是题读错了。

解法:推出规律其实发现,n大小的背包想尽可能多装不同的数,所以只需要模拟就行,先从小到大(从2开始)塞,塞到足够大之后发现会有一些是多余的,这个时候再反向往前塞就行。注意一下当n=1时的特判。

std代码:

技术分享图片
#include<bits/stdc++.h>
using namespace std;

const int mod=1e9+7;

int main(){
    int n;
    cin>>n;
    if(n==0){
        cout<<0;
        return 0;
    }
    int temp=0,p=1;
    for(int i=2;i<=n;i++){
        if(temp+i>n) break;
        temp+=i;
        p=i;
    }
    n-=temp;
    long long r=1;
    for(int i=p;i>=2;i--){
        if(i==p && n-(p-1)>0) r=(r*(p+2))%mod;
        else if(n>0) r=(r*(i+1))%mod, n--;
        else r=r*i%mod;
    }
    cout<<r;
}
View Code

 

第五届NWU ACM-ICPC新生赛E题题解

原文:https://www.cnblogs.com/Anonytt/p/14164883.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!