zoukankan      html  css  js  c++  java
  • Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises)

    A. Fraction

    题目链接:http://codeforces.com/contest/854/problem/A

    题目意思:给出一个数n,求两个数a+b=n,且a/b不可约分,如果存在多组满足条件的a和b,输出a/b最大的a和b。

    题目思路:首先a+b=n,那么暴力枚举i和n-i,且gcd(i,n-i)==1,由于i越大是n-i越小,则a/b的值越大。

    代码:

     1 //Author: xiaowuga
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 #define inf 0x3f3f3f3f
     5 #define MAX INT_MAX
     6 #define mem(s,ch) memset(s,ch,sizeof(s))
     7 const long long N=100000; 
     8 const long long mod=1e9+7; 
     9 typedef long long LL;
    10 typedef int II;
    11 typedef unsigned long long ull;
    12 #define nc cout<<"nc"<<endl
    13 #define sp " "
    14 int main() {
    15     ios::sync_with_stdio(false);cin.tie(0);
    16     II n;
    17     cin>>n;
    18     II a,b;
    19     for(II i=1;i<=n/2;i++){
    20         if(__gcd(i,n-i)==1){
    21             a=i;b=n-i;
    22         }
    23     }
    24     cout<<a<<' '<<b<<endl;
    25     return 0;
    26 }
    View Code

    B. Maxim Buys an Apartment

    题目链接:http://codeforces.com/contest/854/problem/B

    题目意思:有n个房屋排成一排,现在其中k个房屋已经住了人,但是不知道其中的哪些房屋住进了房屋,但是小明喜欢住进邻居的房屋中有人住进的的房子里。问最少有多少个房屋满足条件,最多有多少个房屋满足条件。

    题目思路:首先如果首先如果n远大于k了话,那么每一个住人的房屋,周围的两个房屋都满足小明的条件,所以我们想到每三个放一个。如果k×3>n,那么答案就是n-k,否则答案就是2×k,当然还有一些特殊情况,比如n==k还有k==0的时候,需要特判一下。

    代码:

     1 /* ***********************************************
     2 Author        :xiaowuga
     3 Created Time  :2017年10月18日 星期三 13时36分58秒
     4 File Name     :Desktop/B.cpp
     5 ************************************************ */
     6 #include <bits/stdc++.h>
     7 typedef long long LL; 
     8 #define endl "
    " 
     9 #define inf 0x3f3f3f3f 
    10 const long long N=1000000;
    11 const long long mod=1e9+7;
    12 using namespace std;
    13 int main(){
    14     ios::sync_with_stdio(false);cin.tie(0);
    15     LL n,k;
    16     cin>>n>>k;
    17     cout<<(k&&k<n)<<' '<<min(n-k,2*k)<<endl;    
    18     return 0;
    19 }
    View Code

    C. Planning

    题目链接:http://codeforces.com/contest/854/problem/C

    题目意思:原本有n个航班,他们的起飞时间是1-n,现在机场规定在每一天的前k分钟不能有飞机起飞,那么就得有航班起飞要延误,现在给出每个航班延误一分钟所消耗的费用,问你怎么安排飞机的起飞才能使花费最少,飞机起飞时间不能比原本的要早。

    题目思路:对于一个时间,用一个优先队列处理能放在当前时间的拥有每分钟最大损失的航班,这样只需要n*logn的复杂度。

    题目代码:

     1 //Author: xiaowuga
     2 #include <bits/stdc++.h>
     3 using namespace std;
     4 #define inf 0x3f3f3f3f
     5 #define MAX INT_MAX
     6 #define mem(s,ch) memset(s,ch,sizeof(s))
     7 const long long N=100000; 
     8 const long long mod=1e9+7; 
     9 typedef long long LL;
    10 typedef int II;
    11 typedef unsigned long long ull;
    12 #define nc cout<<"nc"<<endl
    13 #define sp " "
    14 int main() {
    15     ios::sync_with_stdio(false);cin.tie(0);
    16     struct node{
    17         LL c,id;
    18         bool operator <(const node &m) const {
    19             return c<m.c;
    20         }
    21     };
    22     LL n,k;
    23     vector<node>a;
    24     cin>>n>>k;
    25     a.resize(n+1);
    26     priority_queue<node>q;
    27     for(LL i=1;i<=n;i++){
    28         cin>>a[i].c;
    29         a[i].id=i;
    30     } 
    31     vector<int>ans(n+1);
    32     for(LL i=1;i<=k;i++) q.push(a[i]);
    33     for(LL i=k+1;i<=n+k;i++){
    34         if(i<=n) q.push(a[i]);
    35         auto now=q.top();
    36         q.pop();
    37         ans[now.id]=i; 
    38     }
    39     LL sum=0;
    40     for(II i=1;i<=n;i++){
    41         sum+=(ans[i]-i)*a[i].c;
    42     }
    43     cout<<sum<<endl;
    44     for(II i=1;i<=n;i++) cout<<ans[i]<<' ';
    45     return 0;
    46 }
    View Code
  • 相关阅读:
    输入框的提示文字的样式设置
    javascript高级程序设计第3版——第12章 DOM2与DOM3
    javascript高级程序设计第3版——第1Java章 DOM扩展
    javascript高级程序设计第3版——第10章 DOM
    javascript高级程序设计第3版——第8章 BOM(浏览器对象模型)
    javascript高级程序设计第3版——第7章 函数表达式
    javascript高级程序设计第3版——第6章 面向对象的程序设计
    小程序上传图片
    微信小程序验证码/密码输入框,一个框一个数字
    php导出数据到excel,防止身份证等数字字符格式变成科学计数的方法
  • 原文地址:https://www.cnblogs.com/xiaowuga/p/7686531.html
Copyright © 2011-2022 走看看