725 Div. 3
A - Stone Game
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
inline void solve(){
int t;
cin>>t;
while(t--){
int n;
cin>>n;
int minn=INT_MAX;
int maxn=INT_MIN;
int l,r;
for(int i=1;i<=n;i++){
int k;
cin>>k;
if(k>maxn){
maxn=k;
r=i;
}
if(k<minn){
minn=k;
l=i;
}
}
if(l>r) swap(l,r);
int a=l;
int b=r-l;
int c=n-r+1;
int ans=a+b+c;
int mi=max(max(a,b),c);
//cout<<a<<" "<<b<<" "<<c<<endl;
ans-=mi;
cout<<ans<<endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
B - Friends and Candies
答案
#include <bits/stdc++.h>
#include <algorithm>
#include <iostream>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
using namespace std;
int dp[N];
inline void solve() {
int t;
cin >> t;
while (t--) {
int n;
cin >> n;
double num = 0;
for (int i = 1; i <= n; i++) {
cin >> dp[i];
num += dp[i];
}
num = num * 1.0 / n;
int temp = num;
if (num > temp * 1.0) {
cout << "-1" << endl;
continue;
}
int tot = 0;
for (int i = 1; i <= n; i++) {
if (dp[i] > num) tot++;
}
cout << tot << endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
C - Number of Pairs
答案
#include <bits/stdc++.h>
#include <algorithm>
#include <iostream>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
using namespace std;
// vector<int>dp;
ll dp[N];
inline ll bnri(ll l, ll r, ll k) {
while (l < r) {
ll mid = (l + r + 1) / 2;
if (dp[mid] < k)
l = mid;
else
r = mid - 1;
}
return l;
}
inline void solve() {
ll t;
cin >> t;
while (t--) {
// dp.clear();
ll n, l, r;
cin >> n >> l >> r;
ll k;
for (ll i = 1; i <= n; i++) cin >> dp[i]; // cin>>k,dp.eb(k);
// sort(dp.begin(),dp.end());
sort(dp + 1, dp + 1 + n);
ll res = 0;
for (ll i = 1; i <= n; i++) {
ll lr = 1;
ll rr = i - 1;
ll k = l - dp[i];
ll s1 = bnri(0, rr, k);
k = r - dp[i];
ll s2 = bnri(0, rr, k);
while (dp[s2 + 1] == k) s2++;
while (s2 >= i) s2--;
res += s2 - s1;
}
cout << res << endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
D - Another Problem About Dividing Numbers
答案
#include <bits/stdc++.h>
#include <algorithm>
#include <iostream>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
// #define x first
// #define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 4e4 + 10;
const int M = 111;
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
using namespace std;
bool vp[N];
int prime[N], tot;
map<int, int> vis;
inline void get_prime() {
for (int i = 2; i < N; i++) {
if (vp[i] == 0) {
prime[tot++] = i;
for (int j = i * i; j < N; j += i) {
vp[j] = 1;
}
}
}
}
inline int get(int k) {
if (k == 1) return vis[1] = 0;
if (vis[k]) return vis[k];
int m = k, c = 0;
for (int i = 0; i < tot; i++) {
while (m % prime[i] == 0) {
m /= prime[i];
c++;
}
if (m == 1) return vis[k] = c;
}
return vis[k] = c + 1;
}
inline void solve() {
get_prime();
int t;
cin >> t;
while (t--) {
int x, y, k;
cin >> x >> y >> k;
int l, r;
if (x == y)
l = 2;
else if (x % y == 0 || y % x == 0)
l = 1;
else
l = 2;
r = get(x) + get(y);
if (k >= l && k <= r)
cout << "YES\n";
else
cout << "NO\n";
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
F - Interesting Function
答案
#include <bits/stdc++.h>
#include <algorithm>
#include <iostream>
#define ll long long
#define mem(a, b) memset(a, b, sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i, a, b) for (auto i = a; i <= b; ++i)
#define bep(i, a, b) for (auto i = a; i >= b; --i)
#define lowbit(x) x&(-x)
#define PII pair<int, int>
#define x first
#define y second
#define PLL pair<ll, ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[] = {-1, 0, 1, 0};
int dy[] = {0, 1, 0, -1};
using namespace std;
inline ll get(int k) {
ll res = k;
ll col = 1;
k /= 10;
while (k) {
res += (k % 10) * col;
col = col * 10 + 1;
k /= 10;
}
return res;
}
inline void solve() {
int t;
cin >> t;
while (t--) {
ll x, y;
cin >> x >> y;
cout << get(y) - get(x) << endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
E - Funny Substrings
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
ll sp[M];
string s[M];
string a,b,c,d,e;
map<string,int>mp;
inline ll get(string s){
int len=s.size();
ll res=0;
for(int i=0;i<len-3;i++){
string str="";
for(int j=0;j<4;j++) str+=s[i+j];
if(str=="haha") res++;
}
return res;
}
inline void solve(){
int t;
cin>>t;
while(t--){
mp.clear();
int pos=0;
mem(sp,0);
int n;
cin>>n;
int key;
for(int i=1;i<=n;i++){
a=b=c=d=e="";
cin>>a>>b;
if(!mp[a]) mp[a]=++pos;
key=mp[a];
if(b[0]==':'){
cin>>c;
sp[key]=get(c);
string temp=c;
int len=temp.size();
if(len<=3) s[key]=temp;
else{
s[key]="";
s[key]+=temp[0];
s[key]+=temp[1];
s[key]+=temp[2];
s[key]+='x';
s[key]+=temp[len-3];
s[key]+=temp[len-2];
s[key]+=temp[len-1];
}
}
else{
cin>>c>>d>>e;
string temp=s[mp[c]]+s[mp[e]];
sp[key]=sp[mp[c]]+sp[mp[e]];
sp[key]+=get(temp);
//cout<<temp<<" "<<get(temp)<<endl;
int len=temp.size();
if(len<=3) s[key]=temp;
else{
s[key]="";
s[key]+=temp[0];
s[key]+=temp[1];
s[key]+=temp[2];
s[key]+='x';
s[key]+=temp[len-3];
s[key]+=temp[len-2];
s[key]+=temp[len-1];
}
}
if(i==n) cout<<sp[key]<<endl;
}
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}
G - Gift Set (补)
答案
#include <iostream>
#include <algorithm>
#include<bits/stdc++.h>
#define ll long long
#define mem(a,b) memset(a,b,sizeof a)
#define ull unsigned long long
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(auto i=a;i<=b;++i)
#define bep(i,a,b) for(auto i=a;i>=b;--i)
#define lowbit(x) x&(-x)
#define PII pair<int,int>
#define x first
#define y second
#define PLL pair<ll,ll>
#define PI acos(-1)
#define pb push_back
#define eb emplace_back
const double eps = 1e-6;
const int mod = 998244353;
const int MOD = 1e9 + 7;
const int N = 2e5 + 10;
const int M = 111;
int dx[]={-1, 0, 1, 0};
int dy[]={0, 1, 0, -1};
using namespace std;
inline bool judge(ll x,ll y,ll a,ll b,ll n){
ll l=0;
ll r=n;
while(l<=r){
ll mid=l+r>>1;
ll l1=mid;
ll l2=n-mid;
ll p1=l1*a+l2*b;
ll p2=l1*b+l2*a;
if(p1<=x&&p2<=y) return 1;
if(p1>x){
if(a>b) r=mid-1;
else l=mid+1;
}
else{
if(a>b) l=mid+1;
else r=mid-1;
}
}
return 0;
}
inline void solve(){
ll t;
cin>>t;
while(t--){
ll x,y,a,b;
cin>>x>>y>>a>>b;
ll l=0,r=1e9;
ll res=0;
while(l<=r){
ll mid=l+r>>1;
if(judge(x,y,a,b,mid)) res=mid,l=mid+1;
else r=mid-1;
}
cout<<res<<endl;
}
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
solve();
return 0;
}