c++
zsjhxl
这个作者很懒,什么都没留下…
展开
-
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 · 597 阅读 · 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 · 695 阅读 · 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 · 545 阅读 · 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 · 713 阅读 · 0 评论 -
sicily 1564.HOUSING
//本题题意:有m个人,无数个房间,每个房间至少为5人,求一共有多少分配方案//转化成能取无数次的硬币问题或者完全背包问题//1.转化成硬币找零问题:有5……m面额的硬币,每个硬币取的次数不受限制,求组成一个面额为m的方案个数.//2.转化成完全背包问题:背包大小为m,物品依次为5……m的,每个物品取的次数不受限制,求这些物品刚好放满背包的方案数.#include #include #includ原创 2014-01-05 12:27:10 · 475 阅读 · 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 · 300 阅读 · 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 · 373 阅读 · 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 · 1123 阅读 · 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 · 447 阅读 · 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 · 383 阅读 · 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 · 355 阅读 · 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 · 431 阅读 · 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 · 400 阅读 · 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 · 370 阅读 · 0 评论 -
sicily 无路可逃
迷宫求解.Time Limit: 1sec Memory Limit:256MBDescription唐僧被妖怪关在迷宫中。孙悟空好不容易找到一张迷宫地图,并通过一个魔法门来到来到迷宫某个位置。假设迷宫是一个n*m的矩阵,它有两种地形,1表示平地,0表示沼泽,孙悟空只能停留在平地上。孙悟空目前的位置在坐标(sx,sy)处,他可以向上下左原创 2013-12-11 12:41:11 · 1262 阅读 · 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 · 456 阅读 · 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 · 272 阅读 · 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 · 355 阅读 · 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 · 770 阅读 · 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 · 602 阅读 · 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 · 506 阅读 · 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 · 544 阅读 · 0 评论 -
sicily 1936. Knight Moves
#include #include #include #include using namespace std;struct point{ int x; int y; point(int x,int y) { this->x = x; this->y = y; }};int next_x[8] = {-2,-1,1,2,2,1,-1,-2};int next_原创 2013-12-15 19:02:28 · 619 阅读 · 0 评论 -
Can I Post the lette
深搜dfs或广搜bfs都可以.DescriptionI am a traveler. I want to post a letter to Merlin. But because there are so many roads I can walk through, and maybe I can’t go to Merlin’s house following these roa原创 2013-12-11 12:45:57 · 648 阅读 · 0 评论 -
sicily connected components in undiected graph
#include #include #include #include using namespace std;const int MAXN = 1005;bool visited[MAXN];vector g[MAXN];void bfs(int u){ visited[u] = true; queue q; q.push(u); whil原创 2013-12-11 12:49:33 · 365 阅读 · 0 评论 -
sicily 1211.商人的宣传
#include #include using namespace std; //floyd算法int road[102][102];int result[102][102];int main() { int n,m,l; int x,y; int q; int A,B; cin >> n >> m >> l; memset(road,0,sizeof(road)原创 2013-11-30 19:56:27 · 486 阅读 · 0 评论 -
sicily 1172.Queens,Knights and Pawns
#include #include #include #include using namespace std;struct board{ bool have; bool visited;};struct xy{ int x; int y;};board Board[1005][1005];vector queen;vector knight;vector原创 2013-11-07 18:07:32 · 531 阅读 · 0 评论 -
c++递归实现关于无向图中任意两点的最短距离
输入说明:第一个输入参数为测试样例个数 第二个输入参数n为图的边数 接下来的n行输入为x,y,length,表示节点x到节点y的距离length#include #include #include #include #include using namespace std; bool visited[101];int min_len原创 2013-11-04 10:57:44 · 4021 阅读 · 0 评论 -
c++ 递归实现不同字母的全排列组合
这里只用A,B,C,D,E当样例,其他个数的样例算法思想一致。#include #include #include using namespace std;map m;int number = 0; void dfs(string result,int count){ if(count == 5) { number++; cout原创 2013-11-07 15:27:26 · 3512 阅读 · 0 评论 -
c++ 声明和定义的区别
转载于:sjxbfC++声明和定义的区别 《C++Primer》第四版 2.3.5节中这么说到:①变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。②变量声明:用于向程序表明变量的类型和名字。③定义也是声明:当定义变量时我们声明了它的类型和名字。④extern关键字:通过使用extern关键字声明变量名而不定义它。 1.定义也转载 2013-11-04 21:01:43 · 616 阅读 · 0 评论 -
c++命名空间namespace
转载于:http://blog.csdn.net/touzani/article/details/1637776命名空间在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可原创 2013-11-04 15:09:48 · 492 阅读 · 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 · 468 阅读 · 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 · 401 阅读 · 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 · 531 阅读 · 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 · 359 阅读 · 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 · 456 阅读 · 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 · 358 阅读 · 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 · 452 阅读 · 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 · 344 阅读 · 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 · 428 阅读 · 0 评论