提交不行 看了樣例才知道 1

2021-08-22 12:09:54 字數 4343 閱讀 3847

1.

強制型別轉換(i64),int與int相乘有**危險,所以評測炸的值一直顯示乙個非正常數。而且我最後的末尾選擇了在1e5上+4,因為考慮可能取不到自己i=1e5,但是實際上還是可以取到的,改了1e5交了也可以,因為乘到自己了mp[i]*i,忘記了,呵呵。

#include#include#include#include#include#include#include#include#include #include #include const int inf = 0x3f3f3f3f;

using namespace std;

const int n=100000+10;

const int m=30;

const int buf =1024 ;

typedef long long ll;

#define up(i,x,y) for(i=x;i<=y;i++)

#define down(i,x,y) for(i=x;i>=y;i--)

#define mem(a,x) memset(a,x,sizeof(a))

#define w(a) while(a)

typedef __int64 i64;

//2018_summer1_0018

//bkxejhhw

int mp[n];i64 dp[n];

void init()

void f()

int main()

dp[1]=mp[1];

int i;

up(i,2,n-6)

printf("%i64d\n",dp[n-10]);

} return 0;

}

2.

我是在紙上寫數字來看的,知道題解是當前和i,下乙個和j,但我要知道列舉方向以及答案輸出,那麼就得自己手算,看下可能,果然是類似揹包,不能多次重複,採用從後向前,兩層都是這樣。沒有bug。提交需要看清楚包含的數字cnt,第一次沒有算就wa tes1,看了測例才知道問題

#include#include#include#include#include#include#include#include#include #include #include const int inf = 0x3f3f3f3f;

using namespace std;

const int n=500+10;

const int m=500+10;

const int buf =1024 ;

typedef long long ll;

#define up(i,x,y) for(i=x;i<=y;i++)

#define down(i,x,y) for(i=x;i>=y;i--)

#define mem(a,x) memset(a,x,sizeof(a))

#define w(a) while(a)

typedef __int64 i64;

int c[m],a[m];bool dp[n][n];

//2018_summer1_0018

//bkxejhhw

void init()

void f()

int main()

dp[0][0]=1;

int cnt=1;

up(i,1,n)

// if(i==n) if(dp[j][k]) cnt++;

}} up(i,0,k-1)

printf("%d\n",cnt);

up(i,0,k-1)printf("%d\n",k);

} return 0;

}

3.演算法條件複雜,if判讀應該是有數值停下,但是沒有那麼做,就炸了。陣列越界,取到的數有問題。沒有控制邊界while

wa:#include#include#include#include#include#include#include#include#include #include #include const int inf = 0x3f3f3f3f;

using namespace std;

const int n=1000+10;

const int m=30;

const int buf =1024 ;

typedef long long ll;

typedef __int64 i64;

//2018_summer1_0018

//bkxejhhw

int mp[m];char s[n];

bool vis[m];

void init()

void f()

int main()

i64 ans=0;

memset(vis,0,sizeof(vis));

for(int i=0;i<26;)

if(!flag)

int cnt=0;

while(cnt4.非常難以理解的邊界控制,條件太多,就是為了快,但是沒有效果了

並查集發現不能合理合併,printf發現,見鬼!!

看了別人**,發現只要再find路徑壓縮才可行

ac:wa:

#include#include#include#include#include#include#include#include#include #include #include const int inf = 0x3f3f3f3f;

using namespace std;

const int n=200000+10;

vectorv[n];

const int m=30;

const int buf =1024 ;

typedef long long ll;

typedef __int64 i64;

int c[n],pre[n],pos[n],b[n];

bool vis[n];

int find(int u) else return pre[u] = find(pre[u]);

}//int find(int x)

// int i=x,tmp;

// while(i!=r)

// return r;

//}void join(int u,int v)

}//bkxejhhw

void init()

void f()

int main()

// memset(vis,0,sizeof(vis));

for(int i=1;i<=m;i++)

// printf("2\n") ;

int cnt=1;

for(int i=1;i<=n;i++)

// printf("pre %d\n",pre[i]);

}// printf("%d cnt",cnt);

for(int i=1;i<=n;i++)

// printf("1\n");

i64 ans=0;

for(int i=1;imp;

for(int j=0;j#include#include#include#include#include#include#include#include #include #include const int inf = 0x3f3f3f3f;

using namespace std;

const int n=100000+10;

const int m=30;

const int buf =1024 ;

typedef long long ll;

typedef __int64 i64;

//2018_summer1_0018

//bkxejhhw

int c[n];

vectorv[n];

int b[n],pre[n];

int find(int x)

int i=x,tmp;

while(i!=r)

return r;

}void join(int u,int v)

void init()

void f()

int main()

for(int i=1;i<=m;i++)

int cnt=1;

for(int i=1;i<=n;i++)

if(pre[i]==i)

b[cnt++]=i;

for(int i=1;i<=n;i++)

i64 ans=0;

for(int i=1;imp;

for(int j=0;j5.

wa 42 早就忘記當時怎麼炸的了

ac: 

在jsp裡面怎麼樣獲得提交請求頁面地URL

在編寫jsp servlet應用時常常需要從傳入的鏈結中提取一些資訊。httpservletrequest提供了多個方法,這些方法之間容易混淆。總結並舉例如下,希望能對大家有所幫助。舉例 request.getpathinfo 返回 somepath test request.getrequestu...