2017 計算機系暑期夏令營機考(華師)

2021-10-04 07:07:02 字數 4478 閱讀 4338

單點時限: 2.0 sec

記憶體限制: 256 mb

題目

列印 n 個相同的字元,插入或刪除乙個字元花費的時間為 x,複製當前整個文字並且貼上在後面的時間花費為 y,求完成 n 個字元的列印所需的最小花費時間。

輸入格式

三個整數 n,x,y (1≤n≤107,1≤x,y≤109),整數之間用乙個空格分隔。對於不超過 30% 的資料,n≤105。

輸出格式

輸出乙個整數表示答案。

樣例

input

8 1 1
output

4
input

8 1 10
output

8
**

#include

#include

#include

#include

#include

#include

using

namespace std;

const

long

long maxn=

100000010

;long

long dp[maxn]=;

intmain()

cout<;return0;

}

單點時限: 2.0 sec

記憶體限制: 256 mb

題目

給定整數 a 和 b,輸出區間 [a,b] 中對應二進位制表示含 1 的個數最多的整數。如果存在多個解,則輸出符合條件的最小的整數。

輸入格式

第一行乙個整數 t (1≤t≤104),表示問題數。

接下來 t 行,每行兩個整數 a,b (0≤a≤b≤263−1)。資料之間用乙個空格分隔。

共有兩組資料,分別為小資料和大資料,大資料範圍如上。對於小資料:t≤10,a≤b≤5⋅106。

輸出格式

對於每個問題,輸出一行 case x: y,其中 x 是問題編號,從 1 開始,y 是答案。

樣例

input

3

0 14

100 1000

3966869755091699093 4597827455649079876

output

case 1: 7

case 2: 511

case 3: 4035225266123964415

提示

第乙個樣例資料:a=0,b=14,在 [0,14] 之間含 1 最多的整數為 7(0111),11(1011),13(1101),14(1110),輸出最小的整數為 7。

注意,第三組樣例不會出現在小資料中。

**

#include

#include

using

namespace std;

typedef

unsigned

long

long ll;

//事先定義可以加快執行速度,他可以表示10的9次方的數

intmain()

printf

("case %d: %llu\n"

, i, a);}

return0;

}

單點時限: 2.0 sec

記憶體限制: 256 mb

題目

給定 n 個關於整數 x 的不等式,問最多有多少個不等式成立。每個不等式為如下的形式之一:

x < c

x <= c

x = c

x > c

x >= c

輸入格式

第一行乙個整數 n (1≤n≤200),表示不等式個數。接下來 n 行,每行乙個不等式。不等式輸入格式為:x sign c,關係運算子 (sign) 左右各有乙個空格,c 是整數,0≤c≤109。關係運算子為:<, <=, =, >, >=。對於 35% 的資料,關係運算子只會出現 <= 和 >=。對於 85% 的資料,c≤103。

輸出格式

輸出最多可以同時成立的不等式個數。

樣例

input

4

x = 1

x = 2

x = 3

x > 0

output

2
input

10

x >= 10

x <= 90

x = 1

x > 35

x < 90

x <= 1000

x > 0

x = 900

x < 500

x > 300

output

7
**

這題肯定要分區間討論的,如果從最小值+1列舉,就會在18樣例超時,所以縮小區間,就是以輸入的數字作為區間端點來劃分區間,然後對所有斷點測試滿足多少個不等式。其實這樣做是不嚴謹的,但是還是ac了,暫時沒有想到更好的法子。

#include

using

namespace std;

struct dataa[

200]

;int n,rst;

string s;

int b[

200]

;int i;

void

jdg(

int m)

rst=

max(rst,tmp);}

intmain()

sort

(b,b+n)

;jdg

(b[0]-

1),jdg

(b[n-1]

+1);

for(i=

0;i++i)

jdg(b[i]);

cout

}

單點時限: 2.0 sec

記憶體限制: 256 mb

題目

某大學夏令營有乙個神奇的考試叫作「十億分考」,考試總分 q 你是不知道的,你最後得分 p 你也不知道,你只知道你得分的比例(以小數形式),換而言之就是 p÷q。這個大學對待分數非常講究精確,給你的這個比例,不多不少,恰好精確到小數點後第 15 位。現在要讓你猜一猜 p 和 q。

輸入格式

一行乙個小數 a (0≤a≤1),保證精確到小數點後 15 位。換而言之,若把它當作字串的話,長度一定是 17。

輸出格式

一行兩個整數 p (0≤p≤q) 和 q (1≤q≤109),以空格隔開。要滿足 pq 四捨五入精確到小數點後第十五位後,與給出的數字相同。請注意總分是不會超過十億分的(不然怎麼叫十億分考)。萬一你對中文沒概念的話,十億就是 109。

如果有多解,輸出任意一解。

樣例

input

0.333333333333333
output

1 3
**

暴力列舉肯定超時,好吧不會了,後面都不會了。。。

貼一下一位大佬的解法,人家這暴力很有技巧呀!奉上膝蓋

#include

using

namespace std;

typedef

long

long ll;

typedef

long

double ld;

const

int mod=

1e9+1;

const ld eps=

4e-16

;ld val;

ll up,dn,mid;

intmain()

}}return0;

}

後面兩題不想做了,想看自己去eoj瞅瞅~~~

南京大學 計算機系 夏令營

輸入 輸出 輸入 輸出 思路 最長上公升子串行的變種 每遍歷到字串中的字元,若存在比當前字元大的字元,則刪除之 直到刪除的個數已為k 或遍歷到了 最後乙個字元為止 include include include using namespace std intmain int len num.leng...

2017計算機學科夏令營上機考試 A 判決素數個數

總時間限制 1000ms 記憶體限制 65536kb描述 輸入兩個整數x和y,輸出兩者之間的素數個數 包括x和y 輸入兩個整數x和y 1 x,y 10 5 輸出輸出乙個整數,表示x,y之間的素數個數 包括x和y 樣例輸入 1 100 樣例輸出 25 思路分析 方法1 直接用普通素數篩選模板,篩選出 ...

2017計算機學科夏令營上機考試 B編碼字串

總時間限制 1000ms 記憶體限制 65536kb 描述在資料壓縮中,乙個常用的方法是行程長度編碼壓縮。對於乙個待壓縮的字串,我們可以依次記錄每個字元及重複的次數。例如,待壓縮的字串為 aaabbbbcbb 壓縮結果為 a,3 b,4 c,1 b,2 這種壓縮對於相鄰資料重複較多的情況有效,如果重...