ACM
zsjhxl
这个作者很懒,什么都没留下…
展开
-
sicily 无路可逃
迷宫求解.Time Limit: 1sec Memory Limit:256MBDescription唐僧被妖怪关在迷宫中。孙悟空好不容易找到一张迷宫地图,并通过一个魔法门来到来到迷宫某个位置。假设迷宫是一个n*m的矩阵,它有两种地形,1表示平地,0表示沼泽,孙悟空只能停留在平地上。孙悟空目前的位置在坐标(sx,sy)处,他可以向上下左原创 2013-12-11 12:41:11 · 1275 阅读 · 0 评论 -
sicily 1798.Aclie and Bob
哈哈哈!刚开始用BFS结果存储空间不够- -我用的是bool,即使一个二维的10000数组也不会超过32MB好吧- -。就是为了使用下面的算法才设置这么个不合理的条件。在bfs中发现了规律,偶数就是Alice赢,奇数就是Bob赢。。#include using namespace std;int main(){ int size; while(cin >> size原创 2013-12-31 17:10:34 · 524 阅读 · 0 评论 -
sicily 1147.谁拿了最多奖学金
#include #include #include #include #include using namespace std;int const N = 101;struct student{ string name; int avscore;//期末平均成绩 int score2;//班级评议成绩 bool isboss;//是否是学生干部 bool west原创 2013-12-31 18:41:35 · 365 阅读 · 0 评论 -
sicily 1510. Mispelling
#include #include using namespace std;int main(){ int caseNum; cin >> caseNum; int flag = 1; while(caseNum--) { string s; int index; cin >> index >> s; cout << flag++ << " "; for(i原创 2013-12-31 19:35:55 · 369 阅读 · 0 评论 -
sicily 1154. Easy sort
使用优先队列实现#include #include using namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { priority_queue, greater > q;//优先队列,优先级高的先pop int n; cin >> n; for(int i = 0原创 2013-12-31 19:45:17 · 439 阅读 · 0 评论 -
sicily 1795.Table tennis
#include using namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { int n; int x; int y; cin >> n; int score = 0; for(int i = 0;i < n;i++) { cin >> x >>原创 2013-12-31 19:02:28 · 467 阅读 · 0 评论 -
sicily 1325. Digit Generator
#include using namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { int number; cin >> number; int count = 0, temp = number; while (temp > 0)//计算出输入的数字的位数 { te原创 2013-12-31 21:01:45 · 359 阅读 · 0 评论 -
sicily 1144.淘淘摘苹果
今天开始刷几题水题搞一搞。。。#include using namespace std;int main(){ int apple[11] = {0}; for(int i = 0;i < 10;i++) { cin >> apple[i]; } int height; cin >> height; int result = 0; for(int i = 0;i原创 2013-12-31 15:39:30 · 624 阅读 · 0 评论 -
sicily 1087.Funny game
#include using namespace std;int main(){ int caseNum; while(cin >> caseNum && caseNum != 0) { if(caseNum == 1 || caseNum == 2)//如果为1或者2,肯定是先下手的Alice赢 cout << "Alice" << endl; else if(cas原创 2013-12-31 19:26:48 · 542 阅读 · 0 评论 -
sicily 1232.Electrical Outlets
#include #include using namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { int number,trips[11]; cin >> number; for(int i = 0;i < number;i++) cin >> trips[i];原创 2013-12-31 16:16:56 · 369 阅读 · 0 评论 -
sicily 1145.校门外的树
#include #include using namespace std;int main(){ int length;//马路长度 int area;//区域数目 while(cin >> length >> area && length != 0) { int road[10001] = {0}; bool visited[10001];//标记区域是否重复 i原创 2013-12-31 16:07:27 · 468 阅读 · 0 评论 -
sicily 1424.奖金
拓扑排序#include #include #include #include using namespace std;const int MAXN = 10005;int in[MAXN];vector g[MAXN];int bonus[MAXN];int main(){ int n,m; while(cin >> n >> m && n !=原创 2013-12-29 15:15:15 · 781 阅读 · 0 评论 -
sicily 有向图边的分类
这题只要过这个例子就可以- -#include #include #include #include using namespace std;const int MAXN = 105;bool visited[MAXN];vector g[MAXN];int main(){ int n,m; while(cin >> n >> m && n != 0)原创 2013-12-29 13:46:34 · 513 阅读 · 0 评论 -
sicily 1031.Campus
djstra单源最短路径.#include #include #include #include #include #include using namespace std;const int MAXN = 1000005;int road[202][202];bool used[202];int minlength[202];int number;int djst原创 2013-12-29 16:42:54 · 412 阅读 · 0 评论 -
sicily 1321.Robot
解题策略:典型的Djstra单源路径最短问题.问题的关键是将举证化为图的形式.#include #include #include #include #include using namespace std;struct edge{ int v;//点 int cost;//权值 edge(int a,int b) { this->v = a; this->co原创 2013-12-29 17:53:03 · 480 阅读 · 0 评论 -
sicily 1940.Ordering Tasks
题意分析:1.拓扑排序 2.关于按字母序输出.解题思路:刚开始一直纠结在字母序输出问题上,最后了解到可以用一种自己美接触过的数据结构,优先队列即优先级高的元素先出列。用法如下: 1.priority_queueint> qi;//标准库中默认是 2.priority_queueint, vectorint>, greaterint> >qi2;//元素小的优先级高原创 2013-12-30 11:42:00 · 925 阅读 · 0 评论 -
sicily 1090.Highways
题目大意:求最小生成树,并输出最小生成树中权值最大的边,解题思路:用prim算法.prim算法思想参考:Veegin#include #include using namespace std;#define N 505#define MAXINT 65538int n;int result;int map[N][N];//存储distancebool visited[原创 2013-12-30 17:27:59 · 376 阅读 · 0 评论 -
sicily 1157.The hardest problem
水- -但是WA了两次!原因是n signed 32-bit integers. 即你的max值初始不能为0.#include using namespace std;int main(){ int n,max; while(cin >> n && n != 0) { int data[5] = {0}; cin >> max; for(int i = 0;i <原创 2013-12-30 21:09:03 · 378 阅读 · 0 评论 -
sicily 1082.MANAGER
题意:对于若干个进程(process)和一个进程队列有以下几种操作a x 将花费为x的进程添加到进程队列中p i 修改当前模式为ir 根据p的不同删除队列中最大或最小的进程并输出,p为1时删除并输出最小的,p为2时删除并输出最大的,注意只有当前remove次数是在remove list里面的时候才需要输出,否则只删除e 结束当前的casep的默认原创 2013-12-30 22:45:45 · 444 阅读 · 0 评论 -
sicily 1324.Score
#include #include #include using namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { int flag = 0; string s; cin >> s; int score = 0; for(int i = 0;i < s.len原创 2013-12-31 16:30:16 · 370 阅读 · 0 评论 -
sicily.1813 M进制数问题
解题思路:先将数转换成十进制进行处理,再将结果转换成M进制数#include #include #include using namespace std;int change(string s,int m){ int result = 0; for(int i = 0;i < s.length();i++) { if(s[i] >= '0' && s[i] <= '9')原创 2014-01-02 16:30:22 · 419 阅读 · 0 评论 -
动态规划之01背包问题
转载于:http://blog.sina.com.cn/s/blog_6dcd26b301013810.html首先是问题描述:给定n种物品和一背包,物品i的重量是wi,其价值是pi,背包的容量是M,问如何选择装入背包中的物品总价值最大?可以这样理解:背包的背负有上限,因此在这个上限内尽可能多的装东西,并且价值越多越好。在这里我之想讨论动态规划解决这个问题的详细过程。转载 2014-01-04 19:57:25 · 386 阅读 · 0 评论 -
sicily 1048. Inverso
这里借鉴了Ciel的思想.//用一个9位的二进制数来表示网格信息,即0表示对应位为白色,1为黑色.#include #include #include #include using namespace std;struct point{ int step; string s; point(int step) { this->step原创 2014-01-03 21:47:42 · 729 阅读 · 0 评论 -
sicily 1564.HOUSING
//本题题意:有m个人,无数个房间,每个房间至少为5人,求一共有多少分配方案//转化成能取无数次的硬币问题或者完全背包问题//1.转化成硬币找零问题:有5……m面额的硬币,每个硬币取的次数不受限制,求组成一个面额为m的方案个数.//2.转化成完全背包问题:背包大小为m,物品依次为5……m的,每个物品取的次数不受限制,求这些物品刚好放满背包的方案数.#include #include #includ原创 2014-01-05 12:27:10 · 485 阅读 · 0 评论 -
sicily 1342. 开心的金明
//转化成01背包问题#include #include #include using namespace std;int dp[30001];int main(){ int N,m; while(cin >> N)//相当于背包中能承载的重量 { cin >> m;//相当于物品个数 int w[26],v[26];//w相当于背包中每个物品的重量,v为价值原创 2014-01-05 15:05:54 · 556 阅读 · 0 评论 -
sicily 1782.Knapsack
//转化成01背包问题#include #include #include using namespace std;int dp[10001];int main(){ int caseNum; cin >> caseNum; while(caseNum--) { int n,m;//n为物品个数,m为背包容量 cin >> n >> m; int w[1001原创 2014-01-05 15:29:02 · 607 阅读 · 0 评论 -
sicily 1077.Cash Machine
将多重背包问题转化成01背包.使用模板...//这是一个多重背包问题,用模板转化成01背包#include #include #include using namespace std;int dp[100001];int num[1001];//每一种物品的数目int v[1001];//每一种物品的价值int V,N;//此题中每个物品的价值和重量是一样的void原创 2014-01-05 17:32:55 · 383 阅读 · 0 评论 -
sicily 2014.Dairy Queen
类似于完全背包或者可以取无限个的硬币问题.#include #include using namespace std;int dp[301];int v[9];int main(){ int n; while(cin >> n) { memset(dp,0,sizeof(dp)); memset(v,0,sizeof(v)原创 2014-01-06 13:06:36 · 707 阅读 · 0 评论 -
sicily 1158.Pick numbers
解题思路:原来以为用动态规划可以做,但是题目要求是最小的非负整数,动态规则中有可能为负数.所以采用深搜或者广搜都行.#include #include using namespace std;int m,n;int matrix[11][11];bool visited[11][11];int result;void dfs(int x,int y,int sum){原创 2014-01-04 15:38:45 · 383 阅读 · 0 评论 -
sicily 1091.Maximum Sum
解题思路:动态规划.需要学习动态规划的转移方程.最大连续子段和#include #include using namespace std;#define N 50001int d_left[N];//如d_left[i]记录的是从左往右到i位置的最大连续子段和int d_right[N];//如d_right[i]记录的是从右往左到i位置的最大连续子段和int r_left[N原创 2014-01-04 13:43:06 · 313 阅读 · 0 评论 -
sicily 1014. Specialized Four-Dig
#include #include #include using namespace std;int sum(string s)//求每位数相加之和{ int result = 0; for(int i = 0;i < s.length();i++) { if(s[i] >= '0' && s[i] <= '9') result = result + s[i] - '0原创 2014-01-02 16:53:15 · 444 阅读 · 0 评论 -
sicily 1298.数制转换
#include #include #include using namespace std;//一个数被3整除后的余数为,-2,-1,0,1,2,在本题中,-2和2太小和太大,要进行处理。int main(){ int n; while(cin >> n) { if(n == 0) cout << 0; else { vector data; w原创 2014-01-02 14:54:01 · 463 阅读 · 0 评论 -
sicily. 1815 计算两点间的距离
#include #include #include using namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { double x1,y1,x2,y2; cin >> x1 >> y1 >> x2 >> y2; double dis = sqrt((x1 - x2)原创 2014-01-02 15:20:49 · 283 阅读 · 0 评论 -
sicily 1500.Prime Gap
题意:给定一个整数,求这个离这个整数最近的两个素数(一大一小)之间的距离(差).解题策略:用筛法求素数表#include #include using namespace std;#define MAXLEN 1299710int isPrime[MAXLEN];int prime[MAXLEN];void sieve(int arr[], int len)//筛法求素数{原创 2014-01-02 20:13:57 · 1130 阅读 · 0 评论 -
sicily 1561.PRIME
解题思路:打表,用筛法求素数.#include #include using namespace std;#define MAXLEN 110010int isPrime[MAXLEN];int prime[10000];void sieve(int arr[], int len)//筛法求素数{ int i, j; int sqrt_len = sqrt(do原创 2014-01-02 19:37:41 · 396 阅读 · 0 评论 -
sicily 1814.日期计算问题
解题思路:对每个日期都计算其到0年0月0日的天数,然后两者相减.#include #include using namespace std;int longmonth[12]={31,29,31,30,31,30,31,31,30,31,30,31};//闰年每月的天数int shortmonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};/原创 2014-01-02 17:34:57 · 364 阅读 · 0 评论 -
sicily 1818.成绩转换
解题策略:用map可以实现映射,并对相同元素更新!#include #include #include using namespace std;int main(){ int caseNum; cin >> caseNum; while(caseNum--) { int m,n; cin >> n >> m; map maps; string name =原创 2014-01-02 20:41:00 · 385 阅读 · 0 评论 -
sicily 1817.校歌手大奖赛
解题策略:排序去点vector的头和尾即可,不用考虑最高分或者最低分是否有重复.注意:用cin和cout会超时- -#include #include #include #include using namespace std;bool cmp(int a,int b){ return a > b;}int main(){ int caseNum; cin >>原创 2014-01-02 21:12:54 · 457 阅读 · 0 评论 -
sicily DAG?
深度搜索找回路#include #include #include #include using namespace std;const int MAXN = 105;bool visited[MAXN];vector g[MAXN];bool back = false;bool dfs(int node){ if(back) return false; for原创 2013-12-29 14:27:03 · 618 阅读 · 0 评论 -
sicily. bicoloring
#include #include #include using namespace std;int color[1005];int main(){ int n,m; while(cin >> n >> m && n != 0) { vector g[1005]; int a,b; for(int i = 0;i < m;i++) { cin >> a原创 2013-12-15 19:24:18 · 560 阅读 · 0 评论