Codeforces Round #326(Div2)

CodeForces 588A

题意:Duff喜欢吃肉,想在接下来的n天,每天都有Ai斤肉吃,但每一天肉的单价Pi不定,肉 可以保存不过期,现已知n天每天肉的斤数Ai,以及单价Pi,为了使每天都             有想要的Ai斤肉吃,求最小花费。

 思路:cost=Ai*min(pi)  1<=i<=n;

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 const int maxn=1e5+5;
 6 const int inf=0x3f3f3f3f;
 7 int cost[maxn],p[maxn];
 8
 9 int main()
10 {
11     int d,minn,res;
12     while(~scanf("%d",&d))
13     {
14         res=0;minn=inf;
15         for(int i=0;i<d;i++)
16         {
17             scanf("%d%d",&cost[i],&p[i]);
18             if(p[i]<minn)
19                 minn=p[i];
20             res+=cost[i]*minn;
21         }
22         printf("%d\n",res);
23     }
24     return 0;
25 }

CodeForces 588B

题意:有一个数n,有多个因子,例如12={1,2,4,6,12},满足可爱数的条件是:为n的因子,并且这个数的因子数不能被开方。现求最大可爱数。

思路:数据较大1e12.

         方案一、暴力+用sqrt减少循环次数。使时间复杂度达到根号n*根号根号n,即1e9.

方案二、打一个素数表,整数可以拆分成任意素数的乘积。

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 using namespace std;
 6 long long n;
 7
 8 bool deal(long long x)
 9 {
10     long long y=sqrt(x)+1;
11     for(long long i=2;i<=y;i++)
12         if(x%(i*i)==0)
13             return 0;
14     return 1;
15 }
16
17 int main()
18 {
19     while(~scanf("%lld",&n))
20     {
21         long long m=sqrt(n);int flag=0;
22         long long res;
23         for(long long i=1;i<=m+1;i++)
24         {
25             if(n%i==0&&deal(n/i))
26             {
27                 flag=1;
28                 res=n/i;
29                 break;
30             }
31         }
32         if(!flag)
33         {
34             for(long long i=m;i>=1;i--)
35             {
36                 if(n%i==0&&deal(i))
37                 {
38                     res=i;
39                     break;
40                 }
41             }
42         }
43         printf("%lld\n", res);
44     }
45     return 0;
46 }

CodeForces 587A

题意:n个数,A1,A2.....An。选k(k<=n)个数,构成2^a1+2^a2+...2^ak=2^x(可为任意),算一次,一个数只能被选一次。求数全被选完最少需要多少次。

思路:可发现:2^2=2^1+2^1

2^3=2^2+2^2

2^4=2^3+2^3

......

2^n=2^(n-1)+2^(n-1)

由于n个数任意取,并且2^n=2^(n-1)+2^(n-1).   只看指数,即Ai,(1,1)=2,  (2,2)=3,    (n-1,n-1)=n

为了尽少次数的到底2^x.    需要统计Ai的个数。然后(1,1)=2,  (2,2)=3,    (n-1,n-1)=n,

一 直合成到最大。合成后剩下的次数即为result.

代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <algorithm>
 5 using namespace std;
 6 const int maxn=1e6+20;
 7
 8 int f[2*maxn],a[maxn];
 9 int n,res,maxx;
10
11 void deal()
12 {
13     res=0;
14     for(int i=0;i<=maxn;i++)
15     {
16         if(f[i]%2==1)
17         {
18             f[i+1]+=(f[i]-1)/2;
19             res++;
20         }
21         else
22             f[i+1]+=f[i]/2;
23     }
24 }
25
26 int main()
27 {
28     while(~scanf("%d",&n))
29     {
30         memset(f,0,sizeof(f));
31         maxx=-1;
32         for(int i=0;i<n;i++)
33         {
34             scanf("%d",&a[i]);
35             maxx=max(maxx,a[i]);
36             f[a[i]]++;
37         }
38         deal();
39         printf("%d\n",res);
40     }
41     return 0;
42 }

剩下题目待补,革命尚未成功,同志仍需努力!

时间: 2024-10-17 08:25:02

Codeforces Round #326(Div2)的相关文章

Codeforces Round #328(Div2)

CodeForces 592A 题意:在8*8棋盘里,有黑白棋,F1选手(W棋往上-->最后至目标点:第1行)先走,F2选手(B棋往下-->最后至目标点:第8行)其次.棋子数不一定相等,F1,F2中其中一个           棋子最先到达目标点对应方胜利. 思路:W,B棋子分别只能上.下,所以需知道:离第一行最近的W棋距离S1(并且这个W上方没有B),离第八行最近的B棋距离S2(这个B下方没有W) 胜利者为 S1<=S2?F1:F2 注意:S1==S2时 F1胜. 代码: 1 #inc

Codeforces Round #503(div2) 做题记录

前几天有点咕,马上题解会跟上~ A. 题意: 有n个楼,每个楼有h层,相邻两个楼在(a,b)之间有通道 k次询问,每次问(tA,fA)到(tB,fB)(t为楼的编号,f为楼层)的最短路 题解: 如果不在(a,b)层之间那先爬到离他最近的(a,b)层之间的楼层 然后通过通道直接走,先走到tB走到对应楼层 注意tA=tB时特判 1 #include<bits/stdc++.h> 2 #define ll long long 3 using namespace std; 4 int n,h,a,b,

CodeForces 360E Levko and Game(Codeforces Round #210 (Div. 1))

题意:有一些无向边m条权值是给定的k条权值在[l,r]区间可以由你来定,一个点s1 出发一个从s2出发  问s1 出发的能不能先打到f 思路:最短路. 首先检测能不能赢 在更新的时候  如果对于一条边 a->b  如果dis1[a] <dis2[a]  那么选择这条边就选择   l  因为这条边对于s1有利 如果两个起点都选择了这条边  则说明s1 赢定了,所以要让他们尽量走这条,所以边权越小越好.跑完之后检测 如果  dis1[f]<dis2[f] 那么 就赢了. 接下来判断能不能平局

Codeforces Round #615(Div.3)解题报告

Codeforces Round #615(Div.3)解题报告 A. Collecting Coins 注意\(n\)可能不够用的情况. #include<bits/stdc++.h> using namespace std; typedef long long ll; int a, b, c, n; void solve() { cin >> a >> b >> c >> n; int mx = max(max(a, b), c); int

Codeforces Round #FF(255) DIV2 C - DZY Loves Sequences

A - DZY Loves Hash 水题,开辟一个数组即可 #include <iostream> #include <vector> #include <algorithm> #include <string> using namespace std; int main(){ int p,n; cin >> p >> n; vector<bool> buckets(302,false); bool flag = fal

cf386(div2)大一狗ACM之路

#cf386(div2)总结#前两题很顺利的做了出来, c题扔了, D题wrong了5发才A掉.A题签到题, 但是想多了, 代码写的有点长了. 找被整除最小值*7.B题 读题读了一会, 读完了就有思路了, 1A. 字符串问题, 从后往前两个两个的放到新的字符串里, 一个从最左, 一个从最右, 模拟指针扫着放, 最后特判会不会扫到一起.C题跳了没看, 最后做完了D题回来看了一眼没什么思路 日后再说.D题, 恩.. 两个多小时都用在这题上面了, 20分钟的时候做完了B之后就一直再啃D题, 暴力判断啊

hdu 4956 Poor Hanamichi BestCoder Round #5(数学题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4956 Poor Hanamichi Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7    Accepted Submission(s): 4 Problem Description Hanamichi is taking part in

Codeforces Round #433 (Div. 2)

题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <algorithm> 5 using namespace std; 6 int gcd(int a,int b){re

CF #262 (DIV2) C . Present (二分答案)

output standard output Little beaver is a beginner programmer, so informatics is his favorite subject. Soon his informatics teacher is going to have a birthday and the beaver has decided to prepare a present for her. He planted n flowers in a row on