2019CCPC-江西省赛(重现赛)

Posted whdsunny

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019CCPC-江西省赛(重现赛)相关的知识,希望对你有一定的参考价值。

1001

 

1002

 

1003

 

1004

 

1005

 

1006

 

1007 Traffic (HDOJ 6573)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6573

思路:枚举i和j,b[j]+x=a[i]是不可以的情况,标记此刻的x不可取,最后遍历看x能取的最小值

代码:

技术图片
#include <bits/stdc++.h>

using namespace std;
const int maxn=1e5+10;
int n,m;
int a[maxn],b[maxn],cnt[maxn];

int main()
    while(~scanf("%d%d",&n,&m))
        for(int i=1;i<=n;i++)
            scanf("%d",&a[i]);
        
        for(int i=1;i<=m;i++)
            scanf("%d",&b[i]);
        
        memset(cnt,0,sizeof(cnt));
        for(int i=1;i<=n;i++)
            for(int j=1;j<=m;j++)
                if(a[i]-b[j]<0) continue;
                cnt[a[i]-b[j]]++; 
            
        
        for(int i=0;i<=maxn;i++)
            if(cnt[i]==0)
                printf("%d\n",i);
                break;
            
        
    
    return 0;
 
View Code

 

 

 

 


 

 

 

1008 Rng (HDOJ 6574)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6574

思路:打表

代码:

技术图片
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int mod=1e9+7;
ll n;

ll quickpow(ll a,ll b)
    if(b<0) return 0;
    ll ret=1;
    a%=mod;
    while(b)
        if(b&1) ret=(ret*a)%mod;
        b>>=1;
        a=(a*a)%mod;
    
    return ret;


ll inv(ll a)
    return quickpow(a,mod-2);


int main()
    scanf("%lld",&n);
    ll ans=((n+1)*inv(2*n))%mod;
    printf("%lld\n",ans);
    return 0;    
 
View Code

 

 


 

 

1009 Budget (HDOJ 6575)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6575

题意:给出1e18范围内的小数,已经四舍五入到三位小数,求四舍五入到两位小数时失去的精度和

思路:因为范围过大,直接乘1000会爆,用字符串读入,只保留小数点后的。

代码:

技术图片
#include <bits/stdc++.h>

using namespace std;
int n;
char s[55];

int main()
    while(~scanf("%d",&n))
        int ans=0;
        while(n--)
            scanf("%s",s);
            int len=strlen(s);
            int flag=0;
            for(int i=0;i<len;i++)
                if(s[i]==.)
                    flag=i;
                    break;
                
            
            int ss=0;
            for(int i=flag+1;i<len;i++)
                ss=ss*10+s[i]-0;
            
            if(ss>=995) ans+=1000-ss;
            else
                int tmp=ss%10;
                if(tmp>=5) ans+=10-tmp;
                else ans-=tmp;
             
        
        printf("%.3f\n",(double)ans/1000.0);
    
    return 0;
View Code

 

 


 

 

1010 Worker (HDOJ 6576)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6576

题意:给出n个工厂m个工人,每个工厂中每个人的产出为ai,要求每个工厂的总产出都相等,求问分配工人的方案

思路:要使得每个工厂的总产出相等,相当于求每个工厂单人产出的最小公倍数,求出为了达到最小公倍数每个工厂最少要安排多少人k,判断总工人数是否是k的倍数。m的范围不是1018而是1e18

代码:

技术图片
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int maxn=2020;
int n;
ll a[maxn],b[maxn],m;
int cnt[15];

int main()
    while(~scanf("%d%lld",&n,&m))
        memset(cnt,0,sizeof(cnt));
        for(int i=1;i<=n;i++)
            scanf("%lld",&a[i]);
            cnt[a[i]]=1;
        
        int flag,tmp;
        ll sum;
        for(int i=1;i<=10;i++)
            if(cnt[i]!=0)
                flag=i;
                sum=i;
                break;
            
        
        tmp=flag;
        for(int i=flag+1;i<=10;i++)
            if(cnt[i]==0) continue;
            tmp=__gcd(sum,(ll)i);
            sum=sum*i/tmp;
        
    //    cout<<sum<<endl;
        ll kk=0;
        for(int i=1;i<=n;i++)
            b[i]=sum/a[i];
            kk+=b[i];
        
        if(m%kk==0)
            ll tot=m/kk;
            printf("Yes\n");
            for(int i=1;i<n;i++)
                printf("%lld ",b[i]*tot);
            
            printf("%lld\n",b[n]*tot);
        
        else
            printf("No\n");
        
    
    return 0;
View Code

 

 


 

 

1011 Class  (HDOJ 6577)

链接:http://acm.hdu.edu.cn/showproblem.php?pid=6577

代码:

技术图片
#include <bits/stdc++.h>

using namespace std;
int x,y;

int main()
    scanf("%d%d",&x,&y);
    int a=(x+y)/2,b=(x-y)/2;
    printf("%d\n",a*b);
    return 0;
View Code

 

以上是关于2019CCPC-江西省赛(重现赛)的主要内容,如果未能解决你的问题,请参考以下文章

CCPC2019江西省赛-Problem G.Traffic

2019CCPC-江西省赛 Math(概率dp )

2019总结

解题报告2021CCPC东北四省赛

2021CCPC省赛总结

2016 CCPC 东北地区重现赛