這個題有個坑點 就是得到的組合不能重複 注意這個就好了
#include
#include
#include
#include
using
namespace
std;
int main()
}sort(b,b+back);
printf("%d\n",b[k-1]);
}return
0;}
過得比較多 給大家提供另一種容器set 自動實現去重排序
#include
#include
#include
#include
using
namespace
std;
int main()
int c=0;
printf("%d\n",s.size());
for(it=s.begin();it!=s.end();it++)
printf("\n");
}return
0;}
sort的應用
#include
#include
#include
using
namespace
std;
struct cn
;bool cmp1(cn x,cn y)
bool cmp2(cn x,cn y)
bool c***(cn x,cn y)
bool cmp4(cn x,cn y)
bool cmp5(cn x,cn y)
int main()
for(int i=0;iscanf("%d",&b[i]);
c[i]=a[b[i]];
c[i].num=t;
t++;
}sort(c,c+m,cmp1);
for(int i=1;i0].num1=1;
if(c[i].jin!=c[i-1].jin)c[i].num1=i+1;
else c[i].num1=c[i-1].num1;
}sort(c,c+m,cmp2);
for(int i=1;i0].num2=1;
if(c[i].jiang!=c[i-1].jiang)c[i].num2=i+1;
else c[i].num2=c[i-1].num2;
}sort(c,c+m,c***);
for(int i=1;i0].num3=1;
if(c[i].perj!=c[i-1].perj)c[i].num3=i+1;
else c[i].num3=c[i-1].num3;
}sort(c,c+m,cmp4);
for(int i=1;i0].num4=1;
if(c[i].perjiang!=c[i-1].perjiang)c[i].num4=i+1;
else c[i].num4=c[i-1].num4;
}sort(c,c+m,cmp5);
for(int i=0;iint n1,n2;
if(c[i].num1<=c[i].num2)
else
if(n1>c[i].num3)
if(n1>c[i].num4)
printf("%d:%d\n",n1,n2);
}printf("\n");
/* for(int i=0;i}
}
歸併排序求逆序數
#include
#include
#include
using
namespace
std;
int a[100005];
int left[100005], right[100005];
__int64 cnt;
void merge(int* a, int p, int q, int r)
left[n1] = right[n2] = 0x7fffffff;
i = j = 0;
for (k=p; k<=r; k++)
else
}return;
}void mergesort(int* a, int p, int r)
return ;
}int main()
return
0;}
地推、遞迴的乙個思維題當dp[i] 劃分成 2 和 i-2 後,再劃分成 4和i-4時,4的部分,不能再劃分成2 , 2 組合,這樣就會和前面的2 和i-2 重複,同樣,劃分過2 ,i-2 以及 4, i-4 後,再劃分 6, i-6時,也不能劃分成 2,2,2 以及 2, 4或 4, 2,同理,劃分成8, i-8….
把 4, 6, 8…. 看成一整塊,就有下圖兩種情況(正著,倒著)
0;}
題意:給定hanoi塔的初始狀態求將所有的盤子移到b柱子上所要的步數。
idea:
移動第n個盤子到b柱子,(前提是第n個盤子不在b柱子上,否則就處理第n-1個柱子)
1.將前n-1個移動到輔助的柱子上(遞迴/遞推了)
2.將第n個盤子移到b上(+1)
3.將前n-1個移到b上(+2^(n-1)-1)
#include
#include
#include
#include
using
namespace
std;
char s[70];
long
long cal(int n,char goal)
}return0;}
int main()
return
0;}
乙個很不錯的遞迴題,我主要的過程就如一般的表示式求解,遇到左括號進入下層遞迴,否則一直按每個字母前面的數字決定其輸出的次數,括號也是如此,而遞迴結束的標誌
則是遇到 右括號或者到字串的結尾,注意每次遞迴結束需要返回下次遍歷的序號
#include
#include
#include
char s[260];
int dfs(int ith)
else
}if(c==')') return ith;//返回本次讀到結尾的位置
}int main()
return
0;}
地推思想,狀態轉移方程為f[i]=max(f[i-1]+a[i],a[i])。#include
int a[100010];
int main()
else
if(thissum>maxsum)
}printf("case %d:\n%d %d %d\n",k,maxsum,begin+1,end+1);
if(case_number) //測試資料之後有空行,一開始也沒看見,也wr了。
printf("\n");
}return
0;}
10 25 學習記錄
在前面的幾個章節中我們已經學習了 mongodb 中如何為集合新增資料和更新資料。在本章節中我們將繼續學習 mongodb 集合的刪除。mongodb remove 函式是用來移除集合中的資料。mongodb 資料更新可以使用 update 函式。在執行 remove 函式前先執行 find 命令來...
CodeVS1025 選菜 解題報告 揹包型DP
題目描述 description 在小松宿舍樓下的不遠處,有pk大學最不錯的乙個食堂 the farmer s canteen nm食堂 由於該食堂的菜都很不錯,也公道,所以很多人都喜歡來這邊吃飯。the farmer s canteen的點菜方式如同在超市自選商品一樣,人們從乙個指定的路口進去,再...
每日總結10 25
先貼上今日的任務計畫表以及相應的實施完成情況 暫且撇棄仍然未把任務全部完成一說,較之之前,能夠完成的任務有所增長,這是乙個小小的進步!總結反省 1.今天下午和今天晚上還是沒能管理好自己的時間,主要原因是睏意很重,不能很好地集中精神 2.對於自己已經構建好的思維導圖,仍然沒能安排時間進行複習與鞏固 3...