HDU6033  Add More Zero

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6033

题目意思:给一个m,求一个数k使得10^k最接近2^m-1(不超过2^m-1),首先明确一点不存在10^k=2^m-1或者2^m,自己拿计算机随机算算就知道了,那现在我们只要知道2^m-1转成10进制是一个多少位的数,那么k就是多少,对2^m-1对10做对数运算算log10(2^m-1),m很大的时候2^m-1非常接近于2^m而且我们也说了不存在10^k=2^m-1或者2^m。所以log(2^m)=mlog10(2),直接算出这个数,向下取整就好了。

代码:

 //Author: xiaowuga
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <ctime>
#include <map>
#include <bitset>
#include <cctype>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f
#define mem(s,ch) memset(s,ch,sizeof(s))
#define da cout<<da<<endl
#define uoutput(a,i,l,r) for(int i=l;i<r;i++) if(i==l) cout<<a[i];else cout<<" "<<a[i];cout<<endl;
#define doutput(a,i,l,r) for(int i=r-1;i>=0;i--) if(i==r-1) cout<<a[i];else cout<<" "<<a[i];cout<<endl;
const long long N= ;
using namespace std;
typedef long long LL;
int main() {
ios::sync_with_stdio(false);cin.tie();
LL m;
int c=;
while(cin>>m){
cout<<"Case #"<<++c<<": ";
cout<<floor(m*log10())<<endl;
}
return ;
}

HDU6034  Balala Power!

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6034

题目意思:给你n个字符串,由小写字母组成,让你对这个每个字母赋值(0-25,每个数字只能用一次),问你怎么样赋值才能让最后形成的二十六进制的数转成十进制这些数的和最大。算出这个数mod1e9+7。字符串的长度的总和可以是十万,每个字符串长度的上限就是十万。可能高达十万位的二十六进制的数,赋值的时候还要小心前导零。

思路:我们计算每个字母在第i位上的数量(这里声明一下第i为表示这个字母对总和的贡献是bit[i]*26^i)。我们把所有的字符串扫一遍计算他所有字母的贡献,通过判断他在某些位上出现的次数。来比较他们他的大小,然后赋值,对于前导零,我们需要判断是否26个字母都出现了。如果都出现了,我们需要判断最后被赋值为0的那个字母是否作为其中一个字符串的首字母出现过,反向找到第一个不在首字母出现过的字母把它赋值为0,然后再从大到小赋值,遇到这个字母我们跳过就好了。

对于排序,我们可以记录一个字母出现的最高位是多少。先通过比较最高位,比完以后,我们在从高位按位比较,高位可以决定大小而低位不一定可以决定大小,因为高位的基数大。

代码:

 //Author: xiaowuga
#include <iostream>
#include <algorithm>
#include <set>
#include <vector>
#include <queue>
#include <cmath>
#include <cstring>
#include <cstdio>
#include <ctime>
#include <map>
#include <bitset>
#include <cctype>
#define maxx INT_MAX
#define minn INT_MIN
#define inf 0x3f3f3f3f
#define mem(s,ch) memset(s,ch,sizeof(s))
#define da cout<<da<<endl
#define uoutput(a,i,l,r) for(int i=l;i<r;i++) if(i==l) cout<<a[i];else cout<<" "<<a[i];cout<<endl;
#define doutput(a,i,l,r) for(int i=r-1;i>=0;i--) if(i==r-1) cout<<a[i];else cout<<" "<<a[i];cout<<endl;
const long long N=+;
const long long mod=1e9+;
using namespace std;
typedef long long LL;
int n;
struct Bit{
int s[N];
char ch;
bool operator <(const Bit &m)const{
if(s[]!=m.s[]) return s[]>m.s[];
else{
for(int i=s[];i>=;i--){
if(s[i]==m.s[i]) continue;
else return s[i]>m.s[i];
}
return ;
}
}
}bit[];
string q[N];
LL mi[N];
int vis[],ct,inhead[N],w[N];
void init(){
mi[]=;
for(int i=;i<N;i++){
mi[i]=mi[i-]*%mod;
}
}
int main() {
ios::sync_with_stdio(false);cin.tie();
init();
int c=;
while(cin>>n){
for(int i=;i<;i++) {mem(bit[i].s,);bit[i].ch='a'+i;}
mem(vis,);ct=;
mem(inhead,);
mem(w,);
for(int i=;i<n;i++) {cin>>q[i]; if(q[i].size()!=) inhead[q[i][]-'a']=;}
for(int i=;i<n;i++){
int len=q[i].size();
for(int j=len-;j>=;j--){
int t=q[i][j]-'a';
if(!vis[t]){vis[t]=;ct++;}
bit[t].s[len-j]++;
if(bit[t].s[len-j]>=){
bit[t].s[len-j]=;bit[t].s[len-j+]++;
bit[t].s[]=max(bit[t].s[],len-j+);
}
bit[t].s[]=max( bit[t].s[],len-j);
}
}
sort(bit,bit+);
if(ct<){
int now=;
for(int i=;i<ct;i++) w[bit[i].ch-'a']=now--;
}
else{
int flag=-;
for(int i=;i>=;i--){
if(inhead[bit[i].ch-'a']==){
flag=i; break;
}
}
int now=;
for(int i=;i<;i++){
if(flag==i) {w[bit[i].ch-'a']=;continue;}
else w[bit[i].ch-'a']=now--;
}
}
LL sum=;
for(int i=;i<n;i++){
int len=q[i].size();
int x=;
for(int j=len-;j>=;j--){
LL t=mi[x++]*w[q[i][j]-'a']%mod;
sum=(sum+t)%mod;
}
}
//cout<<ct<<endl;
cout<<"Case #"<<++c<<": ";
cout<<sum<<endl;
}
return ;
}

2017 Multi-University Training Contest - Team 1—HDU6033&&HDU6034的更多相关文章

  1. 2017 Multi-University Training Contest - Team 9 1005&&HDU 6165 FFF at Valentine【强联通缩点+拓扑排序】

    FFF at Valentine Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  2. 2017 Multi-University Training Contest - Team 9 1004&&HDU 6164 Dying Light【数学+模拟】

    Dying Light Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  3. 2017 Multi-University Training Contest - Team 9 1003&&HDU 6163 CSGO【计算几何】

    CSGO Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Subm ...

  4. 2017 Multi-University Training Contest - Team 9 1002&&HDU 6162 Ch’s gift【树链部分+线段树】

    Ch’s gift Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

  5. 2017 Multi-University Training Contest - Team 9 1001&&HDU 6161 Big binary tree【树形dp+hash】

    Big binary tree Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...

  6. 2017 Multi-University Training Contest - Team 1 1003&&HDU 6035 Colorful Tree【树形dp】

    Colorful Tree Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  7. 2017 Multi-University Training Contest - Team 1 1006&&HDU 6038 Function【DFS+数论】

    Function Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  8. 2017 Multi-University Training Contest - Team 1 1002&&HDU 6034 Balala Power!【字符串,贪心+排序】

    Balala Power! Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

  9. 2017 Multi-University Training Contest - Team 1 1011&&HDU 6043 KazaQ's Socks【规律题,数学,水】

    KazaQ's Socks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)T ...

随机推荐

  1. xa

    题目描述把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法.输入每个用例包含二个整数M和N.0<=m<=1 ...

  2. Android 网络下载图片

    2中方法: 1. public byte[] downloadResource(Context context, String url) throws ClientProtocolException, ...

  3. 使用vs2015编译器编译libpqxx时发生的错误以及解决办法

    d:\libpqxx-4.0\libpqxx-4.0\src\strconv.cxx(195): error C2440: “=”: 无法从“std::basic_istream<char,st ...

  4. 算法图绘制工具Graphviz

    graphviz是贝尔实验室设计的一个开源的画图工具,它的强大主要体现在“所思即所得"(WYTIWYG,what you think is what you get),这是和office的“ ...

  5. 转:解决centos netstat和ps感染木马

    解决方法:a.去除恶意文件的执行权限chmod 000 /tmp/gates.lod   /tmp/moni.lod    service sendmail stopchkconfig --level ...

  6. js监听文本框变化事件

    用js有两种写法: 法一: <!DOCTYPE HTMl> <html> <head> <title> new document </title& ...

  7. linux -- Ubuntu14.04及之后版本重启网卡不生效

    Ubuntu14.04修改配置,重启网卡没有生效,出现如下问题: service networking restart //重启网络服务 stop: Job failed while stopping ...

  8. 多个return和一个return

    //一个returnnamespace CleanCSharp.Methods.Dirty { class MethodExitPoints { public string GenerateAgeAp ...

  9. vs2010更新EF模型时报错

    尝试从数据库进行更新时,遇到类型为“Microsoft.VSDesigner.Data.Local.ConnectionStringConverterServiceException”的异常.异常消息 ...

  10. Java Web开发SpringMVC和MyBatis框架开发环境搭建和简单有用

    1.下载SpringMVC框架架包,下载地址: 点击下载 点击打开地址如图所看到的.点击下载就可以 然后把相关的jar拷贝到lib下导入 2.MyBatis(3.4.2)下载 X-Amz-Algori ...