A
我们输出想输出\ 或者 " 时前面需要加一个\ 也就是转意字符
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
cout<<"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"<<endl;
cout<<"\\\\ \\\\"<<endl;
cout<<"\\\\ @@ \\\\"<<endl;
cout<<"\\\\ \\\\"<<endl;
cout<<"\\\\ /@@@@@\\ \\@@/@@ @@@@@@@@@ @@@@@@@@ @@@@@@@@ @@ @@@@@\\@@ \\\\"<<endl;
cout<<"\\\\ @@/ \\@@ @@@[ \/@@\" @@/ @@/ @@ @@/ \\@@ \\\\"<<endl;
cout<<"\\\\ @@@ @@@ @@ @@\/ \/@@\" \/@@\" @@ @@@ @@ \\\\"<<endl;
cout<<"\\\\ @@ @@ @@ /@@ @@@ @@@ @@ @@ @@ \\\\"<<endl;
cout<<"\\\\ @@@ @@@ @@ @@@ /@@ /@@ @@ @@@ @@ \\\\"<<endl;
cout<<"\\\\ @@@\\]/@@/ @@ @@@@@@@@@ @@@@@@@@@ @@@@@@@@@ @@ @@@@]@@@@ \\\\"<<endl;;
cout<<"\\\\ @@ @@ \\\\"<<endl;
cout<<"\\\\ @@@ @@ \\\\"<<endl;
cout<<"\\\\ @@@/ @@ \\\\"<<endl;
cout<<"\\\\ \\\\"<<endl;
cout<<"\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"<<endl;
return 0;
}
D
01背包 首先我们找道大于t的最长歌曲时间 然后我们只需求出t-1的最大值即可 嗯..附上自己01背包的总结 传送门
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#define N 0x3f3f3f3f
#define ll long long
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
int n,t;
cin>>n>>t;
int a[50010];
int dp[50010];
int m=0;
int k=0;
memset(dp,0,sizeof(dp));
for(int i=1;i<=n;i++){
cin>>a[i];
if(a[i]>=m)
m=a[i],k=i;
}
for(int i=1;i<=n;i++)
{
if(i==k)
continue;
for(int j=t-1;j>=a[i];j--)
{
dp[j]=max(dp[j],dp[j-a[i]]+a[i]);
}
}
cout<<dp[t-1]+m<<endl;
}
return 0;
}
H
一看到这东西 我竟然想到是网络流。。 还是做的题太少了 其实直接暴力即可 n比较大 需要开long long
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
#define N 0x3f3f3f3f
#define ll long long
using namespace std;
int main()
{
int t;
cin>>t;
while(t--)
{
ll n,k;
cin>>n>>k;
ll minn=N;
for(int i=1;i<=k-1;i++)
{
ll x;
cin>>x;
minn=min(minn,x);
}
ll ans=0;
if((n-minn)%minn)
{
ans++;
}
ans+=(n-minn)/minn;
cout<<ans+k-1<<endl;
}
return 0;
}
J
呜呜呜 卡时间 scanf printf 以及 需要用快点的筛素数的板子
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
int prime[10000020]={0};
void isprime()
{
prime[1]=1,prime[0]=1;
for(int i = 2; i*i < 10000010; i ++){//判断改成i*i<N
if(!prime[i]){
for(int j = i*i; j < 10000010; j += i){//从i*i开始就可以了
prime[j] = true;
}
}
}
}
int main()
{
int t;
cin>>t;
isprime();
while(t--)
{
char s[30],ss[30];
scanf("%s",s);
int len=strlen(s);
for(int i=0;i<len;i++)
{
ss[i]=s[i];
ss[len+i]=s[i];
}
int flag=0;
for(int i=0;i<len;i++)
{
int x=0;
for(int j=i;j<i+len;j++)
x=x*10+(ss[j]-'0');
if(prime[x]){
flag=1;
break;
}
}
if(flag==1) printf("Imperfect.\n");
else printf("Perfect!\n");
}
return 0;
}
N
排序即可
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
struct node{
int id,num;
}a[1010],b[1010];
int cmp(node x,node y)
{
return x.num>y.num;
}
int main()
{
int t;
cin>>t;
while(t--)
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i].num;
a[i].id=i;
}
for(int i=1;i<=n;i++)
{
cin>>b[i].num;
b[i].id=i;
}
sort(a+1,a+n+1,cmp);
sort(b+1,b+n+1,cmp);
for(int i=1;i<=n;i++)
{
cout<<a[i].id<<" "<<b[i].id;
if(i!=n)
cout<<" ";
}
cout<<endl;
}
return 0;
}