NBUT TNT 1 題解報告

2022-04-30 11:54:09 字數 3038 閱讀 7799

第一場tnt比賽,雖然三題都很水,但是只a了一題,太可惜。。賽後全都補上。

a題:問數字a,由連續n個a(1<=a<=9) 組成,乘上數字b(1<=b<=9)所得結果中特定的數字k,有幾個。比如 5 個 3 乘上 3,結果中9的個數為5個。

略水,有坑點,大部分的情況下,分為a * b 大於 10 或者不大於10的情況,但是仍然有特殊的情況,單獨考慮即可。

1

#define rep(x,y,z) for(int x=y;x2

#define drep(x,y,z) for(int x=y;x>=z;x--)

3 #include 4 #include 5 #include 67

intmain()else

22 printf("

%d\n

",ans);

23continue;24

}25if(a * b == 49

)else

35 printf("

%d\n

",ans);

36continue;37

}38if(a * b == 56

)else

47 printf("

%d\n

",ans);

48continue;49

}50if(a * b == 28

)else

60 printf("

%d\n

",ans);

61continue;62

}63if(a * b == 64

)else

73 printf("

%d\n

",ans );

74continue;75

}76if(a * b < 10

)else

88 printf("

%d\n

",ans);89}

9091

9293

94return0;

95 }

b題:問最多長度為n(1<=n<=10^5)的一串數字中,有m(1<=m<=10^5)種不同的數字組成(1 - m) , 去掉其中的k (1<=k<=10^5) 個,使得最長的連續相同的數字的長度最長。

例如 1 2 1 1 2 1 1 2 1 去掉兩個 那麼去掉第5個和第8個最好。連續最長為1的串,長度為5.(當然去掉2,5也一樣)

資料好大啊,好像也沒有什麼想法,只能存下每一種數字出現的位置,然後列舉起點,尺取重點。可以二分也可以直接遍歷找。

1

#define rep(x,y,z) for(int x=y;x2

#define drep(x,y,z) for(int x=y;x>=z;x--)

3#define clr(x,y) memset(x,y,sizeof(x));

4 #include 5 #include 6 #include

7 #include 8 #include

9#define maxn 100010

10using

namespace

std;

11 vectorcur_pos[maxn];

12int

k;13

void init(intin)

17/*

18int div(int aim , int be , int en)else29}

30}31*/

32int div(int aim , int be ,int

en)38

return

re;39}40

int slove(int

pos)

49return

ans;50}

51int

main()

63int ans = 0

;64 rep(i,1,m+1

)67 printf("

%d\n

",ans);68}

69return0;

70 }

c題:有n支隊伍,每一次操作給某只隊伍加上分數或者減去分數,並一次加減操作後問你分數最高的隊伍標號是多少,如果分數一樣,則輸出標號小的。

很裸的線段樹rmq,比賽的時候沒敲出來,賽後1a

1

#define rep(x,y,z) for(int x=(y);x<(z);x++)

2#define drep(x,y,z) for(int x=(y);x>=(z);x--)

3#define clr(x,y) memset(x,y,sizeof(x));

4#define inf 0x3f3f3f3f

5#define linf 0x3f3f3f3f

6 #include 7 #include 8 #include

9 #include

10 #include 11

using

namespace

std;

1213

const

int maxn = 1

<< 17;14

int dat_n , dat[2 * maxn - 1

];15

intval_n , val[maxn];

16void update(int pos , int

v)else31}

32//

show_dat();33}

34void bulid_tree(int

n)43}44

int query(int a , int b , int k , int l , int

r)else57}

58int

main()71}

72return0;

73 }

比賽總結:

資料結構還是學的太差。

20181105題解報告

最後的模擬賽儘管打的很糟糕。某國個人所得稅法規定,普通公民的主要應納稅收入專案及納稅金額如下 工資 薪金所得。按月計算徵稅,以每月收入額減除費用800元後的餘額作為該月應納稅所得額,稅率如下表所示 級數月應納稅所得額 稅率 不超過500元的 超過500元 2000元的部分 超過2000元 5000元...

Cookies 題解報告

題目傳送門 題目大意 把 m 塊餅乾分給 n 個孩子,第i個孩子有乙個貪婪度 g i 如果有 a i 個孩子獲得的餅乾比第i個孩子多,那麼這個孩子就會產生 g i a i 的怨氣值。求一種方案,保證每個孩子至少有一塊餅乾,並且使所有孩子的怨氣值總和最小。思路解析 首先我們把孩子按照怨氣值從大到小排序...

Mobile Service 題解報告

題目傳送門 題目大意 有l個位置 編號為1 l 和n個要求,初始狀態三個服務員分別在1,2,3號位置,每個要求給出乙個位置p i 需要乙個服務員到這個位置去,已知從位置i到位置j的費用為c i j 求最小費用。思路分析 我們用f i x y z 表示完成了前i個要求,三個服務員分別在x,y,z位置的...