RC-u1 智能红绿灯(分数 15)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=400010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
int ti;
int n;
int a[N];
void solve()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x;
cin>>x;
a[x]++;
}
vector<PII> ans;
while(ti<=10000)
{
if(a[ti])
{
ti+=15;
bool flag=false;
for(int i=ti;i<=ti+29;i++)
if(a[i])
{
flag=true;
break;
}
ans.pb({ti,(flag?ti+44:ti+29)});
ti+=(flag?44:29);
}
ti++;
}
for(auto [u,v]:ans) cout<<u<<" "<<v<<endl;
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u2 女王的大敕令(分数 20)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=30,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
int a[N][N];
int c1,c2,r1,r2;
int w[N];
int r,c,D1,D2;
struct node
{
int x1,y1,x2,y2;
};
vector<node> ans;
bool cmp(node a,node b)
{
if(a.x1!=b.x1) return a.x1<b.x1;
else if(a.y1!=b.y1) return a.y1<b.y1;
else if(a.x2!=b.x2) return a.x2<b.x2;
return a.y2<b.y2;
}
PII get(int x)
{
return {x/5+1,x%5+1};
}
int dis(PII a,PII b)
{
return abs(a.fi-b.fi)+abs(a.se-b.se);
}
void solve()
{
cin>>c1>>c2>>r1>>r2;
for(int i=0;i<4;i++) cin>>w[i];
cin>>r>>c>>D1>>D2;
for(int i=0;i<25;i++)
{
PII pos=get(i);
node res;
int x=pos.fi,y=pos.se;
if(x!=r1-w[2]&&x!=r2+w[3]&&y!=c1&&y!=c2)
{
res.x1=x,res.y1=y;
for(int j=0;j<25;j++)
{
if(dis(get(i),get(j))==D1)
{
pos=get(j);
x=pos.fi,y=pos.se;
if(x!=r1-w[2]&&x!=r2+w[3]&&y!=c1+w[0]&&y!=c2-w[1]&&dis(pos,{r,c})==D2)
{
res.x2=x,res.y2=y;
ans.pb(res);
}
}
}
}
}
sort(all(ans),cmp);
for(auto x:ans) cout<<x.x1<<" "<<x.y1<<" "<<x.x2<<" "<<x.y2<<endl;
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u3 战利品分配(分数 25)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=100010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
int n,m,k,p;
vector<int> G[N];
int w[N];
int S,T;
int ans;
int st[N];
struct node
{
int u,dis,val;
};
void add(int a,int b)
{
G[a].pb(b);
}
void bfs()
{
queue<node> q;
if(!p) q.push({S,0,w[S]});
else q.push({S,0,0});
st[S]=1;
int res=inf;
while(q.size())
{
auto t=q.front();
q.pop();
int u=t.u,dis=t.dis,val=t.val;
if(dis>res) break;
if(u==T)
{
res=dis;
ans=max(ans,val);
continue;
}
for(auto j:G[u])
{
if(st[j]&&j!=T) continue;
st[j]=1;
if((dis+1)%k==p) q.push({j,dis+1,val+w[j]});
else q.push({j,dis+1,val});
}
}
}
void solve()
{
cin>>n>>m>>k>>p;
p--;
for(int i=1;i<=n;i++) cin>>w[i];
while(m--)
{
int a,b;
cin>>a>>b;
add(a,b);
add(b,a);
}
cin>>S>>T;
bfs();
cout<<ans;
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u4 变牛的最快方法(分数 30)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=1010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
int f[N][N],op[N][N];
PII pre[N][N];
int n,m;
int a[N],b[N];
void solve()
{
int x;
while(cin>>x&&x!=-1) a[++n]=x;
while(cin>>x&&x!=-1) b[++m]=x;
for(int i=0;i<=n;i++) f[i][0]=i,op[i][0]=0,pre[i][0]={i-1,0};
for(int i=0;i<=m;i++) f[0][i]=i,op[0][i]=3,pre[0][i]={0,i-1};
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
int del=f[i-1][j]+1;
int add=f[i][j-1]+1;
int upd=f[i-1][j-1]+(a[i]!=b[j]);
f[i][j]=min(min(del,add),upd);
if(f[i][j]==del)
{
op[i][j]=0;
pre[i][j]={i-1,j};
}
else if(f[i][j]==add)
{
op[i][j]=3;
pre[i][j]={i,j-1};
}
else if(f[i][j]==upd)
{
op[i][j]=(a[i]==b[j]?2:1);
pre[i][j]={i-1,j-1};
}
}
}
cout<<f[n][m]<<endl;
vector<int> ans;
ans.pb(op[n][m]);
PII res=pre[n][m];
while(res.fi||res.se)
{
ans.pb(op[res.fi][res.se]);
res=pre[res.fi][res.se];
}
reverse(all(ans));
for(auto x:ans) cout<<x;
}
signed main()
{
ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}
RC-u5 养老社区(分数 30)
#include<bits/stdc++.h>
using namespace std;
//#define int long long
//#define double long double
#define fi first
#define se second
#define INF 0x3f3f3f3f3f3f3f3f
#define inf 0x3f3f3f3f
#define FILL(a,b) (memset(a,b,sizeof(a)))
#define ios std::ios::sync_with_stdio(false);std::cin.tie(0);std::cout.tie(0);
#define scd(a) scanf("%d",&a)
#define scdd(a,b) scanf("%d%d",&a,&b)
#define scddd(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define pb push_back
#define all(x) x.begin(),x.end()
#define SZ(x) x.size()
#define endl '\n'
#define rep(i,j,k,l) for(int i=j;i<=k;i+=l)
#define per(i,j,k,l) for(int i=j;i>=k;i-=l)
#define Rep(i,j,k,l) for(int i=j;i<k;i+=l)
#define Per(i,j,k,l) for(int i=j;i>k;i-=l)
#define ls u<<1
#define rs u<<1|1
const int N=2010,mod=998244353;
const double eps=1e-8;
typedef pair<int,int> PII;
typedef pair<double,double> PDD;
typedef long long ll;
vector<int> G[N];
int g[N][N];
int n;
int w[N],vis[N];
void bfs(int x)
{
queue<int> q;
q.push(x);
vis[x]=1;
while(q.size())
{
int t=q.front();
q.pop();
for(int j:G[t])
{
if(!vis[j])
{
vis[j]=1;
g[x][j]=g[x][t]+1;
q.push(j);
}
}
}
}
void solve()
{
cin>>n;
for(int i=1;i<n;i++)
{
int a,b;
cin>>a>>b;
G[a].pb(b);
G[b].pb(a);
}
for(int i=1;i<=n;i++) cin>>w[i];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++) vis[j]=0;
bfs(i);
}
int ans=0;
for(int i=1;i<=n;i++)
for(int j=i+1;j<=n;j++)
for(int k=j+1;k<=n;k++)
if(g[i][j]==g[j][k]&&g[i][j]==g[i][k]&&w[i]!=w[j]&&w[i]!=w[k]&&w[j]!=w[k]) ans++;
cout<<ans;
}
signed main()
{
// ios
int t=1;
//cin>>t;
while(t--) solve();
return 0;
}