UPC2018組隊訓練賽第四場

2022-08-29 07:39:08 字數 1520 閱讀 8014

題目來自naipc2018

d題:missing gnomes

直接模擬

1 #include2

3using

namespace

std;

4 typedef long

long

ll;5

bool check[100050];6

int uncheck[100050];7

int op[100050];8

int ans[100050];9

intmain()

1020

int k=1;21

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

2227

}28 k=1;29

for(int i=1;i<=m;i++)

3038

}39 printf("

%d\n

",op[i]);40}

41for(;k<=n-m;k++)

4245}46

return0;

47 }

view code

h題:recovery

輸入兩個字串s,t分別代表行和列的狀態(規定行或列中 1的個數為奇數 對應的是1,1的個數為偶數 對應的是0),求還原後的方陣。題目給出了兩個條件:1、要求1的數量盡可能多;2、一次把每行接到上一行的後面,在條件1的前提下,使得銜接後的二進位制數值最小(即讓0盡量靠前)

如果行和列中1的個數奇偶性不同,直接輸出-1。對於可以還原的,先把可以需要放0的行和列存下來(記需要放0的行數為rr,列數為cc)。如果rr>=cc,首先在需要放0的行中按從小到大的順序找到( rr-cc )個行把這些行的第乙個變為0;其次對於剩下的行,按列從小到大的順序相應的都變為0,其餘的都為1。如果rr

1 #include2

using

namespace

std;

3int mp[60][60],a[60],b[60],aa[60],bb[60];4

char s[60],t[60];5

intmain()621

else

24 rr+=a[i];25}

26for(int i=0;i)

2731

else

34 cc+=b[i];35}

36if((rr+cc)&1)37

41for(int i=0;i)

42for(int j=0;j)

43 mp[i][j]=1;44

if(cnt1<=cnt2)

4551

else

5258

for(int i=0;i)

5964}65

return0;

66}67

view code

UPC2018組隊訓練賽第十二場

1 include2 using namespace std 3char str 100050 4 typedef long long ll 5 intmain 622 else 2327 28 printf lld n ans 29 30return0 31 view code 訓練賽時想到的思路...

UPC2018組隊訓練賽第十場

直接按照題意寫 1 include 2 3using namespace std 4bool cmp int x,inty 5 8int n,m,a 1005 9 intmain 1025 return0 26 view code 輸入的兩個字串相同輸出 identical 如果只有乙個雙引號裡面的...

NOIP 2018訓練賽第四場

給乙個 n 行 t 列的矩陣,矩陣第 i 行第 j 列的元素是 i j。定義矩陣第 i 行的積為第 i 行所有元素的乘積。現在要你求矩陣所有行的積的和。答案可能很大,所以 mod 1000000007輸出。100 1 t 10000 1 n 1e10,1 t 1000 也就是求 你開啟了某著名 oj...