AtCoder. Tenka1 Programmer Contest C,D

来源:互联网 发布:五五开的淘宝店叫什么 编辑:程序博客网 时间:2024/06/06 08:34

做了两道水题,然后看各路大神虐菜。


C - 4/N


Time limit : 2sec / Memory limit : 256MB

Score : 300 points

Problem Statement

You are given an integer N.

Find a triple of positive integers hn and w such that 4N=1h+1n+1w.

If there are multiple solutions, any of them will be accepted.

Constraints

  • It is guaranteed that, for the given integer N, there exists a solution such that h,n,w3500.

Inputs

Input is given from Standard Input in the following format:

N

Outputs

Print a triple of positive integers hn and w that satisfies the condition, in the following format:

h n w

Sample Input 1

Copy
2

Sample Output 1

Copy
1 2 2

42=11+12+12.


Sample Input 2

Copy
3485

Sample Output 2

Copy
872 1012974 1539173474040

It is allowed to use an integer exceeding 3500 in a solution.


Sample Input 3

Copy
4664

Sample Output 3

Copy
3498 3498 3498
特水数学题,看时间和数据量知直接暴力枚举h,n凑w即可,真水。


#include <iostream>using namespace std;#define ll long longconst int maxn=3501;ll n;int main(int argc, const char * argv[]) {    ll a,b;    ll c;    scanf("%lld",&n);    for(a=1;a<=maxn;++a)        for(b=1;b<=maxn;++b){            ll x=4*a*b-n*b-n*a;            ll y=n*a*b;            if(x>0 && y%x==0) {                c=y/x;                cout<<a<<" "<<b<<" "<<c<<endl;                return 0;            }        }    return 0;}

D - IntegerotS


Time limit : 2sec / Memory limit : 256MB

Score : 500 points

Problem Statement

Seisu-ya, a store specializing in non-negative integers, sells N non-negative integers. The i-th integer is Ai and has a utility of Bi. There may be multiple equal integers with different utilities.

Takahashi will buy some integers in this store. He can buy a combination of integers whose bitwise OR is less than or equal to K. He wants the sum of utilities of purchased integers to be as large as possible.

Find the maximum possible sum of utilities of purchased integers.

Constraints

  • 1N105
  • 0K<230
  • 0Ai<230(1iN)
  • 1Bi109(1iN)
  • All input values are integers.

Inputs

Input is given from Standard Input in the following format:

N KA1 B1:AN BN

Outputs

Print the maximum possible sum of utilities of purchased integers.


Sample Input 1

Copy
3 53 34 42 5

Sample Output 1

Copy
8

Buy 2 and 3 to achieve the maximum possible total utility, 8.


Sample Input 2

Copy
3 63 34 42 5

Sample Output 2

Copy
9

Buy 2 and 4 to achieve the maximum possible total utility, 9.


Sample Input 3

Copy
7 1410 57 411 49 83 66 28 9

Sample Output 3

Copy
32
特水dp题,直接枚举每一位通过xor进行状态更新,O(n)

#include <iostream>using namespace std;#define ll long longconst int maxn=1e5+5;int n,k,a[maxn],b[maxn];int main(int argc, const char * argv[]) {    scanf("%d%d",&n,&k);    k++;    for(int i=0;i<n;++i) scanf("%d%d",&a[i],&b[i]);    int cur=0;    ll tmp=0;    ll ans=0;    for(int bit=30;bit>=0;--bit){        if(k&(1<<bit)){            tmp=0;            cur^=1<<bit;            for(int i=0;i<n;++i){                if((a[i]&cur)==0) tmp+=b[i];                ans=max(ans,tmp);            }            cur^=1<<bit;        }        else cur^=1<<bit;    }    cout<<ans<<endl;    return 0;}




原创粉丝点击