#include
using namespace std;
int main()
{
int n;
cin>>n;
cout<<(1000-n%1000)%1000<<endl;
return 0;
}
#include
#include
#include
#include
using namespace std;
int cnt[4];
int main()
{
int n;
cin>>n;
while(n--)
{
string s;
cin>>s;
if(s=="AC") cnt[0]++;
else if(s=="WA") cnt[1]++;
else if(s=="TLE") cnt[2]++;
else cnt[3]++;
}
printf("AC x %d\n",cnt[0]);
printf("WA x %d\n",cnt[1]);
printf("TLE x %d\n",cnt[2]);
printf("RE x %d\n",cnt[3]);
return 0;
}
一看数据范围非常小,直接暴力,枚举。状态压缩!!!
#include
#include
using namespace std;
const int N = 6;
char g[N][N];
int n,m,k;
int res;
bool calc(int x,int y)
{
int cnt=0;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(x>>i&1&&y>>j&1&&g[i][j]=='#') cnt++;
return cnt==k;
}
int main()
{
cin>>n>>m>>k;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++) cin>>g[i][j];
for(int i=0;i<1<<n;i++)
for(int j=0;j<1<<m;j++)
res+=calc(i,j);
cout<<res<<endl;
return 0;
}
贪心+找规律即可
#include
#include
using namespace std;
typedef long long ll;
const int N=200010;
int a[N],n;
int main()
{
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
sort(a,a+n);
reverse(a,a+n);
ll res=0;
for(int i=1;i<n;i++) res+=a[i/2];
cout<<res<<endl;
return 0;
}
哎,这题摆弄了一下午,是个模拟题分情况太多了,下面代码仍然wa3个点
,先记着吧,回头再改改。不知道能不能改正确-。-
#include
#include
#include
using namespace std;
typedef long long ll;
const int N=200010,mod=1e9+7;
ll a[N],b[N];
int cnt1,cnt2,cnt3;
int n,k;
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++)
{
int x;
cin>>x;
if(x<0) a[cnt1++]=x;
else if(x>0) b[cnt2++]=x;
else cnt3++;
}
bool flag=(cnt2==0&&k&1)||(cnt1/2*2+cnt2<k);
if(cnt3&&((cnt1+cnt2<k)||flag))
{
cout<<0<<endl;
return 0;
}
sort(a,a+cnt1);
sort(b,b+cnt2);
reverse(b,b+cnt2);
if(flag) reverse(a,a+cnt1),reverse(b,b+cnt2);
ll res=1;
int i=0,j=0;
if(!flag)
{
while(k)
{
if(k>=2&&i<cnt1-1&&j<cnt2-1)
{
if(1ll*a[i]*a[i+1]>=1ll*b[j]*b[j+1])
res=a[i]*a[i+1]%mod*res%mod,i+=2;
else
res=res*b[j]%mod*b[j+1]%mod,j+=2;
k-=2;
}
else if(j<cnt2)
res=res*b[j++]%mod,k--;
else res=res*a[i++]%mod,k--;
}
}
else
{
while(k)
{
if(i<cnt1&&j<cnt2)
{
if(abs(a[i])<=b[j]) res=res*a[i++]%mod,k--;
else res=res*b[j++]%mod,k--;
}
else if(i<cnt1) res=res*a[i++]%mod,k--;
else res=res*b[j++]%mod,k--;
}
}
cout<<(res%mod+mod)%mod<<endl;
return 0;
}
最后一题还没有看,被E搞了一下午,回头再弄,加油!