Time of Update: 2018-12-03
1147. 誰拿了最多獎學金Description某校的慣例是在每學期的期末考試之後發放獎學金。發放的獎學金共有五種,擷取的條件各自不同: 1) 院士獎學金,每人8000元,期末平均成績高於80分(>80),並且在本學期內發表1篇或1篇以上論文的學生均可獲得;2) 五四獎學金,每人4000元,期末平均成績高於85分(>85),並且班級評議成績高於80分(>80)的學生均可獲得;3) 成績優秀獎,每人2000元,期末平均成績高於90分(>90
Time of Update: 2018-12-03
http://soj.me/1156 #include<iostream> //給出一棵二叉樹,輸出前序走訪序列#include<stack>using namespace std;struct node{char c;int l,r;}tree[1010];int vis[1010],rt[1010];//vis[i]決定是否訪問,rt[i]=0說明“上頭有人”void add(int p,char c,int l,int r)
Time of Update: 2018-12-03
有一個4xn的棋盤,無限個1x2的多米諾骨牌。輸入n,求把棋盤完美覆蓋的方法數。方法如下二維數組dp[n][m]表示有n列且該列狀態為m的時候的排列方法數。m用四位二進位表示,第a位表示該列第a行的狀態,1已經覆蓋,0表示沒有被覆蓋。初始狀態為:dp[1][3]=dp[1][6]=dp[1][12]=dp[1][15]=dp[1][0]=1;狀態轉移: dp[t][15]=dp[t-1][15]+dp[t-1][12]+dp[t-1][3]+dp[t-1][6]+dp[t-1][0];
Time of Update: 2018-12-03
1482.
Time of Update: 2018-12-03
#include <cstdio>#include <cstdlib>#include <iostream>#include <string.h>#include <queue>#include <limits.h>#define MAX 250using namespace std;int cap[MAX][MAX];int m;int EKarp(int s,int t){queue<int> Q;int
Time of Update: 2018-12-03
1209. Sequence Sum PossibiDescriptionMost positive integers may be written as a sum of a sequence of at least two consecutive positive integers. For instance,6 = 1 + 2 + 3 9 = 5 + 4 = 2 + 3 + 4but 8 cannot be so written.Write a program which will
Time of Update: 2018-12-03
水,看清楚題目要求就行咯#include <iostream>#include <string>#include <iomanip>#include <algorithm>using namespace std;class R{public:string name;int resis;}arr[10001];bool cmp(R x,R y){return x.resis<y.resis;}int main(){int
Time of Update: 2018-12-03
直接上遞推公式 f[i]=3*f[i-1]+f[i-2]-f[1-3] (i>=3)通項公式為
Time of Update: 2018-12-03
迴圈字串的最小標記法的問題可以這樣描述:對於一個字串S,求S的迴圈的同構字串S’中字典序最小的一個。由於語言能力有限,還是用實際例子來解釋比較容易:設S=bcad,且S’是S的迴圈同構的串。S’可以是bcad或者cadb,adbc,dbca。而且最小表示的S’是adbc。對於字串迴圈同構的最小標記法,其問題實質是求S串的一個位置,從這個位置開始迴圈輸出S,得到的S’字典序最小。一種樸素的方法是設計i,j兩個指標。其中i指向最小表示的位置,j作為比較指標。令i=0,j=1如果S[i] >
Time of Update: 2018-12-03
題意:一個圖,每次刪掉相鄰的兩條邊,問能否把全部的邊刪完。解法:若圖的每個連通分量都有偶數個邊就輸出1,否則輸出0;#include <cstdio>#include <cstring>#include <algorithm>using namespace std;int parent[10000],depth[10000];void Make_Set(int x){ parent[x] = x; depth[x] = 0;}int
Time of Update: 2018-12-03
#include <iostream>using namespace std;int main(){int i, j, h;char n[300];cin>>n;h = strlen(n);j = 0;for (i=0; i<h; i++)j = (j * 10 + (n[i] - '0')) % 3;if (j == 0)cout<<2<<endl;elsecout<<1<<endl<<j<<
Time of Update: 2018-12-03
vi的使用--使用vi尋找和替換vi提供了幾種定位尋找一個指定的字串在檔案中位置的方法。同時還提供一種功能強大的全域替換功能。1. 尋找一個字串 一個字串是一行上的一個或幾個字元。 為尋找一個字串,在vi命令模式下鍵入“/”,後面跟要尋找的字串,再按斷行符號。vi將游標定位在該串下一次出現的地方上。鍵入n跳到該串的下一個出現處,鍵入N跳到該串的上一個出現處。 為了在檔案中回頭尋找,使用?代替/。在此情況下,鍵入n跳到該串的上一個出現處,鍵入N跳到該串的下一個出現處
Time of Update: 2018-12-03
soj.me/1725#include <iostream>#include <cstring>using namespace std;int p[5001],arr[1000001],n;int prime(){memset(arr,0,sizeof(arr));int k=1;for(int i=2;i<1000000;i++){if(arr[i]==0){p[k++]=i;for(int j=2;i*j<1000000;j++)arr[i*j]=1;}}
Time of Update: 2018-12-03
// 題意: 給出一個序列,求一段連續區間內元素的和的最小值,區間的長度範圍[L,U]// 思路: sum[i]記錄原序列從1到i的元素的和, 枚舉下標 i , // 求出以 i 為結尾,區間長度範圍從 L 到 U 的連續和的最小值,// 這可以通過找出sum[i-U]-sum[i-L]中的最大值MAX,則sum[i]-MAX 取得最小值#include <iostream> //線段樹#include<cstdio>using namespace
Time of Update: 2018-12-03
定義:給定一個數的序列H0,H1,…,Hn,…若存在整數n0,使當nn0時,可以用等號(或大於符號、小於符號)將Hn與其前面的某些項Hn(0i<n)聯絡起來,這樣的式子就叫做遞推關係。遞推關係中存在著三大基本問題:如何建立遞推關係,已給的遞推關係有何性質,以及如何求解遞推關係。五種基本的遞推關係:Ⅰ.Fibonacci數列 在所有的遞推關係中,Fibonacci數列應該是最為大家所熟悉的。在最基礎的程式設計語言Logo語言中,就有很多這類的題目。而在較為複雜的Basic、Pascal、C語
Time of Update: 2018-12-03
1232. Electrical OutletsDescriptionRoy has just moved into a new apartment. Well, actually the apartment itself is not very new, even dating back to the days before people had electricity in their houses. Because of this, Roy's apartment has only
Time of Update: 2018-12-03
Description ,有一個群島,共分為若干層,第1層有一個島嶼,第2層有2個島嶼,......,第n層有n個島嶼。每個島上都有一塊寶,其價值是一個正整數(圖中圓圈中的整數)。尋寶者只允許從第一層的島嶼進入,從第n層的島嶼退出,不能後退,他能收集他所經過的所有島嶼上的寶貝。但是,從第i層的島嶼進入第i+1層的島嶼時,有且僅有有2條路徑。你的任務是:對於給定的群島和島上寶貝的價值,計算一個拾寶者行走一趟所能收集寶貝的最大價值。 Input第一行是一個整數n,在[2,20]之間,表示要輸入的案例
Time of Update: 2018-12-03
#include<stdio.h>#include<string.h>#define MAXD 110#define MAXM 10010int N, cnt, e, first[MAXD], next[MAXM], v[MAXM], topo[MAXD], vis[MAXD];void add(int x, int y){ v[e] = y; next[e] = first[x], first[x] = e ++;}void init(){ int
Time of Update: 2018-12-03
描述 n個同學站成一個圓圈,其中的一個同學手裡拿著一個球,吹哨子時開始傳球,每個同學可以把球傳給自己左右的兩個同學中的一個(左右任意),再次吹哨子時,傳球停止,此時,拿著球沒傳出去的那個同學就是敗者,要給大家表演一個節目。問題:有多少種不同的傳球方法可以使得從該同學手裡開始傳的球,傳了m次以後,又回到該同學手裡。兩種傳球的方法被視作不同的方法,若且唯若這兩種方法中,接到球的同學按接球順序組成的序列是不同的。比如有3個同學1號、2號、3號,並假設此同學為1號,球傳了3次回到他手裡的方式有1->
Time of Update: 2018-12-03
你的背包 背到現在還沒爛卻成為我身體另一半千金不換 它已熟悉我的汗它是我肩膀上的指環......剛學的背包入門問題:0-1背包問題:有n種物品,每種只有一個,第i種物品的體積V[i],重量W[i]。選一些物品撞到一個容量為C的背包,使得背包內物體在總體積不超過C的前提下重量盡量大。用s[i][j]表示把前i個物品撞到容量為j的背包中的最大總重量,容易得出狀態轉移方程.1、假如不放入,那麼總價值等於s[i-1][j]; 2、假如放入,那麼容積j可以看成兩部分: 第一部分的容積是j-V[i]