QAQ,就是用if else if else翻譯一下題目條件QAQ沒有別的難度?。?/p>代碼塊
#includeusing namespace std;
const int maxn = 1000;
char str[maxn];
int main()
{
int n; cin >>n;
for (int i = 0; i< n; i++)cin >>str[i];
for (int i = 0; i< n; i++)
{
if (i == 0)
{
if (str[i] == '.' && str[i + 1] != 'L')
str[i] = 'C';
}
else if (i == n - 1)
{
if (str[i] == '.' && str[i - 1] != 'L')str[i] = 'C';
}
else
{
if (str[i] == '.' && str[i - 1] != 'L' && str[i + 1] != 'L')str[i] = 'C';
}
}
for (int i = 0; i< n; i++)cout<< str[i];
return 0;
}
a*b
題目實(shí)現(xiàn)QAQ,在寫高精度乘法的時(shí)候很認(rèn)真在寫了,所以周賽時(shí)大概沒在高精度乘法上出問(wèn)題(自己記憶了自己的模板),不過(guò)在進(jìn)制轉(zhuǎn)化過(guò)程可能多考慮了幾步,但是無(wú)論如何提交都是段錯(cuò)誤,我并不理解?。∩踔猎诳荚囅滦薷牡臅r(shí)候也依然是錯(cuò)誤的,emm,后來(lái)在DDL查看了一下其他人的題解后發(fā)現(xiàn)主體計(jì)算部分并沒有什么區(qū)別,大同小異,最后被逼無(wú)奈,把char[]轉(zhuǎn)為string 結(jié)果段錯(cuò)誤消失了, 我不是很理解QAQ
代碼實(shí)現(xiàn)#include#includeusing namespace std;
const int maxn = 2005;
int a[maxn], b[maxn];
int pro[maxn];
int main()
{
string A, B;
cin >>A >>B;
//倒置并完成數(shù)組的類型轉(zhuǎn)換
int alen = A.size();
for (int i = 0; i< A.size(); i++)
{
if (A[alen - 1 - i] >= '0' && A[alen - 1 - i]<= '9')
a[i] = A[alen - 1 - i] - 48;
else
{
if (A[alen - 1 - i] >= 'A' && A[alen - 1 - i]<= 'Z')
a[i] = A[alen - 1 - i] - 55;
}
}
int blen = B.size();
for (int i = 0; i< blen; i++)
{
if (B[blen - 1 - i] >= '0' && B[blen - 1 - i]<= '9')
b[i] = B[blen - 1 - i] - 48;
else
{
if (B[blen - 1 - i] >= 'A' && B[blen - 1 - i]<= 'Z')
b[i] = B[blen - 1 - i] - 55;
}
}
//完成乘積的運(yùn)算
for (int i = 0; i< alen; i++)
for (int j = 0; j< blen; j++)
pro[i + j] += a[i] * b[j];
//由于乘完以后我們不知道pro有多長(zhǎng) 所以從最后一個(gè)pro檢索,記錄pro的長(zhǎng)度
int len = alen + blen;
//記錄pro的長(zhǎng)度后開始逐個(gè)逐個(gè)判斷是否有進(jìn)位
for (int i = 0; i< len; i++)
{
pro[i + 1] += pro[i] / 16;
pro[i] %= 16;
}
//重新計(jì)算len
len = alen + blen;
for (; !pro[len];) len--;
for (int i = len; i >= 0; i--)
{
if (pro[i] >= 0 && pro[i]<= 9) cout<< pro[i];
else cout<< char(pro[i] + 55);
}
return 0;
}
山頭狙擊戰(zhàn)
題目實(shí)現(xiàn)周賽過(guò)程中發(fā)現(xiàn)突破不了隨時(shí)間遞增距離遞減的模擬,后放棄了這道題,在閱讀了一些題解以后,發(fā)現(xiàn)并不需要對(duì)全部敵人統(tǒng)一向前,具體的實(shí)現(xiàn)辦法放在代碼塊里寫一下思路awa
代碼塊#include#include
using namespace std;
const int maxn = 1e5 + 5;
int army[maxn];
long long n, m;
bool check(int time)
{
long long timesum = 0;
//如果敵人的距離比射程遠(yuǎn)(注意是第一個(gè)敵人,其他敵人要換彈)
if (army[1] >m)
{
//那么射殺時(shí)間就是敵人的距離減去射程(而且一定是要射殺這個(gè)敵人)
//因?yàn)榕胚^(guò)序啦 按順序出現(xiàn)的敵人就是最近的敵人啦
timesum += army[1] - m;
}
//面對(duì)其他敵人的時(shí)候
for (int i = 2; i<= n; i++)
{
//神槍手換彈!
timesum += time;
if (army[i]< timesum)return false;
else
{
//記錄下一個(gè)敵人的距離是army[i]-timesum
if (army[i]- timesum >m)
{
timesum = army[i] - m;
}
}
}
return true;
}
int main()
{
cin >>n >>m;
for (int i = 1; i<= n; i++)
cin >>army[i];
sort(army + 1, army + n + 1);
int l = 0, r = 1e7;
//簡(jiǎn)單的二分啦
while (l<= r)
{
int mid = (l + r) / 2;
if (check(mid))
{
l = mid + 1;
}
else
{
r = mid - 1;
}
}
printf("%d", l - 1);
return 0;
}
Reversing linked list反轉(zhuǎn)鏈表
題目實(shí)現(xiàn)(題目是讀了翻譯看了題解)
使用數(shù)組去模擬,同時(shí)通過(guò)本節(jié)點(diǎn)的地址溝通了本節(jié)點(diǎn)的key值和下一個(gè)節(jié)點(diǎn)
#includeusing namespace std;
const int maxn = 1e5 + 5;
int key[maxn], nxt[maxn];
int ans[maxn];
int first, n, k;
int main()
{
cin >>first >>n >>k;
for (int i = 0; i< n; i++)
{
int add, keynum, nextp;
cin >>add >>keynum >>nextp;
key[add] = keynum;
nxt[add] = nextp;
}
//利用這種數(shù)組存地址的方式,以這種方式遞推直到找到終點(diǎn)地址-1
//全部壓入一個(gè)ans數(shù)組中,為使用reserve()埋伏筆
int index = 0;
for (int i = first; i != -1; i = nxt[i])
{
ans[index++] = i;
}
//保證在k段倒置,在超出k的段不改變
for (int i = 0; i + k<= index; i+=k)
{
reverse(ans + i, ans + i + k);
}
for (int i = 0; i< index; i++)
{
if (i >= index - 1)printf("%05d %d -1\n", ans[i], key[ans[i]]);
else printf("%05d %d %05d\n", ans[i], key[ans[i]], ans[i + 1]);
}
return 0;
}
一元三次方程
題目由于做過(guò)單峰函數(shù)的零點(diǎn)求解,所以只要設(shè)置一個(gè)合適的eps~用提示里的求根公式算出x1,x2,從p-x1,x1-x2,x2-q三段區(qū)間中各自有一個(gè)零點(diǎn),然后利用零點(diǎn)存在定理巴拉巴拉巴拉巴拉,OK!到此全部思路完全通透!題目!AC!—然并卵,題目不通過(guò),在賽后修改時(shí),得知第二個(gè)測(cè)試點(diǎn)不過(guò),閱讀他人代碼后
OK??!焯,原來(lái)x1和x2的大小并不是能由加減德爾塔決定的嗎!
代碼塊#include#includeusing namespace std;
double a, b, c, d, p, q;
int t; double ans;
double fx(double x)
{
return a * x * x * x + b * x * x + c * x + d;
}
void print(double l, double r)
{
int flag = 1;
while (fabs(l - r) >= 1e-6)
{
double mid = (l + r) / 2;
double fx1 = fx(l);
double fx2 = fx(mid);
if (fx1 * fx2< 0)
{
r = mid;
ans = r;
}
else if (fx1 * fx2 >0)
{
l = mid;
ans = l;
}
else if (fx1 == 0)
{
printf("%lf ", l);
flag = 0;
break;
}
else if (fx2 == 0)
{
printf("%lf ", l);
flag = 0;
break;
}
}
if (flag)printf("%lf ", ans);
}
int main()
{
cin >>t;
while (t--)
{
cin >>a >>b >>c >>d >>p >>q;
double x2 = (sqrt(4 * b * b - 12 * a * c) - 2 * b) / (6 * a);
double x1 = -(sqrt(4 * b * b - 12 * a * c) + 2 * b) / (6 * a);
if (x1 >x2)swap(x1, x2);
print(p,x1);
print(x1,x2 );
print(x2,q);
}
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧