东莞与盘锦的网站建设服务如何实现三合一平台?

摘要:东莞网站建设三合一,盘锦网站建设平台,德州谁会做网站,html5开发的网站文章目录 参考:总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入
东莞网站建设三合一,盘锦网站建设平台,德州谁会做网站,html5开发的网站文章目录 参考#xff1a;总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案答案2 [CSP-J 2019] 公交换乘题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示… 文章目录 参考总结 [CSP-J2019] 数字游戏题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案答案2 [CSP-J 2019] 公交换乘题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示答案1答案2 现场真题注意事项 参考 https://www.luogu.com.cn/problem/P5660 https://www.luogu.com.cn/problem/P5661 总结 本系列为CSP-J/S算法竞赛真题讲解会按照年份分析每年的真题并给出对应的答案。本文为2019年真题。 https://www.luogu.com.cn/problem/list?tag343page1 [CSP-J2019] 数字游戏 题目描述 小 K 同学向小 P 同学发送了一个长度为 8 8 8 的 01 字符串来玩数字游戏小 P 同学想要知道字符串中究竟有多少个 1 1 1。 注意01 字符串为每一个字符是 0 0 0 或者 1 1 1 的字符串如“101”不含双引号为一个长度为 3 3 3 的 01 字符串。 输入格式 输入文件只有一行一个长度为 8 8 8 的 01 字符串 s s s。 输出格式 输出文件只有一行包含一个整数即 01 字符串中字符 1 \bm 1 1 的个数。 样例 #1 样例输入 #1 00010100样例输出 #1 2样例 #2 样例输入 #2 11111111样例输出 #2 8提示 【输入输出样例 1 说明】 该 01 字符串中有 2 2 2 个字符 1 1 1。 【输入输出样例 2 说明】 该 01 字符串中有 8 8 8 个字符 1 1 1。 【数据规模与约定】 对于 20 % 20\% 20% 的数据保证输入的字符全部为 0 0 0。对于 100 % 100\% 100% 的数据输入只可能包含字符 0 0 0 和字符 1 1 1字符串长度固定为 8 8 8。 答案 //#include bits/stdc.h #includecstdio//必须包含cstdio头文件 using namespace std;int main(){//freopen(candy.in,r,stdin);//freopen(candy.out,w,stdout);char x;int ans0;for(int i1;i8;i){scanf(%c,x);if(x1)ans;}printf(%d\n,ans);return 0; }输出: 答案2 #includeiostream using namespace std; int ans0;//ans计数器 char s[21];//字符串开大一点 int main(){cins;for(int i0;i8;i){//模拟if(s[i]1){//判断是否为1ans;//计数器}}coutansendl;return 0;//完美结束 } 输出为: [CSP-J 2019] 公交换乘 题目描述 著名旅游城市 B 市为了鼓励大家采用公共交通方式出行推出了一种地铁换乘公交车的优惠方案 在搭乘一次地铁后可以获得一张优惠票有效期为 45 分钟在有效期内可以消耗这张优惠票免费搭乘一次票价不超过地铁票价的公交车。在有效期内指开始乘公交车的时间与开始乘地铁的时间之差小于等于 45 分钟即 t b u s − t s u b w a y ≤ 45 t_{bus} - t_{subway} \leq 45 tbus​−tsubway​≤45搭乘地铁获得的优惠票可以累积即可以连续搭乘若干次地铁后再连续使用优惠票搭乘公交车。搭乘公交车时如果可以使用优惠票一定会使用优惠票如果有多张优惠票满足条件则优先消耗获得最早的优惠票。 现在你得到了小轩最近的公共交通出行记录你能帮他算算他的花费吗? 输入格式 输入文件的第一行包含一个正整数 n n n代表乘车记录的数量。 接下来的 n n n 行每行包含 3 个整数相邻两数之间以一个空格分隔。第 i i i 行的第 1 个整数代表第 i i i 条记录乘坐的交通工具0 代表地铁1 代表公交车第 2 个整数代表第 i i i 条记录乘车的票价 p r i c e i price_i pricei​ 第三个整数代表第 i i i 条记录开始乘车的时间 t i t_i ti​距 0 时刻的分钟数。 我们保证出行记录是按照开始乘车的时间顺序给出的且不会有两次乘车记录出现在同一分钟。 输出格式 输出文件有一行包含一个正整数代表小轩出行的总花费。 样例 #1 样例输入 #1 6 0 10 3 1 5 46 0 12 50 1 3 96 0 5 110 1 6 135样例输出 #1 36样例 #2 样例输入 #2 6 0 5 1 0 20 16 0 7 23 1 18 31 1 4 38 1 7 68样例输出 #2 32提示 【输入输出样例 1 说明】 第一条记录在第 3 分钟花费 10 元乘坐地铁。 第二条记录在第 46 分钟乘坐公交车可以使用第一条记录中乘坐地铁获得的优惠票因此没有花费。 第三条记录在第 50 分钟花费 12 元乘坐地铁。 第四条记录在第 96 分钟乘坐公交车由于距离第三条记录中乘坐地铁已超过 45 分钟所以优惠票已失效花费 3 元乘坐公交车。 第五条记录在第 110 分钟花费 5 元乘坐地铁。 第六条记录在第 135 分钟乘坐公交车由于此时手中只有第五条记录中乘坐地铁获得的优惠票有效而本次公交车的票价为 6 元高于第五条记录中地铁的票价 5 元所以不能使用优惠票花费 6 元乘坐公交车。 总共花费 36 元。 【输入输出样例 2 说明】 第一条记录在第 1 分钟花费 5 元乘坐地铁。 第二条记录在第 16 分钟花费 20 元乘坐地铁。 第三条记录在第 23 分钟花费 7 元乘坐地铁。 第四条记录在第 31 分钟乘坐公交车此时只有第二条记录中乘坐的地铁票价高于本次公交车票价所以使用第二条记录中乘坐地铁获得的优惠票。 第五条记录在第 38 分钟乘坐公交车此时第一条和第三条记录中乘坐地铁获得的优惠票都可以使用使用获得最早的优惠票即第一条记录中乘坐地铁获得的优惠票。 第六条记录在第 68 分钟乘坐公交车使用第三条记录中乘坐地铁获得的优惠票。 总共花费 32 元。 【数据规模与约定】 对于 30 % 30\% 30% 的数据 n ≤ 1000 n \leq 1000 n≤1000 t i ≤ 1 0 6 t_i \leq 10^6 ti​≤106。 另有 15 % 15\% 15% 的数据 t i ≤ 1 0 7 t_i \leq 10^7 ti​≤107 p r i c e i price_i pricei​ 都相等。 另有 15 % 15\% 15% 的数据 t i ≤ 1 0 9 t_i \leq 10^9 ti​≤109 p r i c e i price_i pricei​ 都相等。 对于 100 % 100\% 100% 的数据 n ≤ 1 0 5 n \leq 10^5 n≤105 t i ≤ 1 0 9 t_i \leq 10^9 ti​≤109 1 ≤ p r i c e i ≤ 1000 1 \leq price_i \leq 1000 1≤pricei​≤1000。 答案1 #includebits/stdc.h using namespace std;//乘车记录的数量n int n; // 交通工具g、票价p、时间t int g[100010],p[100010],t[100010]; int sum0;//总花费sum int ques0; //优惠票总数quesqueueint q1;//优惠票时间队列q1 queueint q2;//优惠票价钱队列q1int main() {cinn;// 记录条数nfor(int i1; in; i){// 记录交通工具g、票价p、时间tcing[i]p[i]t[i];// 判断地铁if (g[i] 0){//因为地铁一定要花钱所以将总花费sum加上票价p//坐地铁一定会拿到一张优惠票//我们将优惠票的时间压入时间队列q1//将票价压入价钱队列q2并将优惠票的数量ques加1sum p[i];q1.push(t[i]);q2.push(p[i]);ques;}// 筛出废票//当优惠票超过45分后该优惠票就会失效//因为队列FIFO的特性只要队首的那张没超时就代表后面的都没超时。//因此使用while循环附加非空判定以防万一while(t[i]-q1.front()45 !q1.empty()){//只要循环进去了说明这张票废了// 把两个队列q1q2的队首都弹出并把优惠票数量ques减1q1.pop();q2.pop();ques--;}int f0;//优惠票使用状态int quesd ques;//优惠票备用数量quesd//判断公交if(g[i]1){//接下来为保险起见分为有优惠票优惠票队列q1q2非空和//无优惠票优惠票队列q1q2为空两种情况考虑。先写出判断语句if(!q1.empty()){/*接下来进入重头戏就是当有优惠票时因为优惠票可能会不能用而且没有规律不像时间队列q1有规律在这里所有的优惠票肯定都不会超时超时的全弹出去了。我们在这里使用这样的方法把队列q1q2从头到尾检索一次即使已经有符合的了也要全检索完因为优惠票需要按时间顺序排列其顺序不能更改。如何检索呢只需要把队首压入队尾再把队首弹出就可以了这样第一位就会变到最后一位第二位变到第一位以此类推。当全部走完后第一位又会变回第一位。*///首先进行循环/*为什么这里要用备用数量quesd呢因为假设有优惠票被使用那么此票就会被弹出数量ques会减1参见上文第四大步因为数量会变所以需要存一个固定的值也就是quesd紧接着分两种情况一种是该票可以使用一种是该票不能使用。可以使用即是价钱队列q2的队首大于等于乘坐此次公交所花的钱不可以使用则反之。为判断方便以可以使用为条件不可以使用为该条判断的else*/if(f 0 p[i]q2.front()){/*此处的使用状态f为后期进行判定时使用f为0表示本轮还没有使用优惠票f为1表示本轮使用了优惠票当满足条件时表示可以使用优惠票f的值改为1并将该票弹出队列q1q2优惠票数量ques减1*/f1;q1.pop();q2.pop();ques--;}else{q1.push(q1.front());q2.push(q2.front());q1.pop();q2.pop();}}else{//当无优惠票时无论如何都要花钱//else里面将总花费sum加上票价p。sum p[i];continue;}if ( f 0 ){sum p[i] ;}}}coutsum;return 0;//完美结束 } 输出为: 答案2 #include iostreamusing namespace std; const int MAXN 100005; struct Ticket {//赠票的价格最晚使用时间和是否需用过int price, time, used; } q[MAXN];//赠票盒子 int head, tail, n, cost;int main() {cin n;for (int i 0; i n; i) {int op, price, time;//输入每次坐车的种类价格和发车时间cin op price time;if (op 0) {//如果是坐地铁直接把价格加到cost里面cost price;//新一张赠票插入数组末尾这张票的最晚使用时间是当前时间45q[tail].time time 45;//赠票面额就是地铁票价q[tail].price price;} else {//先用一个循环把过期票扔掉while (head tail q[head].time time) {head;}bool found false;//表示是否有合适的赠票先假设没有for (int j head; j tail; j) {//循环所有剩余的票这些一定都没过期因为题目中时间是按顺序给我们的if (q[j].price price q[j].used 0) {//如果价格合适并且没用过标记找到了这张票标记用过found true;q[j].used 1;break;}}//如果没找到合适的赠票老老实实花钱买吧if (!found) cost price;}}cout cost endl;return 0; } 输出为: 现场真题注意事项 https://cspoj.com/contest.php?cid1002 Fus5yz4x3EcSJH1Z 注意事项 文件名程序名和输入输出文件名必须使用英文小写。提交必须使用freopen()进行提交C/C 中函数 main() 的返回值类型必须是 int程序正常结束时的返回值必须是0。提交的程序代码文件的放置位置请参考各省的具体要求。因违反以上三点而出现的错误或问题申述时一律不予受理。若无特殊说明结果的比较方式为全文比较过滤行末空格及文末回车。程序可使用的栈空间内存限制与题目的内存限制一致。全国统一评测时采用的机器配置为Inter® Core™ i7-8700K CPU 3.70GHz内存 32GB。上述时限以此配置为准。只提供 Linux 格式附加样例文件。评测在当前最新公布的 NOI Linux 下进行各语言的编译器版本以此为准 /* 假设输入样例数据存在文件test.in中输出样例数据存在文件test.out中 则在CSP、NOI等比赛的代码中需添加freopen、fclose语句 内容详见模板代码如下。 */ #include bits/stdc.h #includecstdio//必须包含cstdio头文件 #includeiostream using namespace std;int main(){freopen(test.in,r,stdin);freopen(test.out,w,stdout);coutHello NOIendl;fclose(stdin);fclose(stdout);return 0; }下面为函数的简介详细可参见 http://www.cplusplus.com/reference/clibrary/cstdio/freopen.html 函数名freopen 声明FILE *freopen( const char *path, const char *mode, FILE *stream ); 所在文件 stdio.h 参数说明 path: 文件名用于存储输入输出的自定义文件名。 mode: 文件打开的模式。和fopen中的模式如r-只读, w-写相同。 stream: 一个文件通常使用标准流文件。 返回值成功则返回一个path所指定文件的指针失败返回NULL。一般可以不使用它的返回值 功能实现重定向把预定义的标准流文件定向到由path指定的文件中。标准流文件具体是指stdin、stdout和stderr。其中stdin是标准输入流默认为键盘stdout是标准输出流默认为屏幕stderr是标准错误流一般把屏幕设为默认。通过调用freopen就可以修改标准流文件的默认值实现重定向。 #includeiostream #includecstdio using namespace std; int main(){freopen(7532.in, r, stdin);freopen(7532.out, w, stdout);//原来的代码保持不变double a, b, r;int k;cin a b;k int(a/b);r a - b * k;printf(%g, r);//-------------fclose(stdin);fclose(stdout);return 0; }