摘要:
题目链接 A. int a[5]; void solve() { int ma=0; for(int i=1;i<=3;i++){ cin>>a[i]; a[i]=(a[i]+1)/2; ma=max(ma,a[i]); } int ans=0; for(int i=1;i<=3;i++){ if( 阅读全文
摘要:
题目链接 A. 解决题所花时间要小于总时间-路程时间 解题所花时间为5n(n+1)/2 void solve() { int n,k;cin>>n>>k; for(int i=1;i<=n;i++){ int a=5*i*(i+1); int b=480-2*k; if(a>b){ cout<<i- 阅读全文
摘要:
题目链接 A, 当前数是奇数特判不是1后直接输出 若是偶数就一直除以2,直至成为一个奇数,特判不是1后输出 别想复杂别想复杂 void solve() { ll n;cin>>n; if(n&1){ cout<<"YES"<<endl;return ; } while(n%2==0){ n/=2; 阅读全文
摘要:
求逆序对 归并排序 首先是一个排序作用,然后可以求逆序对 平均时间复杂度:O(nlogn),空间复杂度:O(n) 代码: int n,ans=0; int a[N],temp[N]; void merge_pai(int l,int r,int mid){ int i=l,p=l,j=mid; wh 阅读全文
摘要:
题目链接 最优情况是两两配对嘛,我们把它们排序,对半开去比较 即第一个与n/2去比,第2个与n/2+1去比... int a[N]; void solve() { int n,k;cin>>n>>k; for(int i=0;i<n;i++)cin>>a[i]; sort(a,a+n); int c 阅读全文
摘要:
题目链接 A. 先把菜肴按取出时间从前到后排序,因为先拿出先熟的一定最优 去枚举什么时候取出第i道菜,限制是时间是在前一道菜取出的时间之后,三层循环的dp 不错的状态转移 int f[2*210][2*210]; int a[210]; void solve() { memset(f,0x3f3f3 阅读全文
摘要:
题目链接 A. 拿例子说话 n1,那么在1处建信号站,信号为0 n2,那么在1和2处建信号站,信号均为0 n3,可以在1,2,3处建信号为0的信号站,也可以在2处建信号为1的信号站 n4,可以在1,2,3,4处建信号为0的信号站,也可以在2处建信号为1的信号站并在4处建信号为0的信号站,还可以在3处 阅读全文
摘要:
题目链接 A. 感觉跟欧拉没什么关系,属于带偏了 因为任两个点都有来回两条边,直接从最小点出发到每一个点就好了 难点在于取一段,题解代码值得学习 void solve() { ll n,l,r; cin>>n>>l>>r; ll fi=0,se=0; for(ll i=n-1;i>=1;i--){ 阅读全文
摘要:
A. 考虑按块来计算 如果这个块在两边,那么除了与这个块相邻的那一个数与这个块的数不同(一个块里的数都是一样的),其他位置上的数任选 若这个块在中间,那么与这个块相邻的左右两个数与这个块的数不同,其他位置上的数任选 块的大小从1-n,每个块可选数字为10种,相邻数可选数字为9种,其他位置可选10种 阅读全文
摘要:
题目链接 A. 首先,如果只有1个机关(除高度h)那么不需要水晶 试想,无论这个机关在哪里,当它关闭后,下一个机关就会开启...以此类推 反而机关多了情况会更复杂 设i和i-1机关都是打开的,我现在在机关i,然后i和i+1的机关会一起关闭,那么i+2一定要有一个开的机关,若没有,则需要水晶 int 阅读全文