大提琴的聲音就像一條河,左岸是我無法忘卻的回憶,右岸是我值得緊握的璀璨年華,中間流淌的,是我年年歲歲淡淡的感傷。
鏈接:https://ac.nowcoder.com/acm/problem/14532
來源:牛客網
題目描述
tabris實在是太菜了,沒打敗惡龍,在綠島也只撿到一塊生鐵回去了,爲了不在繼續拉低acimo星球的平均水平逃離地球,來到了Sabi星球.
在這裏tabris發現了一種神奇的生物,這種生物不需要與外界交流,種羣間不同個體能互相維持生命存在及提供生長所需的能量.
每個種羣有N個不同個體,圍成一個圈,每隔一個單位時間都會生長.
在一個單位時間裏,每個個體會向兩邊輻射能量,輻射範圍與強度均爲K,隨着距離的增加輻射強度會減小,距離每增加1輻射強度減小1 ,在這單位時間通過輻射接受的能量會保留,最開始的能量會消耗掉。
對於兩個個體a、b,其中a對b的輻射會使b增加【輻射強度×a最開始的能量值】.
總體的改變可以表示成
注:[∗] * 爲真時爲1 *爲假時爲0
現在tabris想知道經過M單位時間後,每個個體的能量值是多少.
輸入描述:
輸入一個T,表示測試數據的組數
每個測試數據第一行包含三個正整數N,M,K.
接下來一行包含N個正整數a[i];
T∈[1,200]
N∈[1,200]
K∈[1,⌊n/2⌋]
M∈[1,1018]
a[i]∈[1,106]
輸出描述:
對每組測試樣例輸出經過M單位時候後每個個體的能量,爲了方便起見對1e9+7取模.
示例1
輸入
1
5 1 3
1 1 1 1 1
輸出
6 6 6 6 6
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
const ll mod=1000000007;
int T,n,k,a[210],b[210],c[210];
ll m;
void add(int &x,int y)
{
(x+=y)>=mod&&(x-=mod);
}
void chf(int *f,int *g,int cd)
{
int tmp[210];
for(int i=0; i<cd; i++)
tmp[i]=0;
for(int i=0; i<cd; i++)
for(int j=0; j<cd; j++)
add(tmp[(i+j)%cd],1LL*f[i]*g[j]%mod);
for(int i=0; i<cd; i++)
f[i]=tmp[i];
}
int main()
{
scanf("%d",&T);
while(T--)
{
scanf("%d%lld%d",&n,&m,&k);
for(int i=0; i<n; i++)
scanf("%d",&a[i]);
for(int i=0; i<n; i++)
b[i]=(i==0);
for(int i=0; i<n; i++)
{
int d=min(i,n-i);
c[i]=(d>0&&d<k)*(k-d);
}
while(m)
{
if(m&1)
chf(b,c,n);
chf(c,c,n);
m>>=1;
}
chf(a,b,n);
for(int i=0; i<n; i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}
鏈接:https://ac.nowcoder.com/acm/problem/14558
來源:牛客網
題目描述
輸入某年某月某日,判斷這一天是這一年的第幾天。(閏年:能被4整除且不能被100整除的爲閏年,世紀年能被400整除的是閏年)
輸入描述:
輸入某年某月某日
輸出描述:
輸出這是當前輸入年份的第幾天
示例1
輸入
2017
12
4
輸出
338
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int y,m,d,sum;
int main()
{
cin>>y>>m>>d;
int s[12]= {31,28,31,30,31,30,31,31,30,31,30,31};
if((y/4==0&&y/100!=0)||(y/400==0))
s[1]=29;
sum+=d;
for(int i=0; i<m-1; i++)
sum+=s[i];
cout<<sum<<endl;
return 0;
}
鏈接:https://ac.nowcoder.com/acm/problem/14697
來源:牛客網
題目描述
現在給出一幅有向圖(有重邊,無自環),問你多少組點對滿足他們之間的最短路=d,輸出點對的個數。
輸入描述:
第1行輸入三個整數n,m,d,表示圖的點數,邊數和查詢的值。
第2-m+1行,每行輸入三個整數s,t,v,表示邊的起點,終點和邊權。
數據保證:0<n≤50,0<m≤5000,0<d≤5000,0<s,t≤n,0<v≤100。
輸出描述:
輸出一行,一個整數表示滿足條件的點對個數。
示例1
輸入
2 2 1
1 2 1
2 1 2
輸出
1
說明
只有1到2的最短路是1,所以只有1個。
示例2
輸入
2 2 1
1 2 1
2 1 1
輸出
2
說明
1到2和2到1的最短路都是1,所以有2個。
備註:
(s,t)和(t,s)是兩組不同的點對
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cstdlib>
#include <cmath>
#include <stack>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <ctime>
#include <cctype>
#include <bitset>
#include <utility>
#include <sstream>
#include <complex>
#include <iomanip>
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
int e[100][100],n,m,d,s,t,v,ct;
int main()
{
scanf("%d%d%d",&n,&m,&d);
for(int i=1; i<=m; i++)
{
scanf("%d%d%d",&s,&t,&v);
e[s][t]=v;
}
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
if(e[i][j]>e[i][k]+e[k][j])
e[i][j]=e[i][k]+e[k][j];
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
if(i!=j&&e[i][j]==d)
ct++;
printf("%d\n",ct);
return 0;
}