A.2295

求有多少素数对和等于n。

暴力。

#include <bits/stdc++.h>
using namespace std;
int ss(int n)
{
int i=,a=sqrt(n);
for(;i<=a;i++)
if(n%i==) return ;
return ;
}
int main()
{
int n;
while(scanf("%d",&n),n)
{
int sum=;
for(int i=;i<=n/;i++)
{
if(ss(i)&&ss(n-i)) sum++;
}
printf("%d\n",sum);
}
return ;
}

A.cpp

B.4607

给一个数能否被17整除。

同余。

#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
while(cin>>s,s!="")
{
int su=;
for(int i=; s[i]; i++)su=(su*+s[i]-'')%;
cout<<(su?:)<<endl;
}
}

B.cpp

C.4681

给一个4*4的方格图,一次移动,输出结果。

暴力模拟。

#include<bits/stdc++.h>
using namespace std;
int a[][];
void left_swap()
{
for(int i=;i<;i++)
for(int j=;j<;j++)
{
int k=j;
while(k>=&&a[i][k-]==)
{
swap(a[i][k],a[i][k-]);
k--;
}
}
}
void left()
{
for(int i=;i<;i++)
for(int j=;j<;j++)
if(a[i][j]==a[i][j+])
{
a[i][j]+=a[i][j+];
a[i][j+]=;
left_swap();
}
}
void right_swap()
{
for(int i=;i<;i++)
for(int j=;j>=;j--)
{
int k=j;
while(k<=&&a[i][k+]==)
{
swap(a[i][k],a[i][k+]);
k++;
}
}
}
void right()
{
for(int i=;i<;i++)
for(int j=;j>=;j--)
if(a[i][j]==a[i][j-])
{
a[i][j]+=a[i][j-];
a[i][j-]=;
right_swap();
}
}
void top_swap()
{
for(int j=;j<;j++)
for(int i=;i<;i++)
{
int k=i;
while(k>=&&a[k-][j]==)
{
swap(a[k][j],a[k-][j]);
k--;
}
}
}
void top()
{
for(int j=;j<;j++)
for(int i=;i<;i++)
if(a[i+][j]==a[i][j])
{
a[i][j]+=a[i+][j];
a[i+][j]=;
top_swap();
}
}
void buttom_swap()
{
for(int j=;j<;j++)
for(int i=;i>=;i--)
{
int k=i;
while(k<=&&a[k+][j]==)
{
swap(a[k][j],a[k+][j]);
k++;
}
}
}
void buttom()
{
for(int j=;j<;j++)
for(int i=;i>=;i--)
if(a[i][j]==a[i-][j])
{
a[i][j]+=a[i-][j];
a[i-][j]=;
buttom_swap();
}
}
int main()
{
int n;
while(cin>>n)
{
memset(a,,sizeof(a));
for(int i=;i<;i++)
for(int j=;j<;j++)
cin>>a[i][j];
if(n==)
{
left_swap();
left();
}
else if(n==)
{
right_swap();
right();
}
else if(n==)
{
top_swap();
top();
}
else if(n==)
{
buttom_swap();
buttom();
}
for(int i=;i<;i++)
{
for(int j=;j<;j++)
if(j==)cout<<a[i][j];
else cout<<" "<<a[i][j];
cout<<endl;
}
}
return ;
}

C.cpp

D.4682

n个部下,每个部下需要Bi分钟交待任务,让后Ji分钟后完成任务。确定一个顺序,使得最早完成任务。

贪心,按照Ji从大到小排序,然后求解。

#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct ydw{
ll b,j;
}qu[];
bool cmp(ydw x,ydw y)
{
if(x.j!=y.j)return x.j>y.j;
return x.b>y.b;
}
int main()
{
ll i,n,k;
int kk=;
while(scanf("%I64d",&n),n!=)
{
for(i=;i<n;i++)
{
cin>>qu[i].b>>qu[i].j;
}
sort(qu,qu+n,cmp);
ll s=;
for(i=;i<n;i++)
{
s+=qu[i].b;
for(k=;k<i;k++)
{
qu[k].j-=qu[i].b;
}
}
ll m=;
for(i=;i<n;i++)m=max(m,qu[i].j);
printf("Case %d: ",kk++);
cout<<s+m<<endl;
}
return ;
}

D.cpp

E.3476

给n个时间,问是否矛盾。

暴力。

#include<stdio.h>
int main(){
int i,j,n,h,m,s,h1,m1,s1;
while(scanf("%d",&n)!=EOF,n){
int f=,a[]={};
for(i=;i<n;i++){
scanf("%d:%d-%d:%d",&h,&m,&h1,&m1);
s=h*+m;s1=h1*+m1;
if(f){
for(j=s;j<s1;j++){
if(a[j]){
f=;break;
}
a[j]=;
}
}
}
if(f)printf("no conflict\n");
else printf("conflict\n");
}
}

E.cpp

F.4499

给一串AB串,操作1选1个位子把A改成B,B改成A,操作2选1个k,改变[1,k]的值。

思维,倒着来看。

如果s[i]='B'那么需要改,如果修改长度>=2那么肯定选操作2,否则选操作1。

#include<cstdio>
int n,g,i,j;
char ch;
bool s[],k;
int main()
{
scanf("%d\n",&n);
while(i<=n)
{
s[++i]=(ch=getchar())=='A'?:;
}
i--;
while(i>=)
{
if(k^s[i])i--;
else
{
j=-;
while(!(k^s[i]))i--,j++;
if(j)k^=;
g++;
}
}
printf("%d",g);
}

F.cpp

G.3587

输出A,B的最大公约数。

欧几里得算法。

#include<stdio.h>
__int64 gcd(__int64 a,__int64 b){
__int64 r=a%b;
while(r){
a=b;b=r;r=a%b;
}
return b;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
__int64 a,b;
scanf("%I64d%I64d",&a,&b);
printf("%I64d\n",gcd(a,b));
}
return ;
}

G.cpp

H.3451

村庄之间已经有一些道路,你的工作就是修建一些道路,使所有村庄都连通起来,所有道路的长度都是最小的。

最小生成树,已经有的路权值为0。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAXN 100+5
#define MAXM 5000+5
int Map[MAXN][MAXN];
int F[MAXN];
int n,m,fx,fy,cnt;
struct edge
{
int u;
int v;
int w;
}edges[MAXM];
bool cmp(edge a,edge b)
{
return a.w<b.w;
}
int Find(int x)
{
return F[x]==-?x:F[x]=Find(F[x]);
}
int Kruskal()
{
sort(edges,edges+m,cmp);
int ans=;
for(int i=;i<m;i++)
{
int u,v,w;
u=edges[i].u;
v=edges[i].v;
w=edges[i].w;
fx=Find(u);
fy=Find(v);
if(fx!=fy)
{
ans+=w;
cnt++;
F[fx]=fy;
}
if(cnt==n-)break;
}
if(cnt<n-)return -;
else return ans;
}
int main()
{
scanf("%d",&n);
m=;
for(int i=;i<=n;i++)
{
for(int j=;j<=n;j++)
{
int w;
scanf("%d",&w);
if(i==j||i>j)continue;//多余的路径
edges[m].u=i;
edges[m].v=j;
edges[m++].w=w;
}
}
memset(F,-,sizeof(F));
int Q,a,b;
scanf("%d",&Q);
for(int i=;i<Q;i++)
{
scanf("%d%d",&a,&b);
fx=Find(a);
fy=Find(b);
if(fx!=fy)
{
F[fx]=fy;
cnt++;
}
}
int ans=Kruskal();
printf("%d\n",ans);
return ;
}

H.cpp

I.3675

给三条边,问是否等边等腰斜角。

直接判一判就行。

#include<bits/stdc++.h>
using namespace std; #define ll __int64
int main()
{
int T,ca=;
cin>>T;
while(T--)
{
ll a[];
cin>>a[]>>a[]>>a[];
sort(a,a+);
cout<<"Case #"<<ca++<<": ";
if(a[]+a[]<=a[])cout<<"invalid!\n";
else if(a[]==a[]&&a[]==a[])cout<<"equilateral\n";
else if(a[]==a[]||a[]==a[])cout<<"isosceles\n";
else cout<<"scalene\n";
}
}

I.cpp

J.2913

[1,M]且可以整除a[i]的个数。

容斥,如果是奇数,那么个数ans+=m/lcm,如果是偶数,那么个数ans-=m/lcm,其中lcm为当前选中数的最小公倍数。

#include<bits/stdc++.h>
using namespace std; int main()
{
int n,m,a[];
while(scanf("%d%d",&n,&m)!=EOF)
{
for(int i=;i<n;i++)scanf("%d",&a[i]);
int ans=;
for(int i=;i<(<<n);i++)
{
int lcm=,cnt=;
for(int j=;j<n;j++)
if(i&(<<j))
{
lcm=a[j]/__gcd(a[j],lcm)*lcm;
cnt++;
}
if(cnt&)ans+=m/lcm;
else ans-=m/lcm;
}
printf("%d\n",ans);
}
return ;
}

J.cpp

集训队日常训练20180525-DIV2的更多相关文章

  1. 集训队日常训练20181117 DIV2

    大佬们一顿操作猛如虎,拼命AC强啊 4262: 区间异或  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal ...

  2. 集训队日常训练20181124 DIV2

    急急忙忙要出去比赛就拉了一场有点sb的题目 5202: 网络寻路  时间限制(普通/Java):1000MS/3000MS     内存限制:65536KByte总提交: 15            ...

  3. 集训队日常训练20181110 DIV2 题解及AC代码

    4375: 孪生素数  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 324       ...

  4. 集训队日常训练20181201 C 1003 : 种类数

    时间限制(普通/Java):2000MS/6000MS     内存限制:65536KByte总提交: 8            测试通过:5 描述 一共有 n个数,第 i 个数是 xi ,其中xi  ...

  5. 集训队日常训练20181201 E 1005 : 小蝌蚪

    时间限制(普通/Java):500MS/1500MS     内存限制:65536KByte总提交: 25            测试通过:5 描述 有 n 个装着小蝌蚪的水缸排成一排,你拥有一个无限 ...

  6. 集训队日常训练20180525-DIV1

    A.2805 N*M的图,每次浇水(X1,Y1)-(X2,Y2)围成的矩形,问最后有多少点被浇水了. 暴力. #include<bits/stdc++.h> using namespace ...

  7. 集训队日常训练20180518-DIV2

    A.3232 n个物品,换取要花积分,问刚好花完积分能换最大多少价值的物品. 多重背包. #include <bits/stdc++.h> using namespace std; ]; ...

  8. 集训队日常训练20180518-DIV1

    A.3583 n根木棍是否能分成相等两堆. 背包dp,首先求和sum,如果为偶数就说明不行,否则考虑做一个sum/2大小的背包. #include<bits/stdc++.h> using ...

  9. 集训队日常训练20180513-DIV1

    A.3132 给一个有向图,问能否从任意点出发都能进入一个环中. 深搜. #include<bits/stdc++.h> using namespace std; ; vector< ...

随机推荐

  1. vagrant网站中box下载方法

    假设需要下载Laravel/homestead这个包. 首先定位到地址:https://app.vagrantup.com/laravel/boxes/homestead/versions/8.0.0 ...

  2. vue + element-ui实现简洁的导入导出功能

    1.安装ElementUI模块 cnpm install element-ui -S 2.在main.js中引入 import ElementUI from 'element-ui' import ' ...

  3. 服务器迁移部署OmsWeb

    绑定 基本设置 高级设置

  4. RvmTranslator7.2

    1. RvmTranslator7.2 增加一个视图方块,方便视图切换; Download: https://github.com/eryar/RvmTranslator/releases/tag/7 ...

  5. 把github上的项目clone到IDEA

    点击clone按钮后,会弹出如下截图弹窗,点击 NO 点击open,找到刚刚从github上clone下来的项目,打开即可

  6. 11-2-break

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. pptp,l2tp获取登录用户信息用pppd参数即可

    这个问题困扰了我很久,终于在pppd的man文档里,发现了踪迹.在man中的SCRIPTS下有一系列的参数,其中PEERNAME就是登陆的用户名,并且在/etc/ppp/ip-up和/etc/ppp/ ...

  8. SyntaxError: Non-ASCII character ‘xe5’ in file 04.py on line 4, but no encoding declared

    出现问题的原因:程序中的编码错误,python默认是acii模式,没有支持utf8,代码中需要输出汉字,所以报错. 解决办法:源代码文件第一行添加:#coding:utf-8 -- coding: U ...

  9. [转]C#委托的异步调用

    本文将主要通过“同步调用”.“异步调用”.“异步回调”三个示例来讲解在用委托执行同一个“加法类”的时候的的区别和利弊. 首先,通过代码定义一个委托和下面三个示例将要调用的方法: ); //模拟该方法运 ...

  10. css3的3D变形

    一.坐标系 1.是我们熟悉的右手坐标系:伸出右手,让拇指和食指成L形,大拇指向为右,食指向上,中指指向前方,这样,拇指.食指.中指的指向分别是X.Y.Z轴的正方向. 2.是我们CSS3中的3D坐标:伸 ...