湘潭大學的校賽對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...