爆int

这是记录犯过的蠢系列的第一篇:爆int
例子如下
题目是一道简单的二进制状态压缩DP:CodeForces - 580D
代码如下:

#include
#include
using namespace std;
long long a[300000][20];
long long rule[30][30];
long long w[30];
int main()
{
 long long n,m,ans,l,j,k,i,u,v,t,max;
 cin>>n>>m>>k;
 for (i=1;i<=n;i++)
  cin>>w[i];
 max=(1<>u>>v>>t;
  rule[u][v]=t;
 }
 for (i=1;i<=max;i++)
 for (j=1;j<=n;j++)
  a[i][j]=-1;
 for (j=1;j<=n;j++)
 {
  a[1<<(j-1)][j]=w[j];
 }
 for (k=1;k<=m-1;k++)
 {
  for (i=max;i>=1;i--)
  for (j=1;j<=n;j++)
  {
   if (a[i][j]!=-1)
   {
    for (l=1;l<=n;l++)
    {
     if ((i>>(l-1))%2==0) 
     {
      if (a[i+(1<<(l-1))][l]

以上为AC代码 下方为WA代码

#include
#include
using namespace std;
long long a[300000][20];
int rule[30][30];
int w[30];
int main()
{
 int n,m,ans,l,j,k,i,u,v,t,max;
 cin>>n>>m>>k;
 for (i=1;i<=n;i++)
  cin>>w[i];
 max=(1<>u>>v>>t;
  rule[u][v]=t;
 }
 for (i=1;i<=max;i++)
 for (j=1;j<=n;j++)
  a[i][j]=-1;
 for (j=1;j<=n;j++)
 {
  a[1<<(j-1)][j]=w[j];
 }
 for (k=1;k<=m-1;k++)
 {
  for (i=max;i>=1;i--)
  for (j=1;j<=n;j++)
  {
   if (a[i][j]!=-1)
   {
    for (l=1;l<=n;l++)
    {
     if ((i>>(l-1))%2==0) 
     {
      if (a[i+(1<<(l-1))][l]

虽然注意到了1e9爆int 当时计算过程中出现了int+long long 出错后检查了好久的算法

你可能感兴趣的:(犯过的蠢)