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. Jenkins 简单安装使用

    一.介绍 Jenkins 是一款业界流行的开源持续集成工具,广泛用于项目开发,具有自动化构建.测试和部署等功能.由于 jenkins是基于java环境运行的,所以首先需要安装java环境 二.安装 1 ...

  2. Java-slf4j:sfl4j

    ylbtech-Java-slf4j:sfl4j 1.返回顶部 1. SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种 ...

  3. PAT甲级——A1073 Scientific Notation

    Scientific notation is the way that scientists easily handle very large numbers or very small number ...

  4. Maven实战08_仓库

    何为Maven仓库 在Maven世界中.任何一个依赖.插件或者项目构建的输出,都可以称之为构件.例如依赖log4j-1.2.15.jar是一个构件,差价maven-compile-plugin-2.0 ...

  5. python基础数据类型初始,用户交互

    一.基础数据类型初始 1.数字:int  1,2,3 print(100,type(100)) ',type('100')) 查看数据类型的方法:type()函数 取值范围: int(整型) 在32位 ...

  6. Image 转换成 Icon

    /// <summary> /// Converts an image into an icon. /// </summary> /// <param name=&quo ...

  7. 2019-9-2-C#判断文件属于文本或二进制

    title author date CreateTime categories C#判断文件属于文本或二进制 lindexi 2019-09-02 12:57:37 +0800 2018-2-13 1 ...

  8. Numpy数据的操作 * dot() multiply() 的区别

    使用numpy时,跟matlab不同: 1.* dot() multiply() 对于array来说,* 和 dot()运算不同 *是每个元素对应相乘 dot()是矩阵乘法 对于matrix来说,*  ...

  9. Luogu P1429 平面最近点对(加强版)(分治)

    P1429 平面最近点对(加强版) 题意 题目描述 给定平面上\(n\)个点,找出其中的一对点的距离,使得在这\(n\)个点的所有点对中,该距离为所有点对中最小的. 输入输出格式 输入格式: 第一行: ...

  10. 【核心核心】4.Spring【IOC】注解方式

    1.导入jar包 2.创建对应的类 public interface HelloService { public void sayHello(); } /** * @Component(value=& ...