A
include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define eps 1e-6
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 1e9 + 7;
using namespace std;
int a[105][105];
int main()
{
int M,N;
cin >> N >> M;
for(int i = 1;i <= N;i++)
for(int j = 1;j <= M;j++)
cin >> a[i][j];
int ANS = INF;
int mina = 0,minb = 0;
for(int i = 1;i <= N;i++)
for(int j = 1;j <= M;j++)
{
if(i == j)
continue;
int A = 0,B = 0,C = 0,D = 0;
for(int k = 1;k <= N;k++)
{
if(a[k][i] == 1 && a[k][j] == 1)
A++;
else if(a[k][i] == 1)
B++;
else if(a[k][j] == 1)
C++;
else
D++;
}
int ans = 0;
ans = max(ans,A);
ans = max(ans,B);
ans = max(ans,C);
ans = max(ans,D);
if(ans < ANS)
{
ANS = ans;
mina = i;
minb = j;
}
}
printf("%d\n",ANS);
printf("%d %d\n",mina,minb);
return 0;
}
B
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define eps 1e-6
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 25 * 1E8;
using namespace std;
int fun(int i)
{
int j = 2;
while(i >= j)
{
i -= (i / j);
j++;
}
return i;
}
int main()
{
int l,r;
cin >> l >> r;
int ans = fun(r) - fun(l - 1);
//printf("%d %d\n",fun(r),fun(l - 1));
printf("%d\n",ans);
return 0;
}
C
#include<cstdio>
#define N 200005
int n,m,ux,uy,ax,ay,a[N],u[N],ck,ans,fx[4]= {1,-1,0,0},fy[4]= {0,0,1,-1};
char c;
void dfs(int x,int y,int s){
if(x==ux&&y==uy&&s>2||x==ax&&y==ay)//走回起点(s是第几步)或走到终点
ans++;
if(u[x*m-m+y]||ans>2||ans&&ck)return;
u[x*m-m+y]=1;
int r=0;
for(int i=0;i<4;i++){
int nx=x+fx[i];
int ny=y+fy[i];
if(nx&&nx<=n&&ny&&ny<=m&&a[nx*m-m+ny]){
r++;//点的度
if(r>2)ck=1;
dfs(nx,ny,s+1);
}
}
}
int main(){
scanf("%d%d ",&n,&m);
for(int i=1; i<=n; i++)
{
for(int j=1; j<=m; j++)
{
c=getchar();
if(c!='#')
a[i*m-m+j]=1;
if(c=='1')
{
ux=i;
uy=j;
}
else if(c=='2')
{
ax=i;
ay=j;
}
}
getchar();
}
dfs(ux,uy,0);
if(ans>2||ans&&ck)printf("YES");
else printf("NO");
return 0;
}
D
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int maxn = 1e5 * 2 + 10;
char buf[maxn];
int cha[26];
int ql[maxn], qr[maxn];
void init(int len, int k)
{
memset(qr, -1, sizeof qr);
int l = len, ct = 0;
for (int i = len ; i > 0 ; i--)
{
while(ct < k && l > 0)
{
if (!cha[buf[l] - 'a'])
ct++;
cha[buf[l] - 'a']++;
--l;
}
if (ct == k)
qr[i] = l + 1;
if (--cha[buf[i] - 'a'] == 0)
--ct;
}
memset(cha, 0, sizeof cha);
memset(ql, -1, sizeof ql);
l = len, ct = 0;
for (int i = len ; i > 0 ; i--)
{
while(ct <= k && l > 0)
{
if (!cha[buf[l] - 'a'])
ct++;
cha[buf[l] - 'a']++;
--l;
}
if (ct == k + 1)
ql[i] = l + 2;
else if (ct == k && l == 0)
ql[i] = l + 1;
if (--cha[buf[i] - 'a'] == 0)
--ct;
}
}
struct tree
{
int num;
int m;
}t[maxn * 4];
void build(int l, int r, int p)
{
t[p].num = maxn;
if (l == r)
return;
t[p].m = (l + r) / 2;
build(l, t[p].m, 2 * p);
build(t[p].m + 1, r, 2 * p + 1);
}
int query(int l, int r, int ll, int rr, int p)
{
if (l == ll && r == rr)
return t[p].num;
if (ll > t[p].m)
return query(t[p].m + 1, r, ll, rr, 2 * p + 1);
else if (rr <= t[p].m)
return query(l, t[p].m, ll, rr, 2 * p);
return min(
query(l, t[p].m, ll, t[p].m, 2 * p),
query(t[p].m + 1, r, t[p].m + 1, rr, 2 * p + 1));
}
void modify(int l, int r, int p, int pp, int num)
{
if (l == r)
{
t[p].num = num;
return;
}
if (pp <= t[p].m)
modify(l, t[p].m, 2 * p , pp, num);
else
modify(t[p].m + 1, r, 2*p + 1, pp, num);
t[p].num = min(t[p].num, num);
}
int main()
{
int k, len;
scanf("%d%s", &k, buf + 1);
len = strlen(buf + 1);
init(len, k);
build(0, len, 1);
for (int i = 1 ; i <= len ; i++)
{
int ans = -1;
if (ql[i] == 1)
modify(0, len, 1, i, ans = 1);
else if (ql[i] != -1)
{
ans = query(0, len, ql[i] - 1, qr[i] - 1, 1);
//printf("%d\n", ans);
if (ans != maxn)
modify(0, len, 1, i, ++ans);
else
ans = -1;
}
printf("%d ", ans);
}
return 0;
}
G
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define eps 1e-6
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 25 * 1E8;
using namespace std;
int main()
{
double x1,y1,x2,y2;
double a1,b1,a2,b2;
scanf("%lf %lf %lf %lf",&x1,&y1,&x2,&y2);
scanf("%lf %lf %lf %lf",&a1,&b1,&a2,&b2);
double a = (a1 - a2) * (a1 - a2) + (b1 - b2) * (b1 - b2);
double b = (b2 - b1) * (y2 - y1) + (a2 - a1) * (x2 - x1);
b *= 2;
double c = (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1);
double ans = (4 * a * c - b * b) / (4 * a);
if(b * a < 0)
printf("%.15f\n",sqrt(ans));
else
printf("%.15f\n",sqrt(c));
return 0;
}
H
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[2*N], b[2*N], t[2*N], r[2*N];
int main()
{
int n, m;
scanf("%d%d", &n, &m);
for(int i=1; i<=n; i++)
{
scanf("%d", &a[i]);
b[i] = a[i];
}
int ti, ri, len=0;
for(int i=0; i<m; i++)
{
scanf("%d%d", &ti, &ri);
while(len && ri>=r[len-1]) len--;
t[len]=ti, r[len]=ri, len++;
}
r[len++]=0;
sort(b+1, b+1+r[0]);
int lb=1, rb=r[0];
for(int i=1; i<len; i++)
{
for(int j=r[i-1]; j>r[i]; j--)
{
if(t[i-1]==1) a[j]=b[rb--];
else a[j]=b[lb++];
}
}
printf("%d", a[1]);
for(int i=2; i<=n; i++)
{
printf(" %d", a[i]);
}
printf("\n");
return 0;
}
I
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define eps 1e-6
typedef long long LL;
const double pi = acos(-1.0);
const long long mod = 1e9 + 7;
using namespace std;
struct point
{
int id,x,y;
bool operator <(point a)const
{
return y < a.y;
}
};
vector <point> bx[1010];
int main()
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
point t;
scanf("%d%d",&t.x,&t.y);
t.id=i;
bx[t.x/1000].push_back(t);
}
bool flag=0;
for(int i=0;i<=1000;i++)
{
sort(bx[i].begin(),bx[i].end());
if(bx[i].size())
{
int len=bx[i].size();
if(!flag)
for(int j=0;j<len;j++)
printf("%d ",bx[i][j].id);
else
for(int j=len-1;j>-1;j--)
printf("%d ",bx[i][j].id);
flag^=1;
}
}
}
J
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> II;
typedef vector< II > VII;
typedef vector<int> VI;
typedef vector< VI > VVI;
typedef long long int LL;
#define PB push_back
#define MP make_pair
#define F first
#define S second
#define SZ(a) (int)(a.size())
#define ALL(a) a.begin(),a.end()
#define SET(a,b) memset(a,b,sizeof(a))
#define si(n) scanf("%d",&n)
#define dout(n) printf("%d\n",n)
#define sll(n) scanf("%lld",&n)
#define lldout(n) printf("%lld\n",n)
#define fast_io ios_base::sync_with_stdio(false);cin.tie(NULL)
#define TRACE
#ifdef TRACE
#define trace(...) __f(#__VA_ARGS__, __VA_ARGS__)
template <typename Arg1>
void __f(const char* name, Arg1&& arg1){
cerr << name << " : " << arg1 << std::endl;
}
template <typename Arg1, typename... Args>
void __f(const char* names, Arg1&& arg1, Args&&... args){
const char* comma = strchr(names + 1, ',');cerr.write(names, comma - names) << " : " << arg1<<" | ";__f(comma+1, args...);
}
#else
#define trace(...)
#endif
//FILE *fin = freopen("in","r",stdin);
//FILE *fout = freopen("out","w",stdout);
const int N=2000005;
const int M=100000000;
const int K=30;
const LL MOD=1000000007;
VI prim[N];
int vis[N];
LL fact[K],invfact[K];
LL powmod(LL a,LL b)
{
if(b==0)
return 1;
LL ret=powmod(a,b/2);
ret=(ret*ret)%MOD;
if(b%2==1)
{
ret=(ret*a)%MOD;
}
return ret;
}
LL ncr(int n,int r)
{
LL ret=1;
if(n>=(int)MOD)
return 0;
for(int i=0;i<r;i++)
{
ret=(ret*1LL*(n-i))%MOD;
}
ret=(ret*invfact[r])%MOD;
return ret;
}
void pre()
{
for(int i=2;i<N;i++)
if(!vis[i])
for(int j=i;j<N;j+=i)
{
vis[j]=1;
prim[j].PB(i);
}
fact[0]=1ll;
invfact[0]=1;
for(int i=1;i<K;i++)
{
fact[i]=(fact[i-1]*1LL*i)%MOD;
invfact[i]=powmod(fact[i],MOD-2);
}
return;
}
int main()
{
fast_io;
pre();
int t;
cin>>t;
while(t--)
{
int n,m,z;
cin>>n>>z;
m=n;
LL ans=1;
for(int i=0;i<SZ(prim[n]);i++)
{
int p=prim[n][i];
int ct=0;
while(m%p==0)
{
ct++;
m=m/p;
}
ans=(ans*ncr(ct+z-1,ct))%MOD;
}
cout<<ans<<"\n";
}
return 0;
}