一直不在狀態……
想著各種事情……
a.正常的方法是預處理k!和inv(k!),然後每次詢問o(1)。
然後某同學的方法是dp,o(n*m)也能過。
f(i,j,0)和f(i,j,1)嗎?i<=n,j<=m,0和1分別代表是否已經選擇f嗎。
b.對於a,是x的倍數,且不是y的倍數(其中p%x==0,y%x==0,p%y==0)
x乘上某個數,這個數除以z(z為不可以使用的約數的乘積,詳見**)為r(計算0~z-1)。
則對於b,是(p/x)的倍數
不好寫。。。
時間複雜度:
預處理:k個質因數(<=6),2^k * 對應的大小(<=p)
約數的個數*(k+k)
還有更快的方法
題解:數論方式分析。
a=px+y
y*b=p的倍數
則b是p/y的倍數。
然後列舉y。
寫得很快。。。
看群裡還有使用mobius的,比賽時想過,但沒想到。
對於數字a,b
gcd(a,p)=d
然後b為p/d的倍數即可。
1 #include 2 #include 3 #include 4 #include 5 #include場上感覺,然後看了題解,以下想法基本是錯的……6 #include 7 #include 8
using
namespace
std;
9#define ll long long
1011
const
double eps=1e-8;12
const ll inf=1e9;
13const ll mod=1e9+7;14
const
int maxn=1e5+10;15
16///
2,3,5,7,11,13
1718
struct
node
19f[maxn];
2425 ll zhi[maxn],zhi_cnt,maxv=1e5;
26 ll x[300],gx[300],y[130
][maxn];
27bool
vis[maxn],use[maxn];
28ll p;
2930
///10^5*64
31void
dfs(ll i,ll j,ll k)
3249 gx[j]=y[j][i];
50return;51
}52 use[k]=0
;53 dfs(i,j*2,k+1
);54 use[k]=1
;55 dfs(i*zhi[f[p].a[k]],j*2+1,k+1
);56}57
58ll work(ll u,ll v)
5975
else
if (f[u].a[i]>f[p].a[j])
76 i++;
77else
7882}83
while (j<=f[p].g)
84 r=r*2+1,j++;
8586
return v/x[r]*gx[r]+y[r][v%x[r]];87}
8889
intmain()
90102
for (j=1;j<=zhi_cnt;j++)
103117
if (i%zhi[j]==0
)118
break
;119
}120
}121
122 scanf("
%lld
",&t);
123while (t--)
124131 dfs(1,0,1
);132
133 sum=0
;134
for (i=1;i<=p;i++)
135if (p%i==0
)136
141 printf("
%lld\n
",sum);
142}
143return0;
144}
145/*
1465
1471000000000 1000000000 1
1481000000000 1000000000 2
1491000000000 1000000000 10
150100000000 100000000 2
15110 20 15
1521000000000 1000000000 30030
153100000000 100000000 30030
154155
1156
9 9 9
1571
1586 6 12
159160
1161
20 20 11
162163
1164
10 10 6
165*/
c.a1,b1,c1
a2,b2,c2
要求a1a2有可能要按照某種方式排序
兩組條件,兩者互相約束。
然後就不會做了……
題解:取反求,變成i能贏j的條件,此時的條件可求。
然後就是偏序的子問題。
不同陣列元素的比較,其實還是比較,二維偏序。
cj改為
c,b;b,a陣列 為 同乙個陣列(表示的符號相同)表示即可。
d.一開始以為是圖,覺得不可做,
後面發現是樹。。。
點分治結合題解想了一想,也許可以???
也許可以分為內部處理的 和 通過子根相連的
處理^k(k<=13)
各種多項式操作。 (題解:二項式定理)
看群裡說對於k較小的情況,有更好的做法,cf的某些題???
題解:樹形dp。
樹本身的結構已經提供了層次感???
lca為當前根。
未證實正確的想法:
e.末尾有0的操作。
只可能為
a->b->c->b->c
b->c->b->c
處理每個區間的最小/最大值
每次a->b時進行修改,
提前記錄,也許要額外建一棵樹,
數目不多。
題解的方法,特別是最後一部分沒看懂。。。
f.跟e一樣,怎麼都是各種修改。
沒想法,估計較難。
銀聯高校極客挑戰賽 複賽(A,B,思維 數學)
a 題目描述 現在已經是暑假了!這週日,碼隊的弟弟所在的班級 上海某中學高二 33 班的同學們準備在碼隊弟弟的帶領下 碼隊的弟弟是這個班的班長 舉辦一場派對。這樣看來,飲料購買的方案實在是太多了!兩位同學突發奇想,想讓你幫忙計算 總共有多少種購買飲料的方案。答案對 10 9 7109 7 取模,同種...
銀聯高校極客挑戰賽 初賽 第二場
題意 求最大的正方形面積 思路 通過左邊 左上方 上方的三個點中的最小值來更新當前點 include include include using namespace std const int maxn 1e5 5,inf 0x3f3f3f3f const int mod 1e9 7 int t,n...
BSG白山極客挑戰賽
b君的圓錐 wwwwodddd 命題人 基準時間限制 1 秒 空間限制 131072 kb 分值 40 b君要用乙個表面積為s的圓錐將白山雲包起來。b君希望包住的白山雲體積盡量大,b君想知道體積最大可以是多少。注意圓錐的表面積包括底面和側面。input 一行乙個整數,表示表面積s。1 s 10 9 ...