2017 Multi-University Training Contest - Team 1—HDU6033&&HDU6034
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的更多相关文章
- 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) ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
- 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 ...
随机推荐
- Delphi记录record中的变体
program Day4; {$APPTYPE CONSOLE} uses SysUtils, Util in 'Util.pas'; type TPerson = packed record ID ...
- shell判断文件夹是否存在
#shell判断文件夹是否存在 #如果文件夹不存在,创建文件夹 if [ ! -d "/myfolder" ]; then mkdir /myfolder fi #shell判断文 ...
- js基本知识5
1.1 复习 1. 按钮不可用 disabled = “disabled” || true 2. setTimeout 只执行一次 setInterval 执行很多次 3. 递归调用 : 函数自己调用 ...
- eclipse 安装maven
在使用eclipse自带插件的方式安装 http://download.eclipse.org/technology/m2e/releases/ 点击help-->install new sof ...
- django 运行不同的settings
python manage.py runserver --settings=EMCRP.settings_local
- ExecuteNonQuery和ExecuteScalar的区别
ExecuteNonQuery 针对 Connection 执行 SQL 语句并返回受影响的行数. 返回值 受影响的行数. 备注 您可以使用 ExecuteNonQuery 来执行目录操作(例如查 ...
- 关于Linux网卡调优之:RPS (Receive Packet Steering)
昨天在查LVS调度均衡性问题时,最终确定是 persistence_timeout 参数会使用IP哈希.目的是为了保证长连接,即一定时间内访问到的是同一台机器.而我们内部系统,由于出口IP相对单一,所 ...
- 关于json动态拼接响应数据
在EasyUI http://www.jeasyui.com/demo/main/get_users.php 响应数据如下格式: { "total": "11" ...
- java--Struts中请求的过程
一个请求在Struts2框架中的处理步骤: a) 客户端初始化一个指向Servlet容器的请求: b) 根据Web.xml配置,请求首先经过ActionContextCleanUp过滤器,其为可选过滤 ...
- c# windows service(服务)
//安装%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe WindowsServiceTest.exe //卸载%Syst ...