
Sicily
文章平均质量分 68
Ares_晓越
这个作者很懒,什么都没留下…
展开
-
Sicily 1754 逃离洞穴
比较有技巧性的广搜,一开始在毒气的扩散那里理解错了,死活WA。不过毒气扩散的部分也是这道题区别于一般广搜的地方。#include using namespace std;#include #include #include #include char map[1010][1010];int row,col;bool visited[1010][1010];int second原创 2012-01-27 22:29:38 · 626 阅读 · 0 评论 -
Sicily 1825 Nickname
巧妙利用STL就可以了#include #include #include #include using namespace std;struct node{ string name; int times; void add() { times++; } node(string n) { nam原创 2012-01-27 22:57:01 · 695 阅读 · 0 评论 -
Sicily 1342 开心的金明
两种做法,DFS和dp背包。DFS代码#include using namespace std;#include struct object { int price; int id; bool flag;};int n,m;struct object ob[ 25 ];struct object sel[ 25 ];int ctr = 0; int m原创 2012-01-27 13:30:13 · 3658 阅读 · 0 评论 -
Sicily 1211 商人的宣传
Floyd算法#include #include #include int road[120][120];long long result[120][120];int main() { int n,m,l; int x,y,q; int i,j,k; while (scanf("%d",&n)!=EOF) { scanf("%d%d",原创 2013-11-22 12:52:35 · 1572 阅读 · 0 评论 -
Sicily 1077 Cash Machine
多重背包问题#include #include #include using namespace std;int dp[100010];vector items;int get_max(int a, int b) { if (a>b) return a; else return b;}int main() { int to原创 2013-11-22 12:38:10 · 812 阅读 · 0 评论 -
Sicily 1426 Phone List
给出n个字符串,判断是否存在一个字符串是另一个字符串的前缀,典型的字典树的应用。#include using namespace std;#include #define MAX 10 typedef struct TrieNode { int endFlag; struct TrieNode *next[MAX];}TrieNode;TrieNode Memo原创 2012-01-27 21:51:19 · 1051 阅读 · 0 评论 -
Sicily 1486 统计数字
题目所给的数据量比较大,尝试过快排加二分,结果当然是TLE。后来想到用哈希,懒得自己写哈希函数,直接用了STL中的map了,另外就是每个test后记得要将map清空,否则会WA或者TLE。#include #include using namespace std;struct node{ int num; int times; void add() {原创 2012-01-27 22:01:25 · 1614 阅读 · 0 评论 -
Sicily 1512 Encoding
螺旋矩阵,直接模拟就可以了。#include #include int row,col;char data[25][25];char str[500];char text[500];int main(){ int t,i,j,k,l,smallnum,ctr; char c; int temprow,tempcol; int test=1;原创 2012-01-27 22:12:51 · 505 阅读 · 0 评论 -
Sicily 1782 Knapsack
简单背包#include int arr[10100];int tab[10100];int solve_dp( int n, int m ) { int i,j; for ( i=0;i<n;i++ ) { for ( j=m;j>=arr[i];j-- ) { if ( arr[i]+tab[j-arr[i]]>tab[j] )原创 2012-01-27 22:55:13 · 632 阅读 · 0 评论 -
Sicily 1140 国王的遗产
贪心,主要卡在划分树的子树上。#include using namespace std;#include #include #include #include #include vector tree[30002];int node_ctr[30002];int n,k;vector result;int set_node_ctr(int root) { if (n原创 2013-11-22 11:32:00 · 1636 阅读 · 0 评论 -
Sicily 1006 Team Rankings
题意记不大清楚了,很久之前做的。只大概记得是用全排列搜索将所有的排列组合打表写在一个二维数组里,然后再根据题目要求找出最佳的一种组合。#include #include char per[130][8];int n=0;const int size = 5;// 全排列函数,可以直接使用STL中的next_permutation代替,所有组合情况写在数组per中void per原创 2012-01-22 19:21:02 · 938 阅读 · 0 评论 -
Sicily 1513 Decoding
和1512一样都是螺旋矩阵。#include #include int row,col;char data[25][25];char str[500];char text[500];int main(){ int t,i,j,k,l,smallnum,ctr; char c; int temprow,tempcol; int test=1;原创 2012-01-27 22:14:22 · 449 阅读 · 0 评论 -
Sicily 1444 Prime Path
广度优先搜索。#include #include #include #include using namespace std;int pr[10000];int flag[10000];void prime() { int i,j,k; for ( i=1001;i<=9997;i++ ) { k=0; for ( j=2;j<=s原创 2012-01-27 21:55:02 · 1308 阅读 · 0 评论 -
Sicily 1685 Missile
DP,最长单调子序列的变形。#include int dp[1010][2];int nums[1010];int get_max(int a, int b) { if (a>b) return a; else return b;}int main() { int i,j,n; int ans; scanf("%d",&n); while (n!=0) { f原创 2013-11-22 11:14:10 · 828 阅读 · 0 评论 -
Sicily 1779 Fibonacci Sequence Multiplication
高精度乘法#include #include void mul( char *a, char *b, char *sum ) { int temp[2500]; int i,j,la,lb,l; la=strlen(a); lb=strlen(b); for ( i=0;i<la+lb;i++ ) temp[i]=0; fo原创 2012-01-27 22:37:06 · 662 阅读 · 0 评论 -
Sicily 2015 A New Year Gift
#include using namespace std;#include #include #include const int maxn=20005;int a[maxn];int n,m;int Binary_search( int st, int ed ) { if ( st>ed ) return -1; int mid=(st+ed)/2原创 2012-01-27 22:59:12 · 993 阅读 · 0 评论 -
Sicily 1034 Forest
广搜找森林的深度和宽度#include #include #include #include using namespace std;int is_visited[110];int forest[110][110];int all_level_width[110];int flag;int n;int depth, width;vector roots;void add原创 2013-11-22 12:51:10 · 1814 阅读 · 0 评论 -
Sicily 1158 Pick numbers
广搜找权值最小的路径#include #include #include using namespace std;int matrix[12][12];int n,m;struct Node { int row, col; int num;};int BFS() { deque q; Node tmp; Node next; tm原创 2013-11-22 12:47:28 · 825 阅读 · 0 评论 -
Sicily 1346 金明的预算方案
依赖背包,转为01背包+分组背包#include #include #include using namespace std;int dp[3220];struct Item { int id; int v,p;};int n,m;Item items[70];vector add_items[70];int add_items_dp[70][3220];原创 2013-11-22 12:43:53 · 1677 阅读 · 0 评论 -
Sicily 1750 运动会
分组背包问题#include #include using namespace std;#include #include int p,n;int dp[120][1200];struct Item { int energy; int award;};int get_max(int a, int b) { if (a>b) return原创 2013-11-22 12:39:31 · 1186 阅读 · 0 评论 -
Sicily 1099 Packing Passengers
欧几里得解线性方程#include #include long long Extended_Euclid(long long a,long long b,long long& x,long long& y) { if(b==0){ x=1; y=0; return a; } long long d=Extended_E原创 2013-11-22 11:34:00 · 874 阅读 · 0 评论 -
Sicily 1048 Inverso
按照题意广搜,注意输入"wwwwwwwww"时输出11就可以了。#include using namespace std;#include #include #include #include deque q;int parent[512];int parent_step[512];int flip1(bitset b) { b.flip(9-1); b.fl原创 2013-11-22 11:30:09 · 1020 阅读 · 0 评论 -
Sicily 1135 飞越原野
广度优先搜索,三维数组判重#include #include #include using namespace std;struct Node { int x,y,p;};char matrix[120][120];//at (x,y) with z powerint visited[120][120][120];int n,m,d;int dir[4][2]={{原创 2013-11-22 11:19:36 · 1736 阅读 · 0 评论 -
Sicily 2014 Dairy Queen
完全背包#include #include int dp[320];int n,c;int coins[10];int main() { int i,j; while (scanf("%d",&n)!=EOF) { scanf("%d",&c); for (i=0;i<c;i++) scanf("%d"原创 2013-11-22 11:17:46 · 1301 阅读 · 0 评论 -
Sicily 1114 Food Cubes
广度优先搜索在三维空间上的扩展,题目本身难度不大,但是在写的时候有个判断条件没有考虑仔细,多刷了好几次提交,几乎崩溃。#include #include #include using namespace std;int data[105][105][105];bool is_valid( int x, int y, int z ) { if ( x>=0&&x=0&&y=0&原创 2012-01-26 15:51:38 · 1443 阅读 · 0 评论 -
Sicily 1218 纪念邮票
这道题需要用到一些数学推导,其实就是一个等差数列的求和公式。#include #include int main(){ int n,m,a,t; int num1,num2; int ctr1,ctr2; while ( scanf( "%d",&n )!=EOF ) { scanf( "%d",&m ); t=(in原创 2012-01-27 12:07:23 · 1167 阅读 · 0 评论 -
Sicily 1134 积木分发
搞清楚怎么样贪心就可以了,The Pancakes跟小朋友合照的顺序应该和各个小朋友所需的积木数(从小到大)的顺序一致。#includestruct std { int a; int b;};int main(){ int n,s,i,j; struct std a[12000]; struct std mid; while ( sca原创 2012-01-26 16:05:27 · 1674 阅读 · 1 评论 -
Sicily 1090 Highways
最小生成树#include int main(){ int ctr,t,n,i,j,mi,ma,po; int a[502][502],data[502]; int flag=0; scanf( "%d",&t ); while ( t-- ) { scanf( "%d",&n ); for ( i=0;i<n;i+原创 2012-01-26 15:43:16 · 1116 阅读 · 0 评论 -
Sicily 1073 Pearls
题目大意:购买若干种珍珠,但是在购买的时候必须多付10颗此类珍珠的价钱,比如购买价值为1的珍珠100颗,则必须付110颗的价钱。一颗珍珠可以用比它贵的珍珠替代,所以买多种珍珠的时候用贵的代替便宜的可能更加省钱。输入为要购买的珍珠,要求输出最少的花费。思路:动态规划,和Poj的1260是一样的题目。状态转移方程为min((num[i]-num[j]+10)*p[i]+cost[j],cost原创 2012-01-26 15:37:51 · 445 阅读 · 0 评论 -
Sicily 1027 MJ, Nowhere to Hide
水题,主要是做一些字符串的比较和相关排序,数据量不大,所以效率上应该不会有多大问题。#include #include struct std { char n1[15]; char n2[15]; char num[20];};int main(){ struct std mj[20]; int i,j,k; int n,m;原创 2012-01-26 15:26:17 · 888 阅读 · 0 评论 -
Sicily 1021 Couples
水题,考察栈的应用,和括号匹配是一样的意思。#include using namespace std;#include int flag[200020];int main(){ stack s; int n,i,j,k,a,b; cin >> n; while (n!=0) { for (i=1;i<=n;i++) {原创 2012-01-26 15:09:13 · 1587 阅读 · 0 评论 -
Sicily 1162 Sudoku
数独,直接深搜即可。#include #include #include int t;int data[12][12];int row [12][12];int col[12][12];int square[12][12];int x[90];int y[90];char num;int ctr,flag;int get_square_num(int i,int j)原创 2012-01-26 20:30:50 · 625 阅读 · 0 评论 -
Sicily 1133 SPAM
题目要求输出所给字符串中合格的邮箱地址,要考虑的判断条件比较多,算是比较复杂的模拟题吧。#include #include #include using namespace std;char data[520];int length;bool isvalid( char c ) { if ( c='a' ) return true; else if原创 2012-01-26 15:56:23 · 766 阅读 · 0 评论 -
Sicily 1011 Lenny's Lucky Lotto
题目大意:给定两个数N和M,要求输出满足以下条件的序列An的数目序列An从某个正整数开始——比如1,每个数都要>=前一个数的2倍,最后一个数思路:DP,dp[i][j]存储选取的第i个数为j时的方案数。 //设dp[i][j]为选取的第i个数为j的方案数#include #include #define N 15#define M 2012unsigned long lo原创 2012-01-22 20:13:14 · 1185 阅读 · 0 评论 -
Sicily 1137 河床
求一个最长的连续区间满足其中的最小数和最大数之差不大于k,直接做就可以了。#include #include using namespace std;int main(){ int n,k,m,l,i,j; int a[30100]; int low,high; while ( cin >> n ) { cin >> k; for ( i=0;i原创 2012-01-26 16:12:19 · 772 阅读 · 0 评论 -
Sicily 1146 采药
01背包,动态规划。#include using namespace std;int tab[101][1001];int solve_dp( int t, int m ) { int w[101],v[101]; int i,j; for ( i=1;i<=m;i++ ) cin >> w[i] >> v[i]; for ( i=0;i<原创 2012-01-26 16:15:33 · 882 阅读 · 0 评论 -
Sicily 1152 简单的马周游问题
DFS,这道题的棋盘只是5*6,没有剪枝也可以过。#include using namespace std;int arr[30];struct dir { int x; int y;};struct dir p[8];bool tab[5][6];int flag = 0;void solve( int k, int x, int y ) { int原创 2012-01-26 16:19:22 · 4274 阅读 · 2 评论 -
Sicily 1194 Message Flood
这道题我尝试了两种做法,一开始用的是快排+二分,但是实现起来代码较长,而且效率也不是很高。后来学习了STL还有哈希等相关内容,发现直接用STL中的map实现起来很非常简洁。第一份是快排+二分的。#include #include #include void ksort(int l, int h, char a[][10]){ int e = h; int p = l; ch原创 2012-01-26 20:43:13 · 854 阅读 · 0 评论 -
Sicily 1156 Binary tree
给出一颗二叉树,要求输出该树的前序遍历,关键在于如何建树。#include using namespace std;struct node { char data; int l; int r; bool flag;};struct node arr[1001];void print( int x ) { if ( x==0 )原创 2012-01-26 20:27:52 · 1853 阅读 · 0 评论 -
Sicily 1155 Can I Post the letter
有向图判断两点之间是否可达,直接上沃舍尔算法。#include int main(){ int n,i,j,k,m; int b,c; int a[200][200]; scanf( "%d",&n ); while (n!=0) { for ( i=0;i<n;i++ ) { for ( j=0;j<n;j原创 2012-01-26 16:29:25 · 2283 阅读 · 0 评论