一.细胞扩张
二.学习负数
printf("%s\n",x>y?"Yes":"No");
三.d的单词个数
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
char str[100100];
int main()
{
int ans=0;
gets(str);
int len=strlen(str);
str[len] = ' ';
for(int i=1;i<=len;i++)
{
if(str[i]==' '&&str[i-1]=='d')
{
ans++;
}
}
printf("%d\n",ans);
}
四.食堂跑腿
- 前两个食堂的菜品价格两两相加,前两个食堂的价格的所有可能放到一个map容器种,第三个食堂遍历的时候,直接加上前两个食堂的可能数
#include<stdio.h>
#include<algorithm>
#include<string.h>
#include<iostream>
#include<map>
using namespace std;
map<int,int> mp;
int a[1100];
int main()
{
int m,k,x,ans=0;
cin>>m>>k;
for(int i=1;i<=m;i++)
cin>>a[i];
for(int i=1;i<=m;i++)
{
cin>>x;
for(int j=1;j<=m;j++)
{
mp[x+a[j]]++;
}
}
for(int i=1;i<=m;i++)
{
cin>>x;
ans+=mp[k-x];
}
printf("%d\n",ans);
}
五.公司招聘
- 创建一个超级源点,连接所有员工,超级源点连接员工的价格为员工的原价,然后走一遍最小生成树模板。
int n,m,tot;
int f[10010];
struct node
{
int x,y,v;
} A[1100000];
void init()
{
for(int i=0; i<=n; i++)
f[i]=i;
tot=0;
}
void add(int x,int y,int v)
{
A[tot].x=x;
A[tot].y=y;
A[tot++].v=v;
}
int cmp(node a,node b)
{
return a.v<b.v;
}
int find(int x)
{
if(x!=f[x])
f[x]=find(f[x]);
return f[x];
}
int main()
{
int x,y,v;
FILE *r=fopen("2.in","r");
FILE *ff=fopen("2.out","w");
while(~fscanf(r,"%d%d",&n,&m))
{
init();
for(int i=1; i<=n; i++)
{
fscanf(r,"%d",&v);
add(0,i,v);
}
for(int i=1; i<=m; i++)
{
fscanf(r,"%d%d%d",&x,&y,&v);
add(x,y,v);
}
sort(A,A+tot,cmp);
int ans=0;
for(int i=0; i<tot; i++)
{
int p1=find(A[i].x);
int p2=find(A[i].y);
if(p1!=p2)
{
f[p1]=p2;
ans+=A[i].v;
}
}
fprintf(ff,"%d\n",ans);
}
fclose(r);
fclose(ff);
}
六.过公路
#include<string.h>
#include<stdio.h>
#include<queue>
#include<math.h>
#define inf 0x3f3f3f3f
using namespace std;
const int N=303;
const int M=5e4+10;
int m,n,st,en,tot,head[N],dis[N];
bool vis[N];
struct node
{
int v,dis,a,b,net;
} e[M];
void add(int aa,int bb,int cc,int dd,int ee)
{
e[tot].v=bb;
e[tot].dis=cc;
e[tot].a=dd;
e[tot].b=ee;
e[tot].net=head[aa];
head[aa]=tot++;
}
int dij()
{
int time=0;
memset(dis,0x3f,sizeof(dis));
memset(vis,false,sizeof(vis));
dis[st]=0;
for(int i=1; i<=n; i++)
{
int u=-1,tmp=inf;
for(int j=1; j<=n; j++)
{
if(!vis[j]&&dis[j]<tmp)
{
tmp=dis[j];
u=j;
}
}
if(u==-1) break;
vis[u]=true;
for(int j=head[u]; j!=-1; j=e[j].net)
{
int aa=e[j].a,bb=e[j].b,dist=e[j].dis;
int t=dis[u]%(aa+bb);
int v=e[j].v;
if(aa<dist) continue;
if(aa-t>=dist&&dis[v]>dis[u]+dist)
{
dis[v]=dis[u]+dist;
time+=dist;
}
else if(aa-t<dist&&dis[v]>dis[u]+dist+aa-t+bb)
{
dis[v]=dis[u]+dist+aa-t+bb;
}
}
}
return dis[en];
}
int main()
{
int u,v,dis,aa,bb,k=1;
while(~scanf("%d%d%d%d",&n,&m,&st,&en))
{
tot=0;
memset(head,-1,sizeof(head));
for(int i=0; i<m; i++)
{
scanf("%d%d%d%d%d",&u,&v,&aa,&bb,&dis);
add(u,v,dis,aa,bb);
}
printf("%d\n", dij());
}
}
恭喜以下选手