您的位置:首页 > 产品设计 > UI/UE

贪心水题。UVA 11636 Hello World,LA 3602 DNA Consensus String,UVA 10970 Big Chocolate,UVA 10340 All in All,UVA 11039 Building Designing

2015-09-15 08:01 561 查看
UVA 11636 Hello World

二的幂答案就是二进制长度减1,不是二的幂答案就是是二进制长度。

#include<cstdio>

int main()
{
int n,kas = 0;
while(scanf("%d",&n),n>0){
int r = 0;
for(n--;n;n>>=1) r++;
printf("Case %d: %d\n",++kas,r);
}
return 0;
}


LA 3602 DNA Consensus String

贪心构造,每一位上选出现次数最多的。

#include<bits/stdc++.h>
using namespace std;
const int maxm = 55,maxn = 1e3+1;

int id[256];
char rid[] = "ACGT";
int ct[4][maxn];
char s[maxn+5];
int main()
{
id['A'] = 0; id['C'] = 1; id['G'] = 2; id['T'] = 3;
int T;cin>>T;
while(T--){
int m,n; scanf("%d%d",&m,&n);
for(int i = 0; i < 4; i++) fill(ct[i],ct[i]+n,0);
for(int i = 0; i < m; i++){
scanf("%s",s);
for(int j = 0; j < n; j++){
ct[id[s[j]]][j]++;
}
}
int sum = 0;
for(int j = 0; j < n; j++){
int k = 0;
for(int i = 1; i < 4; i++) if(ct[i][j] > ct[k][j]) k = i;
putchar(rid[k]); sum += m-ct[k][j];
}
printf("\n%d\n",sum);
}
return 0;
}


UVA 10970 Big Chocolate (等效转换)

题目问最少的刀数是迷惑人的,从块数来看,每次切只会增加一块巧克力。

#include<bits/stdc++.h>
using namespace std;

int main()
{
int m,n;
while(~scanf("%d%d",&m,&n)){
printf("%d\n",m*n-1);
}
return 0;
}


UVA 10340 All in All

贪心选,两个指针,t中的当前元素能选就选,不选这个元素对答案就没有贡献了,一定不会更优。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 1e5;
char s[maxn],t[maxn];
int main()
{
while(~scanf("%s%s",s,t)){
char *p = s,*q = t;
while(*p){
while(*q && *q != *p) q++;
if(!*q) break;
p++; q++;
}
if(!*p) puts("Yes");
else puts("No");
}
return 0;
}


UVA 11039 Building Designing

贪心,按照绝对值排序,记录一下上次的符号,能选就选。

#include<bits/stdc++.h>
using namespace std;
const int maxn = 5e5+5;
int a[maxn];
bool cmp(int a,int b) { return abs(a) < abs(b); }
int main()
{
int T; cin>>T;
while(T--){
int n; scanf("%d",&n);
for(int i = 0; i < n; i++) scanf("%d",a+i);
sort(a,a+n,cmp);
int ans = 1; bool fg = a[0]>0;
for(int i = 1; i < n; i++){
bool tfg = a[i]>0;
if( (tfg&&!fg) || (!tfg&&fg) ) {
fg = tfg; ans++;
}
}
printf("%d\n",ans);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: