2017 Multi-University Training Contest - Team 1
2017-07-30 17:05
323 查看
1001:Add More Zero
题目大意:求满足10^k<=2^m的最大的K。
1002:Balala Power!
题目大意:将若干只包含小写字母的字符串转换成26进制的数,输出这些字符串转换之后和最大的十进制数。
1008:Hints of sd0061
题目大意:用参数以及所给出函数生成n个数,然后,求排好序后的 n个数中,m 次查询,第 i 的数的值
1011:KazaQ's Socks
题目大意:KazaQ有n双袜子,标号1到n放在柜子里,每天早上起床穿袜子选标号最小的一双。然后晚上回来将穿过的扔到篮子里。当篮子里的袜子数量为n-1的时候,就把这些袜子洗一下,第二天晚上再放回柜子里。问KazaQ在第K天穿的是哪一个标号的袜子。
题目大意:求满足10^k<=2^m的最大的K。
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; int main() { int m,cas=0; while(~scanf("%d",&m)) { printf("Case #%d: %d\n",++cas,(int)(m*log(2)/log(10))); } return 0; }
1002:Balala Power!
题目大意:将若干只包含小写字母的字符串转换成26进制的数,输出这些字符串转换之后和最大的十进制数。
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<algorithm> using namespace std; #define ll long long const int maxn=1e5+10; const int mod=1e9+7; struct node { int num[maxn]; int id; bool operator<(const node &r)const { for(int i=100000; i>=0; i--) { if(num[i]!=r.num[i]) return num[i]>r.num[i]; } return 0; } } a[28]; bool vis[28]; ll num[28],res[maxn]; string s[maxn]; int main() { int n,cas=0; res[0]=1; for(int i=1; i<maxn; i++) { res[i]=res[i-1]*26; res[i]%=mod; } while(~scanf("%d",&n)) { for(int i=0;i<26;i++) { for(int j=0;j<=100000;j++) a[i].num[j]=0; a[i].id=i; vis[i]=0; } for(int i=0; i<n; i++) { cin>>s[i]; int l=s[i].size(); for(int j=0,k=l-1; j<l; j++,k--) { int t=s[i][k]-'a'; a[t].num[j]++; } if(l>1) vis[s[i][0]-'a']=1; } for(int i=0;i<26;i++) { for(int j=0;j<100000;j++) { a[i].num[j+1]+=a[i].num[j]/26; a[i].num[j]%26; } } sort(a,a+26); for(int i=25;i>=0;i--) num[a[25-i].id]=i; int t=25; while(vis[a[t].id]&&t) { swap(num[a[t].id],num[a[t-1].id]); t--; } ll ans=0; for(int i=0;i<n;i++) { int l=s[i].size(); for(int j=0;j<l;j++) { ans=(ans+num[s[i][j]-'a']*res[l-1-j]%mod)%mod; } } printf("Case #%d: %d\n",++cas,ans); } return 0; }
1008:Hints of sd0061
题目大意:用参数以及所给出函数生成n个数,然后,求排好序后的 n个数中,m 次查询,第 i 的数的值
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int maxn=1e7+10; int a[110],id[110]; unsigned s[maxn]; unsigned ans[110]; int n,m; unsigned x,y,z; unsigned func() { unsigned t; x ^= x << 16; x ^= x >> 5; x ^= x << 1; t = x; x = y; y = z; z = t ^ x ^ y; return z; } bool cmp(int x,int y) { return a[x]<a[y]; } int main() { int cas=0; while(~scanf("%d%d%d%d%d",&n,&m,&x,&y,&z)) { for(int i=0;i<m;i++) scanf("%d",&a[i]),id[i]=i; a[m]=n,id[m]=m; for(int i=0;i<n;i++) s[i]=func(); sort(id,id+m,cmp); for(int now,i=m-1,last=a[id[m]];i>=0;i--,last=now) { now=a[id[i]]; if(now==last) ans[id[i]]=s[now]; else { nth_element(s,s+now,s+last); ans[id[i]]=s[now]; } } printf("Case #%d:",++cas); for(int i=0;i<m;i++) printf(" %u",ans[i]); printf("\n"); } return 0; }
1011:KazaQ's Socks
题目大意:KazaQ有n双袜子,标号1到n放在柜子里,每天早上起床穿袜子选标号最小的一双。然后晚上回来将穿过的扔到篮子里。当篮子里的袜子数量为n-1的时候,就把这些袜子洗一下,第二天晚上再放回柜子里。问KazaQ在第K天穿的是哪一个标号的袜子。
#include<iostream> #include<cstdio> using namespace std; #define ll long long int main() { int n,cas=0; ll k; while(~scanf("%d%lld",&n,&k)) { printf("Case #%d: ",++cas); if(k<=n) printf("%lld\n",k); else { k-=n; int t=k/(n-1); if(k%(n-1)==0) { if(t&1) printf("%d\n",n-1); else printf("%d\n",n); } else printf("%lld\n",k%(n-1)); } } return 0; }
相关文章推荐
- hdu 6034 Balala Power!(贪心)( 2017 Multi-University Training Contest - Team 1 )(无耻之sort)
- 2017 Multi-University Training Contest - Team 1
- 2017 Multi-University Training Contest - Team 1 1002 Balala Power!
- 2017 Multi-University Training Contest - Team 1 1006 Function
- 2017 Multi-University Training Contest - Team 1 1002 Balala Power!
- 2017 Multi-University Training Contest - Team 1 Function
- hdu 6047 Maximum Sequence(2017 Multi-University Training Contest - Team 2)
- hdu 6045 Is Derek lying?(2017 Multi-University Training Contest - Team 2)
- 2017 Multi-University Training Contest - Team 2 1003 【贪心 + 优先队列】
- hdu 6055 Regular polygon(判断正方形)(2017 Multi-University Training Contest - Team 2)
- 2017 Multi-University Training Contest - Team 1 - 1006
- 【2017 Multi-University Training Contest - Team 7】 Euler theorem
- 【2017 Multi-University Training Contest - Team 1 1001】Add More Zero
- 2017 Multi-University Training Contest - Team 3 1011 RXD's date
- hdu 6058 Kanade's sum(链表)(2017 Multi-University Training Contest - Team 3 )
- 2017 Multi-University Training Contest - Team 3 1003 Kanade's sum
- hdu 6069 Counting Divisors(约数个数)(2017 Multi-University Training Contest - Team 4 )
- hdu 6070 Dirt Ratio(二分+线段树)(2017 Multi-University Training Contest - Team 4 )
- 2017 Multi-University Training Contest - Team 4:1009&hdu6075、Questionnaire
- hdu 6071 Lazy Running(优先队列+dijkstra)(2017 Multi-University Training Contest - Team 4)