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. C#多线程实现方法——线程池(Thread Pool)

    ThreadPool使用 同步机制   ThreadPool使用 需要定义waitcallback委托形式如 public delegate void WaitCallback(object stat ...

  2. WebLogic使用总结(二)——WebLogic卸载[转]

    一.WebLogic 12c的卸载 WebLogic的卸载是非常容易的,找到WebLogic的卸载程序,如下图所示:

  3. Java笔记 - 异常机制

    JAVA异常机制是Java提供的用于处理程序在运行期可能出现的异常事件(如数组下标越界.文件不存在等)的一种机制,使程序不会因为 异常的发生 而 阻断或产生不可预见的结果 .而且还可以将逻辑代码与错误 ...

  4. iOS绘制线条的使用

    1.相关简介 1.1.iOS之UIBezierPath贝塞尔曲线属性简介 1.2.iOS之CAShapeLayer属性简介 2.绘制曲线 2.1.方法详解 - (void)addQuadCurveTo ...

  5. Android基础控件ProgressBar进度条的使用

    1.简介 ProgressBar继承与View类,直接子类有AbsSeekBar和ContentLoadingProgressBar, 其中AbsSeekBar的子类有SeekBar和RatingBa ...

  6. iOS之CAScrollLayer属性简介和使用

    1.CAScrollLayer的简介 CAScrollLayer用于显示一个滑动图层的一部分,可以确定滑动方向和可视区域面积,限制不滑出区域外!相关属性如下:其中 /* Scroll the cont ...

  7. typedef int (init_fnc_t) (void)和typedef int (*init_fnc_t) (void)

    1.typedef  int (init_fnc_t) (void);表示定义init_fnc_t为函数类型,该函数返回int型,无参数.而“init_fnc_t  *init_sequence[]= ...

  8. day 42 01--CSS的引入方式及CSS选择器

    01--CSS的引入方式及CSS选择器   本节目录 一 CSS介绍 二 行内样式 三 内接样式 四 外接样式 五 CSS的选择器 六 CSS的高级选择器 七 CSS的属性选择器 八 CSS的伪类选择 ...

  9. vue 监听返回

    mounted: function() { //使用keep-alive时可以放在activated内 if (window.history && window.history.pus ...

  10. Vue配置多个跨域目标链接

    参考: https://segmentfault.com/a/1190000016199721 1.通过使用的http-proxy-middleware来实现跨域代理 devServer: { dis ...