Time of Update: 2018-12-03
//11108024c00h00g2253Accepted720K0MSG++1360B2012-12-14 11:50:30//輸出lf會wa//題意:從起點到終點會有很多重路徑,每條路徑上的邊有一個最大值,求這些最大值中的最小值 //演算法過程,每次尋找最小的d值,然後如果d[j]>max(d[v],mat[v][j]),則更新d[j]=max(d[v],mat[v][j])#include<stdio.h>#include<stdlib.h>#include&
Time of Update: 2018-12-03
//當成0-1背包來做的//思路,先轉化成整數,擴大100倍,首先刪除不合格,然後01背包//提交情況:Memory Limit Exceed 1次,一開始擴大了1000倍,不過我感覺還是應該擴大1000倍。//收穫:printf("%0.2lf\n",(double)dp[(int)(all*100)]/100)中如果不強制轉化為double的話,前面的保留兩位小數的格式不起作用//AC Code//60381132012-06-05 16:33:34Accepted1864703MS1226
Time of Update: 2018-12-03
//將scanf改成cin就ac了 //使用的是kruskal+優先隊列 #include<stdio.h>#include<stdlib.h>#include<queue>#include<algorithm>#include<iostream>using namespace std;struct Edge{ int from,to,w; Edge(int x,int y,int z):from(x),to(y),w(z)
Time of Update: 2018-12-03
#include<iostream>using namespace std;int sum[100005];int a[100005];int n;int main(){int n,m;bool flag;while(scanf("%d",&m)&&m){flag=false;sum[0]=0;for(int
Time of Update: 2018-12-03
//考察點:dp,簡單數塔,從下往上不斷dp,最後得到的為最大值//思路,第0秒 5 //第1秒 4 5 6//第2秒 3 4 5 6 7//第3秒 2 3 4 5 6 7 8//第4秒 1 2 3 4 5 6 7 8 9//第5秒 0 1 2 3 4 5 6
Time of Update: 2018-12-03
//考察點:動態規劃,又有說是單調隊列(還不瞭解)//思路:為每一個點記錄可以左最遠延伸到的位置,和向右最遠延伸到的位置//但是不能暴搜,會逾時的。具體見下面的代碼//提交情況:1.TLE 多次,原因:h[0]=h[n+1]設定成了0,會出現問題//提交情況:2.WA 多次,原因:必須要將數組改成__int64類型的才能通過//收穫:使用l[i]=l[l[i]-1]這樣的語句可以使滑動速度加快//AC code#include<stdio.h>int l[100005];int r[
Time of Update: 2018-12-03
//考察點:dp,hdu1506的變形//思路:我們以每一行為底,分別計算高度,掃描每一行,求的面積的最大值//提交情況:WA 2次,第一次,在i迴圈中又用到了i,改成j就行了。第二次,將scanf改成cin就過了,這題的資料比較噁心,會有多餘的空格。//收穫:編程要細心一些//AC code#include<iostream>using namespace std;int k,r,c;char ch;int mat[1005][1005];//用來記錄高度int up[1005][
Time of Update: 2018-12-03
題目描述:給定一個英語字典,找出其中的所有變位詞集合。例如,“pots”、“stop”、“tops”互為變位詞,因為每一個單詞都可以通過改變其他單詞中的字母的順序來得到。程式主要有三部分組成,sign、sort和squash。我們用來說明(假設要處理的單詞有六個pans pots opt snap stop
Time of Update: 2018-12-03
//考察點:貪心演算法,數軸上有n個閉區間[ai; bi]。取盡量少的點,使得每個區間內都至少有一個點(不同區間內含的點可以是同一個)//提交情況:wrong answer 3次,原因:將tmp定義成了int//收穫:關鍵是如何排序,先按右端點從小到大排序,若右端點相等則按左端點從大到小排序.此題只按照右端點排序就能ac。//AC
Time of Update: 2018-12-03
今天重新讀了一遍演算法導論上的kmp演算法,感覺理解比以前更加深刻了,隨手寫了這段代碼。演算法導論中,每次都是拿當前字元的下一個字元去比較,如果不能匹配成功的話,根據之前字串的最長首碼和最長尾碼進行移動字串。注意注釋的那一句,為了找到所有的字串應該這樣移動。#include<stdio.h>#include<stdlib.h>#include<string.h>char w[10005];char t[1000005];int next[100
Time of Update: 2018-12-03
問題描述:一個最多包括n個正整數的檔案,每個數都小於n,其中n=10000000.如果在輸入檔案中有任何整數重複出現的話就是致命錯誤。要求按升序輸出這些數。由於我們只能操縱位元組,但是我們可以使用位元組來操縱位元組中的位,我們使用int(4個位元組),如果我們想要將第k位置為1的話,我們只需要這樣操作:a[k/32]|pow(2,31-k%32),當我們要判斷某位是不是1的時候,使用相似的方法:a[k/32]&pow(2,31-k%32)#include<iostream>#
Time of Update: 2018-12-03
這個程式在vs下沒問題,但在dev下會崩潰,不知什麼問題#include<iostream>#include<vector>#include<assert.h>using namespace std;const int res=16;int sum=0;int cnt=0;vector<int> v;void print(vector<int> v){for(int
Time of Update: 2018-12-03
今天陽光很燦爛,我坐在自己的小天地裡,陽光穿過窗戶透進來,我沐浴在其中。感覺格外舒服。心情很好。msn上學長一直在和我開玩笑。。笑得我肚子疼。。。O(∩_∩)O~ 無意中遇到了csdn學生大本營。感覺這是個很好的東西。我第一次在這裡學到了很多東西。在這之前我一直在自學javaweb方面的知識。看了這裡的一篇日誌後。我受益匪淺。以後我一定輝經常來這裡多學習。。。。
Time of Update: 2018-12-03
問題描述:程式的輸入包含兩個整數m和n,其中m<n。輸出是0~n-1範圍內m個隨機整數的有序列表,不允許重複。從機率的角度說,我們希望得到沒有重複的有序序列,其中每個選擇出現的機率相等。討論這些問題前有兩個假設:1.有一個函數bigrand()能夠返回很大的隨機整數(遠遠大於m和n)。
Time of Update: 2018-12-03
//考察點dp//思路:這裡我使用dp數組,dp[i]表示到i位置之前的最大值(包括i),最後我們只需要重新遍曆一下數組dp獲得最大值,即為所求結果。//提交情況:使用g++提交compiler Error,使用c++提交AC//註:這道題都是正整數的情況,沒有負數情況//AC code#include<iostream>using namespace std;//表示該位置之前(包括該位置)的最大和int dp[1005];int a[1005];int main(){int n;
Time of Update: 2018-12-03
封裝的公用分頁的工具類:package com.sintai.util; import java.util.ArrayList;import java.util.List; public class PageUtil<T> { // 分頁靜態不變屬性 public static final String SIZE = "size"; //每頁顯示的記錄數 public static final String CURPAGE = "curPage";
Time of Update: 2018-12-03
#include<stdio.h>#include<stdlib.h>#include<vector>using namespace std;struct TreeNode{ int data; TreeNode* left; TreeNode* right;};//統計每層節點的個數 int res;void countNumOfLevel(TreeNode* root,int depth){
Time of Update: 2018-12-03
//編程之美上的題目,這個題目有兩個限制條件,被刪除的節點不能是第一個和最後一個//1.不能刪除最後一個節點的原因是,將會導致倒數第二個節點指向一個被刪除的指標//2.為什麼不能刪除第一個節點? //使用了狸貓換太子技術,刪除下一個節點,將下一個節點的資料拷貝到上一個節點 #include<stdio.h>#include<stdlib.h>#include<assert.h>typedef struct Node{ int data; Node*
Time of Update: 2018-12-03
//11148292c00h00g1260Accepted388K0MSG++751B2012-12-30 12:49:31 證明在這裡:http://liangsun.org/posts/poj-1260-pearls-report///仔細體會一下,還是和龜兔賽跑那道題目有些相似//dp[i]表示購買前i種珠寶所需要的最小花費//dp[i]=min(dp[i],dp[j]+(ai[j+1]+ai[j+2]+...+ai[i]+10)*pi[i]); 0<=j<i
Time of Update: 2018-12-03
1.List集合的遍曆:@Testpublic void testList() {List list = new ArrayList();list.add("111");list.add("222");list.add("333");list.add("444");for (Object obj : list) {String str = (String)