主要是卡了一下 接下來2題還在做 都有思路
考慮全然即可了
#include #include using namespace std;
int main()
if(k <= 1 || m <= v || (m-v)*k == m)
int sum = 0;
while(m < n && m >= 0)
if(m <= 0 && m < n)
sum = -1;
printf("%d\n", sum);
} return 0;
}
這題錯了半天 傷不起 轉成字串搞字典樹就錯 最後直接位運算&建樹就對了
ac**
#include #include typedef __int64 ll;
const int maxn = 100010;
const int maxnode = 60000000;
const int sigma_size = 2;
ll a[maxn];
char s[maxn][70];
int ch[maxnode][sigma_size];
ll val[maxnode];
int sz;
void init()
void insert(ll v)
void insert(char *s, __int64 x)
u = ch[u][c];
}val[u] = x;
}void find(char *s)
else
}printf("%i64d\n", val[u]);
}int main()
insert(s[i], a[i]);
//puts(s[i]);
}printf("case #%d:\n", cas++);
while(m--)
//puts(str);
find(str);
}
}return 0;
}
簡單遞推一下
每個點能夠由它左邊過來然後在從這個點向上向下跟新最大值
#include #include #include using namespace std;
const int maxn = 110;
const int inf = 9999999;
int dp[maxn][maxn];
int a[maxn][maxn];
bool vis[maxn][maxn][3];
int main()
int temp2 = temp;
for(int k = j+1; k <= n; k++)
}} printf("case #%d:\n", cas++);
printf("%d\n", dp[1][m]);
}return 0;
}
2017 百度之星 程式設計大賽 資格賽
度度熊為了拯救可愛的公主,於是與 大魔王戰鬥起來。大魔王的麾下有n個怪獸,每個怪獸有a i 的生命值,以及b i 的防禦力。度度熊一共擁有m種攻擊方式,第i種攻擊方式,需要消耗k i 的晶石,造成p i 點傷害。當然,如果度度熊使用第i個技能打在第j個怪獸上面的話,會使得第j個怪獸的生命值減少p i...
2017 百度之星 程式設計大賽 資格賽
思路 比賽的時候也一直以為是計算幾何問題,所以就沒想,賽後看了看大佬們的部落格發現思路還是挺簡單的,就是對度度熊夥伴進行建圖,有邊的條件是所有所有村莊位於這天邊的一側,然後對這個圖跑乙個最小環 之前一直不理解叉積,做了幾道題之後好多了 include include include include ...
百度之星程式設計大賽題目
輸入格式 輸入的第一行只有乙個整數n,表示購置水果的組數。接下來的n行表示水果的到達時間 取走時間 時間用1200到1900之間的正整數表示,保證取走時間大於到達時間 剩下的字串以空格分割每一種水果。如 1400 1600 雪梨 水蜜桃 表示下午兩點到四點 包含兩點和四點這兩個時間點 雪梨和水蜜桃會...