The 2018 ACM-ICPC Asia Qingdao Regional Contest, Online(ACHJK)
阿新 • • 發佈:2018-12-10
A
#include<bits/stdc++.h> using namespace std; #define clr(a) memset(a,0,sizeof(a)) #define line cout << "-------------"<<endl typedef long long ll; const int maxn = 1e5 + 10; const int MAXN = 1e6 + 10; const int INF = 0x3f3f3f3f; const int MOD = 1e9 + 7; const int N = 1010; int main(){ int t, n, m; cin >> t; while(t--){ scanf("%d%d", &n, &m); int maxx = m; int minn = INF; int s = n-m; minn = ceil(double(m)/double(s+1)); cout<<m<<' '<<minn<<endl; } return 0; }
C
#include <bits/stdc++.h> using namespace std; #define clr(a) memset(a,0,sizeof(a)) const int N = 10100; const int Mod = 256; bool dp[N][257]; struct node{ char op[4]; int v, k; }p[N]; bool check(int pos, int num){ if(dp[pos][num]) return false; else return true; } int main(){ int t; scanf("%d", &t); while(t--){ clr(p); memset(dp, false, sizeof(dp)); int n; scanf("%d", &n); for(int i=1; i<=n; i++){ scanf("%s", p[i].op); if(strcmp(p[i].op, "add") == 0) scanf("%d", &p[i].v); else scanf("%d%d",&p[i].v, &p[i].k); } int num = 0, pos = 1; bool flag = true; while(pos <= n && flag){ flag = check(pos, num); if(!flag) continue; dp[pos][num] = true; if(strcmp(p[pos].op, "add") == 0){ num = (num + p[pos].v) % Mod; pos ++; } else if(strcmp(p[pos].op, "beq") == 0){ if(num == p[pos].v) pos = p[pos].k; else pos++; } else if(strcmp(p[pos].op, "bne") == 0){ if(num != p[pos].v) pos = p[pos].k; else pos++; } else if(strcmp(p[pos].op, "blt") == 0) { if(num < p[pos].v) pos = p[pos].k; else pos ++; } else { if(num > p[pos].v) pos = p[pos].k; else pos ++; } } if(flag) puts("Yes"); else puts("No"); } return 0; }
H
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int maxn = 1e5+10; const int MAXN = 1e6+10; const int INF = 0x3f3f3f3f; const int MOD = 1e9+7; char a[MAXN]; int main() { int t; scanf("%d", &t); while(t--) { scanf("%s", a); ll ans = 0; int len = strlen(a); ll w; if(a[0]=='0') ans = 2; else ans = 1; w = ans; for(int i=1; i<len; i++) { if(a[i] == a[i-1]) w += i*2; else w += i; if(a[i] == '1') w += 1; else w += 2; ans += w; } printf("%lld\n", ans); } return 0; }
J
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 1e5+10;
const int MAXN = 1e6+10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9+7;
ll aa[5000010];
ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
}
int main() {
ll a,b,c,d,v,t;
ll tt;
scanf("%lld",&tt);
while(tt--){
scanf("%lld %lld %lld %lld %lld %lld",&a,&b,&c,&d,&v,&t);
ll lcm=a/gcd(a,c)*c;
ll sum=0;
aa[0] = 0;
ll m=a/gcd(a,c)+c/gcd(a,c);
ll x=1,y=1;
while(sum<=m){
sum++;
if(a*x>c*y){
aa[sum]=c*y;
y++;
}
else{
aa[sum]=a*x;
x++;
}
}
ll res=0;
for(ll i=1;i<sum;i++){
if(aa[i]-aa[i-1]>v)
res++;
}
res=t/lcm*res;
ll ttt=t%lcm;
for(ll i=1;aa[i]<=ttt && i<sum;i++){
if(aa[i]-aa[i-1]>v){
res++;
}
}
res++;
if(v>lcm){
printf("%lld\n",t/a*b+t/c*d+d+b-1);
}
else{
printf("%lld\n",t/a*b+t/c*d+d+b-res);
}
}
return 0;
}
K
#include<bits/stdc++.h>
using namespace std;
#define clr(a) memset(a,0,sizeof(a))
#define line cout << "-------------"<<endl
typedef long long ll;
const int maxn = 1e5 + 10;
const int MAXN = 1e6 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
const int N = 1010;
int a[maxn];
int change(int n){
int len = 0;
while(n){
n/=2;
len ++;
}
return len;
}
map<int, int>mp;
int main(){
int t, n;
scanf("%d", &t);while(t--){
clr(a);
mp.clear();
scanf("%d", &n);
for(int i=0 ;i<n; i++){
scanf("%d", &a[i]);
int len = change(a[i]);
mp[len] ++;
}
int ans=0;
for(auto i:mp){
ans=max(i.second,ans);
}
cout<<ans<<endl;
}
return 0;
}