最近做題遇到的坑 cf865d,cf838e,cf317d,cf1394b,poj3322,cf223c,hdu2435,cf47d
https://vjudge.net/problem/CodeForces-865D
n < = 3 e 5 n<=3e5 n<=3e5, a [ i ] < = 1 e 6 a[i]<=1e6 a[i]<=1e6,每天可以花 a [ i ] a[i] a[i]買一個單位,或賣一個單位賺 a [ i ] a[i] a[i],最後不留下單位,求最大賺的值
(最後不留下單位 這條件是沒用的)
(每天計為賣了以後還可以買一次,相當於沒有賣)
(不買不賣相當於當天買當天賣)
(可看作每天都買或賣)
(買了還可以賣1次(退回),又一次(賣自己))
所以每個
a
[
i
]
a[i]
a[i]可以用兩次
再貪心每次賣當前最大的
int main() {
priority_queue<int> Q;
long long ans=0;
int n=rd(),x;
while(n--) {
x=rd();
Q.push(-x),Q.push(-x);
ans+=x+Q.top();
Q.pop();
}
cout<<ans;
}
https://vjudge.net/problem/CodeForces-838E
2500個點的凸多邊形,求最多經過每個點一次的不自交的折線 的最長長度
(先想,dp的時候每個狀態表示圍成一個圈的最長長度,然後輸出的時候減掉一條邊) (錯的
(又想,圖形一定是簡單的 折到1 -> 折到n -> 折到 2 -> 折到n-1 ->… 然後打了一下,) (wa on test 3
(面向資料程式設計,發現可以有 k -> n-k+1 -> k+1 -> k+2 -> n-(k+1)+1 …這種情況
打打打~過了test3,wa on test 4
???
賀題,發現不一定要走完n個點
2500個點的凸多邊形,求最多經過每個點一次的不自交的折線 的最長長度
(中間還被環形結構坑過,不管了
int main()
{
n=read();
for(int i=1; i<=n; ++i) x[i]=read(),y[i]=read();
for(int i=1; i<n; ++i)
for(int j=i+1; j<=n; ++j)
dis[j][i]=dis[i][j]=Calc(x[i],x[j],y[i],y[j]);
double ans=0;
for(int len=1; len<n; ++len)
for(int i=1,j; i<=n; ++i)
{
j=Turn(i+len);
f[i][j][0] = std::max(f[Turn(i+1)][j][0]+dis[i][Turn(i+1)], f[Turn(i+1)][j][1]+dis[i][j]);
f[i][j][1] = std::max(f[i][Turn(j-1)][0]+dis[i][j], f[i][Turn(j-1)][1]+dis[j][Turn(j-1)]);
ans=std::max(ans,std::max(f[i][j][0],f[i][j][1]));//不一定走n個點...嗎?
}
printf("%.10lf\n",ans);
return 0;
}
https://vjudge.net/problem/CodeForces-317D
博弈取1~n的數( n < = 1 e 9 n<=1e9 n<=1e9) 每次取一個未取的數 x x x 及所有 x n x^n xn。求贏家
顯然是sg函式, 找規律竟然找了半天
可以分割成若干個獨立的問題,每個是對
{
x
n
∣
n
>
=
1
}
\{x^n|n>=1\}
{xn∣n>=1} (其中
x
x
x不是其他數的整數次冪)博弈
最大的獨立問題是
{
2
n
}
\{2^n\}
{2n},
2
30
>
1
e
9
2^{30}>1e9
230>1e9,所以只有1<<29個狀態,狀壓暴枚打表即可
#include<bits/stdc++.h>
using namespace std;
int mex[]={0,1,2,1,4,3,2,1,5,6,2,1,8,7,5,9,8,7,3,4,7,4,2,1,10,9,3,6,11,12};
set<int> vi;
int main() {
int n,sm=0;
cin>>n;
int lf=n;
for(int i=2;i*i<=n;++i) {
if(vi.find(i)==vi.end()) {
int c=0;
for(long long j=i;j<=n;j*=i) ++c,--lf,vi.insert(j);
sm^=mex[c];
}
}
sm^=(lf&1);
puts(sm?"Vasya":"Petya");
}
https://vjudge.net/problem/CodeForces-1394B
2 e 5 2e5 2e5個點的有向圖,每個點出度不超過K, K ≤ 9 K \le 9 K≤9,邊權不會重複。求K元組 ( c 1 , c 2 , . . . c K ) (c_1,c_2,...c_K) (c1,c2,...cK)的個數,使圖中出度為K的點只保留第 c K c_K cK大的邊,且每個點能走這些邊回到自己
(先寫了個暴力dfs,邊跑邊暴枚K元組,若生成的子圖滿足“回到自己”的性質則++ans 過了前面的水資料,然後被卡死了
(然後嘗試bitset,打不出來,賀
(在每個點出度為1的情況下全部回到自己,即每個點入度也恰好為1)
雜湊即可(即可替換bitset的功能
暴枚
n
+
2
K
n+2^K
n+2K 即可
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> PII;
const int N=2e5+5,SE=48271;
int n,m,K,ans;
vector<PII> e[N];
long long ha[N],ed;
long long w[10][10];
void dfs(int u,long long sm) {
if(u==K+1) {
if(sm==ed) ++ans;// cerr << "++++ans\n" ;
return;
}
//cerr << "dfs " << u << endl;
for(int i=1;i<=u;++i) dfs(u+1,sm+w[u][i]);
//cerr << "end\n" ;
}
int main() {
cin>>n>>m>>K;
ha[0]=1;
for(int i=1;i<=n;++i) ed+=ha[i]=ha[i-1]*SE;
int x,y,z;
while(m--) {
cin>>x>>y>>z;
e[x].push_back((PII){z,y});
}
for(int i=1;i<=n;++i) {
sort(e[i].begin(),e[i].end());
for(int j=0;j<e[i].size();++j) {
w[e[i].size()][j+1]+=ha[e[i][j].second];
//cerr << "::: " << "e[" << e[i].size() << "][" << j+1 << "]+= ha[" << e[i][j].second<< endl;
}
}
// for(int i=1;i<=K;++i, cerr << endl)
// for(int j=1;j<=i;++j) cerr << w[i][j] << ' ';
dfs(1,0);
cout<<ans;
}
https://vjudge.net/problem/POJ-3322
P(wo)O(de)J(li)的(jie)題(li)都比較坑(cai),這題我就沒發現’#'不是不提供支撐而是根本不能放,,
然後就比較水
https://vjudge.net/problem/CodeForces-223C
n ≤ 2000 , K ≤ 1 e 9 n\le 2000, K\le1e9 n≤2000,K≤1e9,序列K次字首和,然後輸出
也是水題,但是我發現我不會求
(
n
−
1
+
k
k
)
\binom{n-1+k}{k}
(kn−1+k)
(階乘有沒有什麼快速求法嗎 好像excrt裡有,不過那裡的模數比較小 模1e9+7有什麼階乘的快速求法嗎(((
賀!(!)
嘗試展開,發現是
(
n
−
1
+
k
)
.
.
(
1
+
k
)
(
n
−
1
)
!
\frac{(n-1+k)..(1+k)}{(n-1)!}
(n−1)!(n−1+k)..(1+k)
是水題。
https://vjudge.net/problem/HDU-2435
題意是求 max{把2~n-1中任意一對點打通之後的最大流}
(最大流?既然最近沒有打過,就賀好了
發現
n
2
n^2
n2暴枚打通的點即可,因為殘量網路上流很少跑的很快
https://vjudge.net/problem/CodeForces-47D
不想寫題意
前兩天做的時候還會的,今天看看竟然不會了
N
≤
35
,
M
≤
10
N\le 35,M\le 10
N≤35,M≤10,裸的雙向dfs,複雜度
O
(
2
N
2
×
M
)
O(2^{\frac N 2}\times M)
O(22N×M)
(網上的題解好像單向dfs也過了?
#include<bits/stdc++.h>
using namespace std;
int n,m,bl,di[11];
long long ans;
char s[11][44];
map<vector<int>,int> mp;
void dfs(int u,int op) {
if(u==(op==-1 ? n : bl)) {
vector<int> v;
for(int i=1;i<=m;++i) v.push_back(di[i]);
op==-1 ? ans+=mp[v] : ++mp[v];
return;
}
for(int p=0;p<=1;++p) {
int fl=1;
for(int i=1;i<=m;++i)
if((di[i]-=op*(p^s[i][u]-'0'))<0) fl=0;
if(fl) dfs(u+1,op);
for(int i=1;i<=m;++i)
di[i]+=op*(p^s[i][u]-'0');
}
}
int main() {
scanf("%d%d",&n,&m); bl=n/2;
for(int i=1;i<=m;++i) scanf("%s%d",s[i],di+i);
dfs(0,1);
for(int i=1;i<=m;++i) di[i]=0;
dfs(bl,-1);
printf("%lld\n",ans);
}
相關文章
- golang最近遇到的一些坑Golang
- 最近做題小結
- 總結一下最近遇到的問題
- 【eclipse遇到的坑】Eclipse
- NSString 遇到的坑
- mpvue遇到的坑Vue
- 最近在看父子元件通訊中遇到的一個問題?元件
- 面試遇到做過的題怎麼辦?面試
- RSA加密遇到的坑加密
- Laravel Excel 遇到的坑LaravelExcel
- 使用dataX遇到的坑
- 小程式 遇到的坑
- Cube-UI 最近做的更新UI
- springboot整合swagger遇到的坑Spring BootSwagger
- webpack 4 配置遇到的坑Web
- libwebsocket demo以及遇到的坑。Web
- springboot引入mybatis遇到的坑Spring BootMyBatis
- 升級Xcode 10遇到的問題做個記錄XCode
- 用 JMeter 做複雜介面測試遇到的問題JMeter
- Vue專案部署遇到的坑(你肯定會遇到!)Vue
- NPM 安裝包遇到的坑!NPM
- 小程式使用Picker遇到的坑
- PHP date() 函式遇到的坑PHP函式
- ffmpeg軟解碼遇到的坑
- 使用constexpr時遇到的小坑
- 使用laravels可能遇到的小小坑Laravel
- 刪除外部表時遇到的坑
- 關於jqGrid+mybatisplus遇到的坑MyBatis
- 遇到 MySQL 8.0.11 的一些坑MySql
- Laravel 使用 swoole 協程遇到的坑Laravel
- Oracle資料庫中遇到的坑Oracle資料庫
- 使用MySQL時遇到的各種坑MySql
- springboot對接dubbo遇到的巨坑Spring Boot
- Python:那些年我們遇到的坑Python
- 小白之 Gin 安裝遇到的坑
- 分享下最近遇到的5種網站變慢的案例網站
- 大佬們,最近測 PC 客戶端遇到一個很奇怪的問題,找不到原因。客戶端
- 最近線上發生的兩個坑爹鍋