//大意:问你是否是一个递增且在一个特定范围内的被25整除的序列
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int a[20];
int main()
{
for(int i=1;i<=8;i++)
{
cin>>a[i];
}
for(int i=1;i<=8;i++)
{
if(a[i]<a[i-1]||a[i]%25!=0||a[i]<100||a[i]>675)
{
cout<<"No";
return 0;
}
}
cout<<"Yes";
return 0;
}
//找到曾今出现过的字符串
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
map<string,int>mp;
string a[10007];
int b[10007];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=m;i++)
{
string s;
cin>>s;
mp[s]=i;
}
for(int i=0;i<=m;i++)
{
cin>>b[i];
}
int sum=0;
for(int i=1;i<=n;i++)
{
if(mp[a[i]])sum+=b[mp[a[i]]];
else sum+=b[0];
}
cout<<sum;
return 0;
}
//结构体+高精度排序
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5+7;
struct point
{
int id;
long double x;
}a[N];
bool cmp(point q,point p)
{
if(q.x==p.x)return q.id<p.id;
else return q.x>p.x;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
long double c,d;
cin>>c>>d;
a[i].x=c/(c+d);
a[i].id=i;
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++)cout<<a[i].id<<" ";
return 0;
}
D - Snuke Maze
//图论中找出合法路径+bfs
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 507;
string s[N];
string ans="snuke";
struct point
{
int x,y,id;
}k;
int vis[N][N];
int dx[]={1,-1,0,0};
int dy[]={0,0,1,-1};
int main()
{
int n,m;
cin>>n>>m;
for(int i=0;i<n;i++)cin>>s[i];
if(s[0][0]!='s')
{
cout<<"No";
return 0;
}
k.x=0;
k.y=0;
k.id=1;
vis[0][0]=1;
queue<point>q;
q.push(k);
while(q.size())
{
k=q.front();
q.pop();
// cout<<k.x<<" "<<k.y<<" "<<k.id<<endl;
if(k.x==n-1&&k.y==m-1)
{
cout<<"Yes";
return 0;
}
for(int i=0;i<4;i++)
{
int ix=k.x+dx[i];
int iy=k.y+dy[i];
if(vis[ix][iy]==0&&ix>=0&&ix<n&&iy>=0&&iy<m&&s[ix][iy]==ans[k.id])
{
vis[ix][iy]=1;
point kk;
kk.x=ix;
kk.y=iy;
kk.id=(k.id+1)%5;
q.push(kk);
}
}
}
cout<<"No";
return 0;
}
//枚举
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int N = 2e5+7;
int a[N];
ll cntM[3];//记录当前状态下,曾经有多少个M的值出现过
ll cntE[3][3];//记录当前状态下,有多少个M与E值互相匹配
ll mex(int i,int j,int k)
{
for(int o=0;o<=3;o++)
{
if(o!=i&&o!=j&&o!=k)return o;
}
}
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++)cin>>a[i];
string s;
cin>>s;
ll ans=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='M')cntM[a[i]]++;
else if(s[i]=='E')
{
for(int j=0;j<3;j++)cntE[j][a[i]]+=cntM[j];
}
else
{
for(int j=0;j<3;j++)
{
for(int k=0;k<3;k++)
{
ans+=mex(j,k,a[i])*cntE[j][k];
}
}
}
}
cout<<ans;
return 0;
}