看到這題第一眼感覺這不是直接暴力就可以嗎……
儘管如此,我還是莫名其妙的寫了乙個 \(kmp\) 儘管什麼也沒有用到,然後它跑 \(re\) 了導致 \(60pts\) 溜了。
其實我們只需要迴圈比較,比較長度是較長字串的二倍即可啦!
這題的根號居然是實數意義下的,我以為是整數意義下直接懵逼爆零滾粗 qwq 。
我們化簡 \(\sqrt = k\sqrt b\) , 發現若要等式成立那麼 \(\sqrt x\) 必須是 \(\sqrt b\) 的倍數。
那麼也就是說我們要求出數列 \(a_1 , a_2 , a_3 , \dots , a_ , a_n\) 使得 \(\sum\limits_^n a_i = k\) 即可,數量可用插板法求解。
這道題一眼就發現不可做,然而我卻成功的在樣例特水無大樣例的情況下通過了這道題!!!
我們考慮 \(dp\) ,設狀態 \(dp[i][j][k]\) 為 前 \(i\) 個字母現在匹配到第 \(j\) 個句式的第 \(k\) 個單詞的方案數,然後在單詞結尾處轉移即可,可以使用 ac自動機 處理。
code:
#include #include #include #include #define ll long long
using namespace std;
int read()
while(ch >= '0' && ch <= '9')
return a*x;
}const int n=1007,p=1000000007;
int n,m;
char s[n];
int ch[n][27],vis[n],p[n],len[n],nxt[n],cnt;
bool ins[n][11];
void add(int num)
if(!vis[t]) vis[t] = num;
int tmp = read();
for(int i = 1;i <= tmp;i ++) }}
queueq;
void init()
} // getchar(); }}
int num[12],wo[12][12];
ll dp[n][12][12],f[n];
#define fa nxt
int find(int s,int i)
else (dp[i][j][k] += f[i-len[vis[s]]]) %= p;
} } }
return s;
}#undef fa
int main()
init();
for(int i = 1;i <= m;i ++)
scanf("%s",s+1);int l = strlen(s+1);
f[0] = 1;for(int i = 1,t = 1;i <= l;i ++)
printf("%lld",f[l]);
return 0;
}
20151006模擬賽總結
今天上午去一中,又考了個模擬賽。這次的題有點考思維。我感覺這個第一題難度稍微大了點。一般noip第一題要麼是簡單的模擬,要麼是裸的簡單演算法,這次的第一題要自己構造演算法,並且還是列舉和貪心套在一起。我開始想的是列舉 揹包,複雜度為n 3,但是資料範圍沒給出三次方的分。於是我就覺得不靠譜。然後發現列...
20151031模擬賽總結
今天去一中,考了個模擬賽,真是坑。本來在八中食堂愉快的享受我的早飯 週末早上的番茄雞蛋燙飯 韭菜肉餅簡直爽!然後geng4512就跑過來說要去一中考試,然後兩口喝完燙飯就和他一起狂跑過去了。這次第一題組合數取模,模的不是質數。想了好大半天,沒什麼想法,然後看了下後面的題,又回來做這道題,想起了階乘分...
20160521模擬賽總結
20160521模擬賽是程式設計實習課程安排的第一次模擬賽 比賽鏈結 備註 這個系列模擬賽屬於程式設計實習練習賽,題目有很大一部分事先練習過,做這些題目為了練習碼 熟練度,也為了進行模擬考試練習的機會,所以這個系列模擬賽我每一次都參加,作為練習 題目清單見下 已解決 01 浮點數求高精度冪 已解決 ...