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. ip地址分类和子网掩码学习笔记

    关于ip的一些学习心得 ip的概念其实很好理解,也很形象,就像一个门牌号一样,让人困惑的其实不是ip的概念本身,而是在日常计算机网络使用中,碰到很多有特殊意义的ip地址,例如,127.0.0.1,19 ...

  2. Git婴幼儿使用手册【十分钟让你帅气的使用命令行和团队工作】

    Git由来:...... Git使用的好处:...... 如何使用Git:(以上会显得我们以下的是很纯纯的干货) 代码库有两个部分: 本地代码库:远程代码库: 本地代码库使用方法: 一.先创建一个文件 ...

  3. CPU中的主要的寄存器

    寄存器 名为寄存器的存储电路. 8种16位寄存器 AX accumulator 累加寄存器 CX counter 计数寄存器 DX data 数据寄存器 BX base 基址寄存器 SP stack ...

  4. 对XP上的KiFastSystemCall进行浅析

    Windows API的系统调用过程通过KiFastSystemCall或int 2e进入内核,本文仅对XP上的KiFastSystemCall进行浅析. 以ntdll!ZwCreateProcess ...

  5. Excel 2016在大数据分析领域有了很多的改善

    Excel 2016在大数据分析领域有了很多的改善 通常,我们会把大数据分析的整个过程分为五个阶段: 获取获取,数据分析,可视化,发布报告,应用报告. 在获取数据方面,Excel 2016相对Exce ...

  6. spring boot 监听容器启动

    /** * 在容器启动的时候 加载没问完成的消息重发 * @author zhangyukun * */ @Component @Slf4j public class LoadMessageListe ...

  7. PAT甲级——A1098 Insertion or Heap Sort

    According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...

  8. PAT甲级——A1088 Rational Arithmetic

    For two rational numbers, your task is to implement the basic arithmetics, that is, to calculate the ...

  9. Maven入门指南

    Maven入门指南 本指南旨在第一次为使用Maven的人员提供参考,但也打算作为一本包含公共用例的独立参考和解决方案的工具书.对于新用户,建议您按顺序浏览该材料.对于更熟悉Maven的用户,本指南致力 ...

  10. 第一周课堂笔记4th

    1.    if 对应着程序设计中的三种程序执行流程: 顺序结构,一条一条的按顺序执行,自上而下 选择结构,if  else 单分支,双分支,多分支 循环结构 while for (后面学) 流程控制 ...