- 博客(29)
- 资源 (2)
- 收藏
- 关注
原创 UVa 10667 - Largest Blockg
題目:在一個正方形的場地里擺放了一些矩形,問裡面能取出最大的正方形面積。分析:dp,動態規劃。二維最大矩形,時間複雜度O(N^2)。 一維最大矩形:在一個平面上有很多連續擺放的h*1面積的矩形,從中畫出最大的矩形; 這個問題有O(N^2)的枚舉算法,也有O(N)的線性算法,需要依賴單調隊列; 計算出每個矩形左邊和右邊
2015-10-30 11:12:42 511
原创 UVa 11830 - Contract Revision
題目:有一個打印機,他可以打印數字,現在有一個數字打印不出來,問對應的數字輸出是什麼。分析:簡單題。直接掃描一遍字符串即可,注意不能輸出前導的0。 沒有遇到其他數字數不輸出0,除非輸出是0。說明:╮(╯▽╰)╭。#include #include char buf[101];int main(){ int d; while (~scanf("%
2015-10-30 09:43:47 584
原创 UVa 11831 - Sticker Collector Robot
題目:給你一個地圖,地圖上有柱子和貼片,再給你一串機器人在地圖上行走的指令; 機器人每次可以前進、左轉90度或者右轉90度,柱子和邊界不能走,問他能拾起幾個貼片。分析:模擬。直接模擬出立即可,處理好轉向就沒什麼問題了。說明:轉向可以打表處理。#include #include char maps[101][101];char move[50005];
2015-10-29 16:36:35 1258
原创 UVa 10849 - Move the bishop
題目:給你一個方形的國際象棋棋盤,上面有一個象,給定一個目標格子,問幾步可以走過去。分析:數學題。根據國際象棋可知,黑格線只能在黑格,白格象只能在白格。 如果兩個格子相差的行列相同,則一步可以走到; 如果兩個格子相差的行列奇偶性不同,則走不到; 如果兩個格子相差的行列奇偶性相同,值不同,則兩步走到;
2015-10-28 10:01:56 1023
原创 UVa 11549 - Calculator Conundrum
題目:計算k^2^m中,前n位構成的最大數字。分析:數論,循環。找尋環節不斷的計算k^2^m和k^4^m相等時即為循環節。說明:也可以使用map檢測循環╮(╯▽╰)╭。#include long long first_n_digit(long long a, int n){ long long b = 1LL; for (int i = 0; i < n; ++ i) b
2015-10-27 13:35:06 584
原创 UVa 12527 - Different Digits
題目:統計M到N之間有幾個數字,數位之間是不同的。分析:簡單題。存儲前N個數字中成立數字的個數F(N),結果為F(N)- F(M-1)。說明:╮(╯▽╰)╭。#include int f[5005],digit[10];int notsamedigit(int n){ for (int i = 0; i < 10; ++ i) digit[i] = 0; while
2015-10-26 19:16:15 579
原创 UVa 12342 - Tax Calculator
題目:計算個人所得稅。分析:數學題。按照題意分段計算加和即可。說明:注意精度。#include #include int main(){ int T, M; while (~scanf("%d",&T)) for (int t = 1; t <= T; ++ t) { scanf("%d",&M); double SUM = 0; if (M > 118
2015-10-26 13:48:31 416
原创 UVa 10219 - Find the ways !
題目:計算C(n,k)的位數。分析:數論,斯特林公式。直接利用斯特林公式計算即可。說明:注意輸出精度,取值floor(a)+1。#include #include double digit(int n){ return (0.5*log(2.0*acos(-1.0)*n) + n*log(n+0.0) - n)/log(10.0);}int main(){
2015-10-26 13:22:17 988
原创 UVa 11933 - Splitting Numbers
題目:給你一個數字n,將2進制中的1按出現的第奇偶次分成兩個數字。分析:簡單題,位運算。直接統計偶數的1出現的位置加和生成b,n-b即為a。說明:╮(╯▽╰)╭。#include #include int main(){ int n, b, count; while (~scanf("%d",&n) && n) { b = count = 0; for (int i
2015-10-26 11:11:01 1327
原创 UVa 10198 - Counting
題目:給你一個數字n,求有多少種1,2,3,4構成的串位數之和為n,4按1計算。分析:dp,動態規劃,大整數。找到遞推公式:f(n)= f(n-1)*2 + f(n-2)+ f(n-3)。 首先,設計狀態f(n),為和為n的數字串的種類數; 然後,考慮退化情況,只用1和2組成的數字串,和為n的情況; 這時,我們分兩種
2015-10-26 10:57:28 1393
原创 UVa 11220 - Decoding the message
題目:將兩個人寫的信解密,在一個句子中,取第i個單詞的第i為作為字母,組成一個新的單詞, 如果第i個單詞長度小於i,則忽略這個單詞,下一個長度大於i的單詞作為第i個。分析:簡單題,字符串。直接統計輸出即可。說明:注意輸入輸出格式。#include #include #include char buf[1001];int main(){ int
2015-10-24 09:28:26 1654
原创 UVa 331 - Mapping the Swaps
題目:給你一個序列,用最少的交換相鄰元素次數,把它變成遞增的。分析:搜索,逆序數。因為數據較小,直接利用dfs求解,每次找到逆序數遞減到0的計數即可。說明:注意數據中可能有相同的數字。#include #include int data[10];int inverse_number(int n){ int sum = 0; for (int i = 0; i < n;
2015-10-23 21:24:53 447
原创 UVa 11900 - Boiled Eggs
題目:用微波爐煮雞蛋,給你每個雞蛋的重量,微波爐能放的雞蛋個數和總重有限制, 問最多能煮幾個雞蛋。分析:dp,01背包。赤果果給的01背包。 設計狀態:f(n)為總質量為n時,最大的雞蛋個數; 狀態轉移:f(i)=max(f(i-m[j])+1,f(i-1));說明:╮(╯▽╰)╭。#include #in
2015-10-23 10:47:54 738
原创 UVa 895 - Word Problem
題目:已知一個單詞表,然後給出一些字母構成的序列,問每個序列能構成單詞表中的幾個單詞。分析:簡單題,字符串。記錄每個單詞中個字母出現的個數,統計每個序列中的每個字母個數。 如果序列中各字母個數都不小於對應單詞的字母個數就可以構成,計數輸出即可。說明:使用gets讀數據輕鬆解決╮(╯▽╰)╭。#include #include char c,d,buf[
2015-10-22 09:50:27 477
原创 UVa 325 - Identifying Legal Pascal Real Constants
題目:給你一個串,判斷是否是Pascal語言中的合法浮點數。說明:字符串。按照題目要求處理即可。 1.去掉前綴的空格; 2.e的前面可以有小數點,後面不能有; 3.小數點和e前後必須都有數字; 4.兩端的數字可以有一個符號前綴; 5.小數點和e最多各有,至少有一種;
2015-10-21 18:52:50 2095
原创 UVa 10023 - Square root
題目:求給定數字的平方根。分析:數學,二分。可以利用模擬(手算開方)或者二分求解。說明:需要把數位壓縮,否則會TLE。#include #include char buf[1111];int tag[505], mul[505], tem[1111];int lef[505], rig[505], mid[505];void bs(int L){ for (int
2015-10-19 15:56:13 1330
原创 UVa 11384 - Help is needed for Dexter
题目:给你1~n,n个连续的整数,每次可以从里面取出人一个数字减去一个任意数, 问最少操作多少次可以全变成0。分析:分治,递推。如果从1~n,任意取k个数字减去p,得到的新数字或者是连续的或者不连续。 如果不连续,可以映射到连续的,操作次数不变(减数每次加上间隔的长度即可); 所以都可以看成是连续的处理,而连续的情况
2015-10-19 07:41:03 1069 9
原创 UVa 10908 - Largest Square
題目:給你一個二維的字符矩陣,求出給定中心的最大正方形邊長。分析:簡單題、枚舉。枚舉計算即可,為了提高效率可先用dp存儲每行連續字符數。說明:╮(╯▽╰)╭。#include #include #include char maps[101][101];int sums[101][101];int main(){ int T, N, M, Q, c, r; whil
2015-10-14 08:07:11 3437
原创 UVa 10020 - Minimal coverage
題目:有n條線段,從裡面取出最少的將區間0,M]覆盖上。分析:貪心,會議安排類似物。按左端點排序,每次取能夠覆蓋的右端點最大的值即可。說明:╮(╯▽╰)╭。#include #include #include #include using namespace std;typedef struct _segment{ int l, r, select;}segment
2015-10-13 17:46:42 789
原创 UVa 332 - Rational Numbers from Repeating Fractions
題目:已知一個分數的小數形式和循環節長度,求分數。分析:數論。利用題目給的公式直接求解即可。 處理過程中直接使用整數計算 然後對分子分母計算約分即可。說明:發現並沒有讀過多少書╮(╯▽╰)╭。#include int gcd(int a, int b){ return a%b?gcd(b, a%b):b;}int mai
2015-10-12 09:46:49 1675
原创 UVa 10215 - The Largest/Smallest Box ...
題目:一個L*W的矩形板子,四個角減去四格x*x的正方形,問使得體積最大和最小的x值。分析:幾何,微積分。列出體積公式求導數,確定x即可。 體積V(x)=(L-2x)(W-2x) x; 導數V‘(x)= LW - 4(L+W)x + 12x^2; 最小值為0和min(L,W)/ 2,最大值為導數為0的左面的解。 說明:注意精度控制。...
2015-10-11 14:41:14 2443 2
原创 UVa 10129 - Play on Words
題目:考古學家在迷宮裡發現了一些單詞,把他們首尾相接拼在一起,放到門的機關上, 如果連接的字母相同,們就會打開,現在給你單詞,問門是否能打開。分析:圖論,歐拉路徑,并查集。利用并查集求解歐拉路徑即可。 歐拉路徑存在條件: 1.存在邊的節點聯通; 2.所有節點的入度和出度相同,或者有一個點入度
2015-10-09 23:49:46 506
原创 UVa 10596 - Morning Walk
題目:Kamal早上散步,發現有很多條路,問能否每條路走一次回到原點。分析:圖論,歐拉迴路,并查集。判斷是否存在歐拉迴路。 歐拉迴路存在條件:1.有邊的點度數為偶數,2.右邊的點構成的圖聯通。說明:╮(╯▽╰)╭。#include #include #include #define NODE_SIZE 202#define EDGE_SIZE 100
2015-10-09 20:26:27 591
原创 UVa 1208 - Oreon
題目:給你一些圖,輸出圖的最小生成樹上的邊(包括頂點)。分析:圖論,最小生成樹,并查集。利用kruskal算法求解即可。說明:╮(╯▽╰)╭。#include #include #include #include using namespace std;typedef struct _enode{ int point1; int point2; int weigh
2015-10-09 12:58:10 1156
原创 UVa 10842 - Traffic Flow
題目:求最大生成樹的最小邊。分析:圖論,最小生成樹,并查集。利用kruskal算法求解即可。說明:╮(╯▽╰)╭。#include #include #include #include using namespace std;typedef struct _enode{ int point1; int point2; int weight;}enode;eno
2015-10-09 10:55:46 840
原创 UVa 893 - Y3K Problem
題目:給你當前的日期,問再過k天后的日期。分析:數論,曆法,閏年判斷。四年一閏,百年不閏,四百年閏。 計算當前日期距離0年1月1日有多少天+k天后從新計算日期即可。說明:╮(╯▽╰)╭。#include #include int month[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};int baseda
2015-10-08 21:41:47 678
原创 UVa 10178 - Count the Faces.
題目:給你一個平面圖的點和邊,問一共把平面分成幾部分。分析:拓撲,歐拉公式,并查集。V-E+F=1+H,H為獨立圖形個數。說明:注意輸入格式。#include //union_set_begeinint sets[256];int rank[256];void union_set(int s, int t) { for (int i = s; i <= t; ++ i
2015-10-08 16:52:15 552
原创 UVa 11056 - Formula 1
題目:給你比賽的結果,進行排序,實現相同按名字排序。分析:多級排序。直接利用sort即可。說明:注意名字不區分大小寫。#include #include #include #include #include using namespace std;typedef struct _record{ int min, sec, ms; char name[22];}
2015-10-08 09:46:43 590
原创 UVa 11068 - An Easy Task
題目:已知兩條直線,將一條直線關於另一條對稱,求它和鏡像直線的交點。分析:計算幾何。交點一定為兩直線交點,求解即可。說明:十一結束了╮(╯▽╰)╭。#include #include #include const double esp = 1e-6;double dist(double x1, double y1, double x2, double y2){ retu
2015-10-08 07:26:39 582
SOFA: A Multi-Model Framework for Interactive Physical Simulation
2018-06-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人