C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html  A: 逆序对 时间限制: 1 s      内存限制: 128 MB  题目描述 1.整数序列中两个相邻的数,如果后面的数小于前面的数,则称这两个数值构成了一个逆序对.例如,整数序列10,4,16,8,21,18,9中包含了4个逆序对.从键盘上输入n个由空格分隔的整数,编程输出其中包含的逆序对的数量. 输入 第一行输入一个数字n (1≤n≤1000) 第…
问题 A: Petr的盒子(初) #include <iostream> #include <stdio.h> #include <algorithm> using namespace std; ]; int main(){ int n , x; scanf("%d",&n); ; i < n ; i ++){ scanf("%d",&x); a[i] = ; a[i] *= x; } ; i < n…
问题 A: jxust 解法:争议的问题(是输入整行还是输入字符串),这里倾向输入字符串,然后判断是否含有jxust就行 #include<bits/stdc++.h> using namespace std; string s; int num; //jxust int t; class P { public: int cmd(string s) { num=; ; i<s.length()-; i++) { ]==]==]==]=='t') { num++; } } return n…
问题 A: 木棒根数 解法:把所有的情况保存下来,加一下就好 #include<bits/stdc++.h> using namespace std; map<char,int>q; class P { public: int cmd(string s) { ; ;i<s.length();i++) { sum+=q[s[i]]; } return sum; } }; int main() { string s; P solve; q[; q[; q[; q[; q[; q[…
1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence  本题的核心在于求出约瑟夫环出队序列,如果直接暴力的话复杂度约为O(N*N)将会超时.这里可以使用 树状数组或者线段树或者SBt等数据结构 来优化根据本次出队位置和剩余人数的数量,可以算出下次出队的位置,从而使用数据结构来查询其真实标号.对于每组样例的复杂度根据不同的数据结构为 O(nlgn)或O(nlgnl…
问题 A: 求近似值 #include <stdio.h> #include <time.h> #include <stdlib.h> using namespace std; #define ll long long const ll M = 9e18; ; struct Node { ll m[][]; }; ll a[]; Node mul(Node a, Node b) { Node A; ; i < ; ++i) { ; j < ; ++j) {…
题目描述 三角数:形如图a,圆点摆放成等边三角形的数字,则为三角数. (图a) 平方数:形如图b,小方块摆放成正方形的数字,则为平方数. (图b) 那么如果一个数字既是三角形数又是平方数,则称为三角平方数.很显然我们知道第一个三角平方数就是1了. 那么第n个三角平方数是哪个呢? 输入 输入一个正整数n (1≤n≤2001≤n≤200) 输出 输出第n个三角平方数 样例输入 1 样例输出 1 提示   来源 ismdeep 提交 我的状态 © 2018  JustOJ     中文  Englis…
B Interesting paths 考察范围:组合数学 此题是机器人走方格的变种,n*m的网格,从(1,1)走到(n,m),首先可以明确,水平要走m-1格,竖直要走n-1格,则走到目的地的任意一条路径必须走n+m-2格,呢么只要确定竖直要走的,剩下的就是水平要走的,则答案为 . 在Interseting paths要求左下角和右上角两个小矩阵不能走,则需要把整个网格依据两个小矩阵的水平和竖直边界分为两部分,依次运用组合数.例如 灰色区域之外为可走区域,分为两部分棕色,和黄色,则结果为 若是这…
坐公交 解法:略 #include<stdio.h> #include<string> #include<iostream> #include<math.h> #include<time.h> #include <stdlib.h> #include<algorithm> using namespace std; int main() { int a,b,c; while(cin>>a>>b>…
A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 int n,M; struct node { int l,v; }p[]; ]; bool cmp(node a,node b){ return a.l < b.l; } bool judge_oo(){ ; ;i <= n;i++) Max = max(Max,p[i].v); ; ; } bool judge_no(){ ; ;i <= n;i…