HDU 6034 Balala Power!(贪心)
来源:互联网 发布:note express for mac 编辑:程序博客网 时间:2024/06/03 04:23
题目地址
题意:给a-z不同的的值(0-25),将下面的字符串看成一个26进制数,求字符串和转化成十进制的最大值,注意如果一个字符串长度>1,则首字母不能赋值成0。
题解:贪心的想,肯定是高位出现次数多的字母赋大值,我们找一个没出现在首字母并且赋值小的,让它为0.
代码:
#include<iostream>#include<stdio.h>#include<stdlib.h>#include<string.h>#include<vector>#include<queue>#include<set>#include<algorithm>#include<map>using namespace std;typedef long long int ll;typedef pair<int,int>pa;const int N=1e5+10;const int mod=1e9+7;const ll INF=1e18;const int inf=1e4;int read(){ int x=0; char ch = getchar(); while('0'>ch||ch>'9')ch=getchar(); while('0'<=ch&&ch<='9') { x=(x<<3)+(x<<1)+ch-'0'; ch=getchar(); } return x;}/***********************************************************/int num[30][N];int vis[30];int mi[N];int sum[N];int mx_len;char str[N];int a[30];int n,Case;bool cmp(int x,int y){ for(int i=mx_len-1; i>=0; i--) { if(num[x][i]!=num[y][i]) return num[x][i]<num[y][i]; } return 0;}void init(){ mx_len=0; memset(num,0,sizeof(num)); memset(vis,0,sizeof(vis)); memset(sum,0,sizeof(sum));}void solve(){ for(int i=0; i<n; i++) { scanf("%s",str); int len=strlen(str); if(len>1) vis[str[0]-'a']=1; reverse(str,str+len); for(int j=0; j<len; j++) { num[str[j]-'a'][j]++; sum[str[j]-'a']+=mi[j]; if(sum[str[j]-'a']>=mod) sum[str[j]-'a']%=mod; } mx_len=max(mx_len,len); } for(int i=0; i<26; i++) { for(int j=0; j<mx_len; j++) { num[i][j+1]+=num[i][j]/26; num[i][j]%=26; } while(num[i][mx_len]) { num[i][mx_len+1]=num[i][mx_len]/26; num[i][mx_len]%=26; mx_len++; } a[i]=i; } sort(a,a+26,cmp); int ans=-1; for(int i=0; i<26; i++) { if(!vis[a[i]]) { ans=a[i]; break; } } int res=0; int x=25; for(int i=25; i>=0; i--) { if(a[i]!=ans) { res+=(ll)(x--)*sum[a[i]]%mod; res%=mod; } } printf("Case #%d: %d\n",++Case,res);}int main(){ mi[0]=1; Case=0; for(int i=1; i<=N; i++) { mi[i]=(ll)mi[i-1]*26%mod; } while(~scanf("%d",&n)) { init(); solve(); } return 0;}
阅读全文
0 0
- HDU 6034 Balala Power! (贪心)
- HDU 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!(贪心)
- hdu 6034 Balala Power!(贪心)
- HDU 6034 Balala Power!【贪心】
- HDU 6034 Balala Power!【贪心】
- 【HDU 6034】Balala Power!(贪心+进制转换)
- HDU 6034 Balala Power! 排序 贪心
- HDU-6034 Balala Power!
- [HDU]-6034 Balala Power!
- HDU 6034 Balala Power!
- hdu 6034 Balala Power!
- 【HDU 6034 Balala Power!】
- hdu 6034 Balala Power!
- HDU 6034 Balala Power!
- HDU 6034 Balala Power!
- 用css3画一个哆啦A梦
- C++ & Pascal & Java ——NOIP2016提高组day2 t1——组合数问题
- 排序算法之选择排序
- Python中字体颜色的控制
- EM算法--expectation maximization
- HDU 6034 Balala Power!(贪心)
- DocumentsProvider介绍与使用
- Linux netstat命令详解
- myeclipse修改主题色、背景色
- laravel设置全局scope
- 图片传输转换
- Python标准库介绍
- +,++运算符重载
- 折半插入排序