常州day6,今天的题有种不一样的感觉,每题都能看懂,但只会暴力
#第一题一道dp题,转移方程简单,但根本想不到dp 骗p[i]=1的数据结果0分
考试代码如下
#include<bits/stdc++.h>
using namespace std;
int a[1000001],p[1000001],n,ans=0,j=1,mod=1710833,l=0;
int main(){
freopen("wormhole.in","r",stdin);
freopen("wormhole.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
cin>>p[i];
l++;
}
if(l==n){
long long h=1,lk[100001];
for(int i=1;i<=n;i++){
h*=2;
lk[i]=h;
h%=mod;
}
h+=(mod*n);
h-=2;
for(int i=1;i<=n-1;i++){
if(a[i]==1){
h-=lk[i];
h+=1;
}
}
cout<<h%mod;
return 0;
}
for(;ans<=1e8-3*n;ans++){
if(j==n){
cout<<ans%mod;
return 0;
}
if(a[j]>0){
a[j]--;
j++;
continue;
}
if(a[j]==0){
a[j]++;
j=p[j];
}
}
cout<<"Poor Li Dog";
return 0;
}//2 6 14 30
// 4 8 16 62
// 1 5
//(2^n-2)-2()
第二题直接深搜得了30分,第四题骗分炸了