2023年湘潭大學程式設計競賽 題解

2021-08-19 17:31:07 字數 4191 閱讀 3698

湘潭大學的校賽對acm新手的考察還是很全面很合理的,題目不難,多掌握些知識就可以都做出來。

點這兒。

給你乙個開始時間和結束時間,讓你算一下這中間經過了多少秒。

這題是個簽到題,模擬下減法就行了,注意**的簡潔寫法。

#include 

using namespace std;

int main()

}return

0;}

換個角度看這個題,**量會減少很多。

str中的字元在mp中查詢,然後在對應的行列上++,最後按照按行優先的方式去遍歷行列,輸出就行。

#include 

using namespace std;

const char mp = "0123456789abcdefghijklmnopqrstuvwxyz";

int main()

, c[6] = ;

for (int i = 0; str[i]; ++i)

++r[sum / 6];

++c[sum % 6];

}int max_r = *max_element(r, r + 6);

int max_c = *max_element(c, c + 6);

for (int i = 0; i < 6; i++)

for (int j = 0; j < 6; j++)

if (r[i] == max_r && c[j] == max_c)

putchar(mp[i * 6 + j]);

puts("");

}return

0;}

這題資料方位不大,於是暴力就行,開乙個陣列,對於**區域中的每乙個格仔都++,最後維護乙個最大值就行了,注意題中的不考慮邊界和角落在**中的體現。

這題如果資料範圍大了還要進行離散化然後二維樹狀陣列維護。這裡提一下。

#include 

using namespace std;

#define max_size 105

int main()

; for (int i = 0, x1, y1, x2, y2; i < n; i++)

printf("%d\n", *max_element(mp, mp + max_size * max_size));

}return

0;}

先湊出最大的那個二進位制,然後利用100可以轉化成011把最大的二進位制逐步變成最小的二進位制就行了。

#include 

using

namespace

std;

typedef

long

long ll;

int f[44];

int main()

int t, n;

for (scanf("%d", &t); t--; )

bool f = true;

while (f)

}printf("%lld\n", ans);

}return

0;}

二分找能吃的最後一種食物,然後預處理美味度的最大值。

#include 

using

namespace

std;

int main()

for (; m--; )

}return

0;}

很明顯的廣搜,不過要注意下面兩點:

#include 

using

namespace

std;

const

int inf = 0x3f3f3f3f;

const

int dirx = ;

const

int diry = ;

int main()

multimap

int, int>, pair > traces;

for (int i = 0, x, y, x2, y2; i < q; i++)

for (int i = 0; i < n; i++)

for (int k = 0; k < 4; k++)

auto s2e = traces.equal_range(now.second);

for (auto it = s2e.first; it != s2e.second; ++it)

}cout

<< ans << endl;

goto f;}}

}f:;

}return

0;}

這題在部落格深入淺出矩陣快速冪及其簡單應用中是乙個例題,看看這篇部落格。

#include 

using

namespace

std;

typedef

long

long ll;

#define mod 1000000007ll

#define max_n 6

template

struct matrix

}matrix operator * (const matrix& other) const

matrix operator + (const matrix& other) const

matrix& operator % (const matrix& other)

t data[n][n];

int n;

};template

t mul(t a, ll n, ll mod)

return ret;

}const ll modulu[max_n][max_n] = ,,,

,,

};int main()

matrixa;

memcpy(a.data, modulu, sizeof(modulu));

a = mul(a, n - 1, mod);

cout

<< (a.data[0][0] * 1 + a.data[0][1] * 0 + a.data[0][2] * 8 +

a.data[0][3] * 4 + a.data[0][4] * 2 + a.data[0][5]) % mod << endl;

}return

0;}

線段樹,用二進位制來儲存哪種顏色存在於桶中。

應該算乙個裸的線段樹模板題。

#include 

using

namespace

std;

typedef

long

long ll;

#define max_size (100000 * 4 + 100)

pairnodes[max_size];

pair childs[max_size];

int n, m;

void build(int root, int l, int r)

void passlazy(int root)

void update(int root, int l, int r, int c)

if (nodes[root].first)

passlazy(root);

if (l <= (childs[root].first + childs[root].second) >> 1)

update(root << 1, l, r, c);

if (r > (childs[root].first + childs[root].second) >> 1)

update(root << 1 | 1, l, r, c);

nodes[root].second |= nodes[root << 1].second | nodes[root << 1 | 1].second;

}ll query(int root, int l, int r)

int main()

default:

assert(0);}}

}return

0;}

2023年湘潭大學程式設計競賽

a 時間統計 某個實驗需要統計時間,記錄了實驗開始和結束的時間,計算實驗用了多少秒。第一行輸入乙個整數n,表示樣例個數。接下來每組樣例兩行,表示開始時間和結束時間,格式為xdayhh mm ss,x是乙個整數表示第幾天,0 x 20000,hh表示小時,mm表示分鐘,ss表示秒,保證時間合法,結束時...

2023年湘潭大學程式設計競賽 A題

今晚6點跟隊友去打這個比賽,因為第二天有考試,所以沒有打到結束,打了兩個小時就匆匆回宿舍複習了。題目感覺有難的,有簽到題,直接說題吧 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 某個實驗需要統計時間,記錄了實驗開...

2023年湘潭大學程式設計競賽 C Boom

時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 緊急事件!戰場內被敵軍埋放了n枚炸彈!我軍情報部門通過技術手段,掌握了這些炸彈的資訊。這些炸彈很特殊,每枚炸彈的波及區域是乙個矩形。第i枚炸彈的波及區域是以點 x i1...