集训队日常训练20180513-DIV2
A.2176
给一个字符串s,问距离为D的字母对是否存在相同。
模拟。
#include<bits/stdc++.h>
using namespace std; int main()
{
string s,b;
while(cin>>s)
{
if(s[]=='*')break;
int flag=;
map<string,int>ma;
for(int jump=;jump<s.size();jump++)
{
ma.clear();
for(int L=;L+jump<s.size();L++)
{
b.clear();
b+=s[L];
b+=s[L+jump];
if(ma[b]==)ma[b]=;
else
{
flag=;
break;
}
}
if(flag==)break;
}
if(flag)cout<<s<<" is surprising.\n";
else cout<<s<<" is NOT surprising.\n";
}
return ;
}
A.cpp
B.4694
给两堆糖果,每次从多的那堆拿gcd(a,b)个糖果,lemon先拿,问最后俩人糖果数。
模拟。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b;
while(cin>>a>>b,a||b)
{
int le=,yu=,sum=;
while(a||b)
{
if(sum%)le+=__gcd(a,b);
else yu+=__gcd(a,b);
if(a>b)a-=__gcd(a,b);
else b-=__gcd(a,b);
sum++;
if(a==||b==)
{
if(sum%)le+=a+b;
else yu+=a+b;
break;
}
}
cout<<le<<" "<<yu<<endl;
}
return ;
}
B.cpp
C.5259
给若干多项式和一个x,问多项式值最大和按值分组输出相同值最多的个数。
模拟。
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll mul(ll a, ll b,int x)
{
if(b == ) return a; while(b--) a*= x;
return a;
}
int main()
{
int t; cin >> t;
while(t--)
{
map<ll,int> mp;
ll n, x; cin >> n >> x;
int maxx = -;
while(n--)
{
ll k,sum = ; cin >> k;
while(k--)
{
ll a, b; cin >> a >> b;
sum += mul(a,b,x);
}
mp[sum]++;
maxx = max(maxx,mp[sum]);
}
map<ll,int>::reverse_iterator it=mp.rbegin();
cout << it->first << " " << maxx << endl;
}
return ;
}
C.cpp
D.5265
给一个围棋谱,问黑棋还需要下在哪才能全围住白棋。
广搜。
#include<bits/stdc++.h>
using namespace std;
char a[][];
int dtx[]={,,,-};
int dty[]={,-,,};
int check(int i,int j)
{
for(int z=;z<;z++)
{
int I=i+dtx[z],J=j+dty[z];
if(I>=&&I<&&J>=&&J<)
{
if(a[I][J]=='W')
return ;
}
}
return ;
}
int main()
{
while(gets(a[])!=NULL)
{
for(int i=;i<;i++)
gets(a[i]);
int sum=;
for(int i=;i<;i++)
for(int j=;j<;j++)
{
if(a[i][j]=='.')
if(check(i,j))
cout<<i+<<" "<<j+<<endl,sum++;
}
if(sum==)cout<<"YuYu Wins!\n";
}
return ;
}
D.cpp
E.5260
给一个1-n的序列,问全排列连接起来第x个数字是几。
模拟。
#include <bits/stdc++.h>
using namespace std;
int s[];
int main()
{
int n,x,a[],b[],i,z,s1,flag,s2,k;
while(~scanf("%d%d",&n,&x))
{
s1=n;flag=;s2=;k=;
for(i=;i<=n;i++)
{
scanf("%d",&z);
a[i]=b[i]=z;
}
sort(a+,a+n+);
for(i=;i<=n;i++)
s1*=i;
sort(a,a+n);
do
{
for(i=;i<=n;i++)
{
if(a[i]!=b[i]) break;
}
if(i>n) flag=;
if(!flag) s2++;
for(i=;i<=n;i++)
s[k++]=a[i];
}while(next_permutation(a+,a+n+));
x+=s2*n;
x%=s1;
if(x!=) x--;
printf("%d\n",s[x]);
}
return ;
}
E.cpp
F.4702
给币值为1,3,5,7,9,13的硬币的个数和糖果的价格g,问最少需要多少枚硬币组成g。
背包。
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int dp[];
const int LIM=1e9;
int main()
{
int w[]={,,,,,};
int v[];
int t=,g;
while(t!=)
{
int ans=;
t=;
for(int i=;i<;i++)
{
cin>>v[i];
if(v[i]==)t++;
}
cin>>g;
if(g==)
if(t==)
break;
for(int i=;i<=g;i++)
dp[i]=LIM;
for(int i=;i<;i++)
for(int j=;j<=v[i];j++)
for(int k=g;k>=w[i];k--)
dp[k]=min(dp[k-w[i]]+,dp[k]);
if(dp[g]==LIM)cout<<"impossible"<<endl;
else cout<<dp[g]<<endl;
}
return ;
}
F.cpp
G.3331
给一个2n*2n的网格图,以中心为原点画一个直径为2n-1的圆,问圆周线穿过了多少个格子。
思维。
#include<bits/stdc++.h>
using namespace std;
int arr[];
int main()
{
int n;
arr[]=;
for(int i=;i<=;i++){
arr[i]=arr[i-]+;
}
while(cin>>n&&n!=){
cout << arr[n] <<endl;
}
return ;
}
G.cpp
H.4671
给n个数,求前M大并按小到大输出。
只需要记录前M个。
#include<bits/stdc++.h>
using namespace std;
int get() {
int r=;
char c;
while(c=getchar(),!(c>=''&&c<=''));
r = c-'';
while(c=getchar(),c>=''&&c<='')
r = (r*)+c-'';
return r;
}
int main()
{
int n,m,x,b[],len=;
n=get();
m=get();
for(int i=;i<=n;i++)
{
x=get();
if(len<m)b[len++]=x;
else
for(int j=;j<m;j++)
if(b[j]<x)
swap(b[j],x);
}
sort(b,b+m);
for(int i=;i<m;i++)
{
if(i!=)printf(" ");
printf("%d",b[i]);
}
putchar('\n');
return ;
}
H.cpp
I.4959
给n个数,问能否选若干数使和=k。
深搜。
#include<bits/stdc++.h>
using namespace std;
int n,a[],i,k;
bool dfs(int i,int sum)
{
if(i==n)
{
if(sum==k)return ;
return ;
}
if(dfs(i+,sum))return ;
if(dfs(i+,sum+a[i]))return ;
return ;
}
int main()
{
while(cin>>n>>k)
{
for(i=;i<n;i++)cin>>a[i];
if(dfs(,))printf("Yes\n");
else printf("No\n");
}
return ;
}
I.cpp
J.4374
n个特工,密钥总量为k(编号为0到k-1),以及每个特工所带的m个密钥,求是否每3个特工的密钥都可以解密文件。
模拟。
#include<bits/stdc++.h>
using namespace std;
int n,m,k;
int check(int a[])
{ for(int i=;i<m;i++)
if(a[i]==)
return ;
return ;
}
int main()
{
while(cin>>n>>m>>k)
{ vector<int> v[];
for(int i=;i<n;i++)
{ int x;
for(int j=;j<k;j++)
{cin>>x;
v[i].push_back(x);}
}
int flag=;
for(int i=;i<n;i++)
{ for(int j=i+;j<n;j++)
{for(int z=j+;z<n;z++)
{ int a[]={};
for(int t=;t<k;t++)
{ a[v[i][t]]=;
a[v[j][t]]=;
a[v[z][t]]=;
}
if(!check(a))flag=;
}
}
}
if(flag)cout<<"YES\n";
else cout<<"NO\n";
}
}
J.cpp
集训队日常训练20180513-DIV2的更多相关文章
- 集训队日常训练20181117 DIV2
大佬们一顿操作猛如虎,拼命AC强啊 4262: 区间异或 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal ...
- 集训队日常训练20181124 DIV2
急急忙忙要出去比赛就拉了一场有点sb的题目 5202: 网络寻路 时间限制(普通/Java):1000MS/3000MS 内存限制:65536KByte总提交: 15 ...
- 集训队日常训练20181110 DIV2 题解及AC代码
4375: 孪生素数 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: 324 ...
- 集训队日常训练20181201 C 1003 : 种类数
时间限制(普通/Java):2000MS/6000MS 内存限制:65536KByte总提交: 8 测试通过:5 描述 一共有 n个数,第 i 个数是 xi ,其中xi ...
- 集训队日常训练20181201 E 1005 : 小蝌蚪
时间限制(普通/Java):500MS/1500MS 内存限制:65536KByte总提交: 25 测试通过:5 描述 有 n 个装着小蝌蚪的水缸排成一排,你拥有一个无限 ...
- 集训队日常训练20180525-DIV2
A.2295 求有多少素数对和等于n. 暴力. #include <bits/stdc++.h> using namespace std; int ss(int n) { ,a=sqrt( ...
- 集训队日常训练20180525-DIV1
A.2805 N*M的图,每次浇水(X1,Y1)-(X2,Y2)围成的矩形,问最后有多少点被浇水了. 暴力. #include<bits/stdc++.h> using namespace ...
- 集训队日常训练20180518-DIV2
A.3232 n个物品,换取要花积分,问刚好花完积分能换最大多少价值的物品. 多重背包. #include <bits/stdc++.h> using namespace std; ]; ...
- 集训队日常训练20180518-DIV1
A.3583 n根木棍是否能分成相等两堆. 背包dp,首先求和sum,如果为偶数就说明不行,否则考虑做一个sum/2大小的背包. #include<bits/stdc++.h> using ...
- 集训队日常训练20180513-DIV1
A.3132 给一个有向图,问能否从任意点出发都能进入一个环中. 深搜. #include<bits/stdc++.h> using namespace std; ; vector< ...
随机推荐
- SPSS输出结果统计表与统计图的专业性编辑及三线表定制格式
SPSS输出结果统计表与统计图的专业性编辑及三线表定制格式 世界前三统计软件,SPSS最容易学习,但SPSS默认输出的统计表与统计图美观度与专业度不够好,离发表水平尚有距离,本期咱们就谈谈SPSS图表 ...
- python中关于传递参数模块argprase的一些小坑
今天在写代码的时候遇到了一个关于parser的一些小坑,记录在此备用. 我们知道在python中可以用argprase来传递一些参数给代码执行,来看下面的例子,假设现在有一个test文件夹,下面有3个 ...
- Spark运行架构详解
原文引自:http://www.cnblogs.com/shishanyuan/p/4721326.html 1. Spark运行架构 1.1 术语定义 lApplication:Spark Appl ...
- Hbase实验:java创建和删除table
开启zookeeper.hadoop.hbase: 打开eclipse创一个java project,然后导入所需jar包: 写好java代码,运行create,然后去hbase shell里查看: ...
- mac上安装软件后,桌面上软件的图标如何去掉?
桌面上的图标是软件的镜像包,默认安装以镜像形式,你选中它,按command+e 就可以推掉它
- iftop实时监控网络流量
需要安装,linux自身不自带该命令 中间的<= =>这两个左右箭头,表示的是流量的方向. TX:发送流量 RX:接收流量 TOTAL:总流量 Cumm:运行iftop到目前时间的总流量 ...
- leetcode 1078 Occurrences After Bigram
lc1078 Occurrences After Bigram trim().split()将原字符串转换成words数组 依次匹配first和second,若两者都能匹配上,则下一个单词为third ...
- 博客的页面定制CSS
我目前的博客CSS其实也是借用了别家的,来源:https://www.cnblogs.com/Penn000/p/6947472.html 注意使用的模板是:darkgreentrip 复制粘贴使用就 ...
- SQL Server 2008 分区函数和分区表
当我们数据量比较大的时候,我们需要将大型表拆分为多个较小的表,则只访问部门数据的查询就可以更快的运行,基本原理就是,因为要扫描的数据变的更小.维护任务(例如,重新生成索引或备份表)也可以更快的运行 ...
- PAT甲级——A1030 Travel Plan
A traveler's map gives the distances between cities along the highways, together with the cost of ea ...