【EOJ Monthly 2018.2 (Good bye 2017)】

23333333333333333

由于情人节要回家,所以就先只放代码了。

此题是与我胖虎过不去。

【E. 出老千的 xjj】

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=3000000;
#define ll long long
int i,j,n,k,x;
ll p[maxn+10],sum[maxn+10],tmp,ans=100000000000000000,Max=0;
int main()
{
    scanf("%d%d",&n,&k);
    for(i=1;i<=n;i++){
        scanf("%d",&x);
        tmp+=x;
        p[x]++;
    }
    if(tmp<=k){
        printf("0\n");
        return 0;
    }
    for(i=1;i<=maxn;i++) {
       sum[i]=sum[i-1]+p[i]*i;
       p[i]+=p[i-1];
    }
    for(i=2;i<=maxn;i++){
        ll yy=(k-1)/i+1;
        ll xx=n;
        tmp=0;
        //if(k%i==0&&yy<xx) continue;
        if(k%i==0) continue; //上面的WA了
        for(j=0;j<maxn/i;j++){
            int n1=(j+1)*i,n2=j*i+1;
            if(n2<0) n2=0;
            xx+=(p[n1]-p[n2-1]);
            tmp+=(p[n1]-p[n2-1])*((j+1)*i)-sum[n1]+sum[n2-1];
            if(k%i==0&&yy<xx) break;
            if(tmp>ans) break;
        }
        if((k%i==0&&xx<=yy)||k%i!=0){
          ans=min(ans,tmp);
        }
    }
    cout<<ans<<endl;;
    return 0;
}

【A2】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
using namespace std;
int n,k,p;
int num[6]={100,50,20,10,5,1},cost[15];
long long f[110];
int main(){
    scanf("%d%d%d",&n,&k,&p);
    for(int i=1;i<=k;i++){
        long long temp=1LL*i*p;
        for(int j=0;j<=5;j++)
            if(temp>=num[j]){
                cost[i]+=temp/num[j];
                temp%=num[j];
            }
    }
    memset(f,10,sizeof(f));
    f[0]=0;
    for(int i=1;i<=100;i++)
        for(int j=max(0,i-k);j<i;j++)
            f[i]=min(f[i],f[j]+cost[i-j]);
    if(n<=100){
        cout<<f[n]<<endl;
        return 0;
    }
    int way=1;
    for(int i=2;i<=k;i++)
        if(1.0*i/cost[i]>1.0*way/cost[way])
            way=i;
    int t1=n/way,t2=n%way;
    long long ans=1LL*t1*cost[way]+f[t2];
    for(int i=1;i<=100;i++){
        t1=n/way-i;
        t2=n-way*t1;
        ans=min(ans,1LL*t1*cost[way]+f[t2]);
    }
    cout<<ans<<endl;
    return 0;
}

【B】

#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
using namespace std;
int N,sta[25];
int f[1100000];
struct edge{
    int x,y;
}e[25];
int have[25][25],cnt[25];
int check(int x,int s){
    bool flag=0;
    for(int i=1;i<=cnt[x];i++)
        if(s&sta[have[x][i]]){
            flag=1;
            break;
        }
    if(!flag)
        return -1;
    for(int i=1;i<=cnt[x];i++)
        if(s&sta[have[x][i]])
            s^=sta[have[x][i]];
    return s;
}
int dfs(int s){
    if(f[s]!=-1)
        return f[s];
    for(int i=1;i<=N;i++){
        int temp=check(i,s);
            if(temp!=-1)
                if(!dfs(temp))
                    return f[s]=1;
    }
    return f[s]=0;
}
int main(){
    sta[0]=1;
    for(int i=1;i<=20;i++)
        sta[i]=sta[i-1]*2;
    scanf("%d",&N);
    for(int i=0;i<N-1;i++){
        scanf("%d%d",&e[i].x,&e[i].y);
        have[e[i].x][++cnt[e[i].x]]=i;
        have[e[i].y][++cnt[e[i].y]]=i;
    }
    memset(f,-1,sizeof(f));
    f[0]=0;
    if(dfs(sta[N-1]-1))
        printf("First\n");
    else
        printf("Second\n");
    return 0;
}

【F】

#include<cstdio>
#include<cstdlib>
#include<iostream>
using namespace std;
const int maxn=10010;
int main()
{
    int T;
    double a,b,c,x,y,z;
    while(~scanf("%lf%lf%lf",&x,&y,&z)){
        a=(2.0*y-z+x)/2.0;
        b=x-a;
        c=(z-a-b)/2.0;
        if(a<=0||b<=0||c<=0) printf("Wrong\n");
        else printf("%.6lf\n",a);
    } return 0;
}

原文地址:https://www.cnblogs.com/hua-dong/p/8447768.html

时间: 2024-07-30 02:54:56

【EOJ Monthly 2018.2 (Good bye 2017)】的相关文章

EOJ Monthly 2018.1 F 最小OR路径

题目链接 Description 给定一个有 \(n\) 个点和 \(m\) 条边的无向图,其中每一条边 \(e_i\) 都有一个权值记为 \(w_i\) . 对于给出的两个点 \(a\) 和 \(b\) ,求一条 \(a\) 到 \(b\) 的路径,使得路径上的边权的 \(OR\)(位或)和最小,输出这个值.(也就是说,如果将路径看做边的集合 \(\{e_1,e_2,-,e_k\}\),那么这条路径的代价为 \(w_1\ OR\ w_2\ OR\ -\ OR\ w_k\),现在求一条路径使得其

EOJ Monthly 2018.2

A. 坑爹的售票机 题意 用\(1,5,10,25,50,100\)的纸币买\(n\)张单价为\(p\)的船票,且一次性最多买\(k\)张,求钱数恰好时最少需要多少张纸币. Hard: \(n,k,p\leq 10^9\) 思路 Easy: dp Hard: dp + 瞎搞 当钱数过大或者张数过多时,(由直觉)其中的大部分都是遵循一定的规律来取的,只有剩余的一小部分需要dp. Code Easy #include <bits/stdc++.h> #define F(i, a, b) for (

[EOJ Monthly 2018.10][C. 痛苦的 01 矩阵]

题目链接:C. 痛苦的 01 矩阵 题目大意:原题说的很清楚了,不需要简化_(:з」∠)_ 题解:设\(r_i\)为第\(i\)行中0的个数,\(c_j\)为第\(j\)列中0的个数,\(f_{i,j}\)代表对应格子是否为0,则有\(cost(i,j)=r_i+c_j-f_{i,j}\),\((cost(i,j))^2=r_i^2+c_j^2+f_{i,j}+2r_ic_j-2f_{i,j}(r_i+c_j)\) $$\sum_{i=1}^n \sum_{j=1}^n \left( cost(

EOJ Monthly 2018.12 F. 日落轨迹

题解: 对于任何一个串的前x字符内的本质不同子串 我们可以直接在SAM树上得到 然后我们考虑循环串的性质 (设循环节长度为l ) 则大于2*l的位置为等差数列 即每增加一个字符则增加l个本质不同的子串 所以对于2*l我们在后缀树上处理处理 对于x>2*l我们 通过等差求得 #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <

2018中国大学生程序设计竞赛 - 网络选拔赛 1010 YJJ&#39;s Salesman 【离散化+树状数组维护区间最大值】

题目传送门:http://acm.hdu.edu.cn/showproblem.php?pid=6447 YJJ's Salesman Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 919    Accepted Submission(s): 290 Problem Description YJJ is a salesman who h

【Python中if __name__ == &#39;__main__&#39;: 的解析】

在很多Python代码中,在代码的最下方会看到  if __name__ == '__main__':,这段代码到底有什么用呢? 在理解这个语句的作用前,需要知道的是,一般的Python文件后缀为.py,其可以拿来执行,也可以用来作为模块使用import导入.当Python解析器读取一个源文件时它会执行所有的代码.在执行代码前会定义一些特殊的变量.如果解析器运行的模块(源文件)作为主程序,它将会把__name__变量设置成"__main__".如果只是引入其他的模块,__name__变

谁说我们会赚不会花?【IT人双十一购物攻略】

双十一的节日气氛正在中华大地蔓延,人民群众对美好生活的需要与日俱增.与此同时我们也看到,不平衡不充分的发展,还在与之发生矛盾: 比如,一部分IT人表示:虽然自己正在加班加点备战双十一,为满足人民需要而竭力服务,但是,真不知道双十一有什么好买的." 某乎照例推出了年度钓鱼贴<2017年「双十一」有哪些值得购买的商品?>,各公众号也纷纷敞开了自己的购物车供粉丝参阅.然而,这些都并不能给埋头奉献的IT人赋予丝毫购物灵感,他们常被扑面而来的一堆化妆品.尿不湿吓得赶紧关上页面,再次坚定了&qu

分布式系统之缓存的微观应用经验谈(二) 【主从和主备高可用篇】

分布式系统之缓存的微观应用经验谈(二) [主从和主备高可用篇] 前言 近几个月一直在忙些琐事,几乎年后都没怎么闲过.忙忙碌碌中就进入了2018年的秋天了,不得不感叹时间总是如白驹过隙,也不知道收获了什么和失去了什么.最近稍微休息,买了两本与技术无关的书,其一是 Yann Martel 写的<The High Mountains of Portugal>(葡萄牙的高山),发现阅读此书是需要一些耐心的,对人生暗喻很深,也有足够的留白,有兴趣的朋友可以细品下.好了,下面回归正题,尝试写写工作中缓存技

【凯子哥带你学Android】Andriod性能优化之列表卡顿——以“简书”APP为例

这几天闲得无聊,就打开手机上的开发者模式里面的"GPU过度绘制"功能,看看别家的App做的咋样,然后很偶然的打开了"简书",然后就被它的过度绘制惊呆了,于是写了这篇性能分析的文章,从一个只有APK文件的角度,说下如何寻找布局中可能存在的性能问题,以及解决方案.本文章以简书Android最新版本1.9.1进行分析. GPU过度绘制 Hierarchy View SysTrace TraceView 总结 分析资源下载 GPU过度绘制 首先打开下面两个功能开关 开发者模