题意 https://vjudge.net/problem/AtCoder-2282 告诉你sx,sy,tx,ty,问从s走到t,再从t走到s,再从s走到t,再从t回到s的最短路,每次只能上下左右选一个走1,除了s和t,其他点只能走一次. 思路 这是个沙雕构造题,我画出来了却没看出来..太沙雕了. 借用别人的图: 然后乱走即可.. 代码 #include <bits/stdc++.h> using namespace std; #define ll long long const int N=…
pid=4671">http://acm.hdu.edu.cn/showproblem.php? pid=4671 Problem Description Makomuno has N servers and M databases. All databases are synchronized among all servers and each database has a ordered list denotes the priority of servers to access.…
题目传送门 /* 思维/构造:赛后补的,当时觉得3题可以交差了,没想到这题也是可以做的.一看到这题就想到了UVA_11300(求最小交换数) 这题是简化版,只要判断行不行和行的方案就可以了,做法是枚举x[1],x[n]的所有可能,x[2~n-1]能递推出来 x[i]表示i给i+1的值(0/-1/1) 那么 a[i] - x[i] + x[i-1] == ave,详细看代码 */ /************************************************ * Author…
题目链接:http://agc016.contest.atcoder.jp/tasks/agc016_c 题解:挺简单的构造,很容易想到的构造方法就是(h*w)的小矩阵里其他值赋值为1,最后一个赋值为(h*w).这只是最基础的构造,然后 判断count - (H * W - count) * (h * w - 1)(count表示基础构造后正数的个数)是否大于0,如果大于0都可以构造,怎么构造就是将正的不断+1,负的不断-(h*w-1) 就行.如果小于等于0就要看初始的sum值(sum表示基础构…
#include<bits/stdc++.h>using namespace std;int n,a,b,sum;void dfs(int x,int y,int ban){    if(__builtin_popcount(ban^sum)==1){        printf("%d %d ",y,x^y);        return;    }    for(int i=0;i<n;i++)        if((~(ban>>i)&1)&…
Description Katya studies in a fifth grade. Recently her class studied right triangles and the Pythagorean theorem. It appeared, that there are triples of positive integers such that you can construct a right triangle with segments of lengths corresp…
题目链接 首先想到同样例1的构造方式.即不得不填负的格子填\(-h*w\),其余填\(1\).直接这样能过二三十个点. 只这样不对.比如1 4 1 3,会输出无解(会填[1 1 -3 1]).怎么改呢.对于一个点,它可以覆盖多个\(h*w\)的子矩形,只要对每个子矩形满足负权和,它们的和可以尽量大. 将原方案中的所有正数扩大\(d\)倍,不得不填负的格子只需恰好大于一个子矩形的和.这样多个格子加起来的和就大了. 如1 4 1 3,可以填[1000 1000 -2001 1000]. //20ms…
题意: 让你构造一个图,使得A,B,C,D的个数为给定的个数,上下左右连通的算一个. 哎呀 看看代码就懂了..emm..很好懂的 #include <bits/stdc++.h> using namespace std; , INF = 0x7fffffff; ][]; int main() { ; i<; i++) ; j<; j++) ) str[i][j] = 'A'; else str[i][j] = 'B'; int a, b, c, d; cin>> a &…
题目链接:https://abc081.contest.atcoder.jp/tasks/arc086_b 题目大意:有n个数,最多可以执行2*n次操作,每次可以选择将ai加到aj上,最终使得该序列满足a1<=a2<=a3....<=an.求操作过程,答案不唯一. 解题思路:我们分三种情况讨论: ①a1~an都大于等于0,那么只要从左往右使a2+=a1,a3+=a2,.....an+=an-1.总共n-1次操作就能保证a1<=a2<=a3....<=an. ②a1~an…
#include<bits/stdc++.h>using namespace std;const int N=1e6+6;int x[N],y[N];int sx,sy,n;char s[N];bool check(int m){    for(int i=1;i<=n-m+1;i++)    {        int tx=x[n]-x[i+m-1]+x[i-1];  //当前原来选项造成的横坐标影响        int ty=y[n]-y[i+m-1]+y[i-1];  //当前原…